欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【OpenGL】OpenGL的窗口管理库

程序员文章站 2024-03-15 08:48:23
...

OpenGL 本身只管底层绘制,并不管窗口显示,用户交互等等,这就需要在其上添加一层窗口管理库,来实现 OpenGL的简易访问和友好交互。

Wikipedia : A few libraries have been designed solely to produce an OpenGL-capable window. The first such library was OpenGL Utility Toolkit (GLUT), later superseded by freeglut. GLFW is a newer alternative.
These toolkits are designed to create and manage OpenGL windows, and manage input, but little beyond that.

  • GLFW – A cross-platform windowing and keyboard-mouse-joystick handler; is more game-oriented
  • freeglut – A cross-platform windowing and keyboard-mouse handler; its API is a superset of the GLUT API, and it is more stable and up to date than GLUT
  • OpenGL Utility Toolkit (GLUT) – An old windowing handler, no longer maintained.

glut

glut 是最早出现的,也是最早die 的,目前依然可以使用的最新的版本,是98年的。下载
很多经典的 OpenGL 作品都是使用的 glut,所以有必要了解一下。比如最简单的,输出 OpenGL 有关信息:


#include <Windows.h>
#include <stdio.h>
#include <glut.h>

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    //显示模式初始化
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
    //定义窗口大小
    glutInitWindowSize(300, 300);
    //定义窗口位置
    glutInitWindowPosition(100, 100);
    //创建窗口
    glutCreateWindow("OpenGL Version");
    const GLubyte* name = glGetString(GL_VENDOR); //返回负责当前OpenGL实现厂商的名字
    const GLubyte* biaoshifu = glGetString(GL_RENDERER); //返回一个渲染器标识符,通常是个硬件平台
    const GLubyte* OpenGLVersion = glGetString(GL_VERSION); //返回当前OpenGL实现的版本号
                                                            //const GLubyte* Extensions  =glGetString(GL_EXTENSIONS);
    const GLubyte* gluVersion = gluGetString(GLU_VERSION); //返回当前GLU工具库版本
    printf("OpenGL实现厂商的名字:%s\n", name);
    printf("渲染器标识符:%s\n", biaoshifu);
    printf("OpenGL实现的版本号:%s\n", OpenGLVersion);
    //printf("OpenGL支持的扩展:%s\n",Extensions );
    printf("OGLU工具库版本:%s\n", gluVersion);
    getchar();

    return 0;
}

glut 之后还有 freeglut

GLFW

GLFW 是当前比较好用,也比较轻量的库。

相关标签: opengl glut glfw