opengl - 有效的 OpenGL 上下文

标签 opengl glut

如何以及在什么阶段在我的代码中创建有效的 OpenGL 上下文?即使是简单的 OpenGL 代码,我也会出错。

最佳答案

来自 comp.graphics.api.opengl 上的帖子,似乎大多数新手在他们的第一个 OpenGL 程序上烧了他们的手。在大多数情况下,错误是由于在创建有效的 OpenGL 上下文之前调用了 OpenGL 函数而导致的。 OpenGL 是一个状态机。只有在机器启动并在准备状态发出嗡嗡声后,才能投入工作。

下面是一些创建有效 OpenGL 上下文的简单代码:

#include <stdlib.h>
#include <GL/glut.h>

// Window attributes
static const unsigned int WIN_POS_X = 30;
static const unsigned int WIN_POS_Y = WIN_POS_X;
static const unsigned int WIN_WIDTH = 512;
static const unsigned int WIN_HEIGHT = WIN_WIDTH;

void glInit(int, char **);

int main(int argc, char * argv[])
{
    // Initialize OpenGL
    glInit(argc, argv);

    // A valid OpenGL context has been created.
    // You can call OpenGL functions from here on.

    glutMainLoop();

    return 0;
}

void glInit(int argc, char ** argv)
{
    // Initialize GLUT
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE);
    glutInitWindowPosition(WIN_POS_X, WIN_POS_Y);
    glutInitWindowSize(WIN_WIDTH, WIN_HEIGHT);
    glutCreateWindow("Hello OpenGL!");

    return;
}

笔记:
  • 这里感兴趣的电话是glutCreateWindow() .它不仅创建了一个窗口,还创建了一个 OpenGL 上下文。
  • 使用 glutCreateWindow() 创建的窗口直到 glutMainLoop() 才可见叫做。
  • 关于opengl - 有效的 OpenGL 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14364/

    相关文章:

    macos - macOS 上的 OpenGL 是否已弃用?

    c++ - # include <GL/glut.h> 在 Xcode 中找不到文件

    c++ - fatal error LNK1104 : cannot open . lib (glloaD)

    c++ - 使用 OpenGL 从文本文件绘制图像

    c++ - glUniform 无法设置采样器值

    opengl - 为什么无法在多个视口(viewport)中显示同一对象?

    c++ - OpenGL 暂停问题

    opengl - 如何持续更新 glut 窗口?

    java - 渲染纹理深度

    OpenGL gluLookAt() 未按预期工作