opengl没有glwf /过剩的简单例子

时间:2018-02-23 16:16:07

标签: c winapi opengl glew

我正在尝试编写一个基本的OpenGL循环(没有GLWF和GLUT;只有GLEW),它只会清除窗口。 但是,窗口保持白色,窗口的颜色不会变为红色。

您是否可以找到代码无效的错误? 有关我的代码的任何其他建议?什么可以做得更好?

/*Window is created using CreateWindowExA()*/ 
/* glewInit() etc  */
    RenderingContext = wglCreateContextAttribsARB(DeviceContext, 0, version_attribs);
    if (!wglMakeCurrent(DeviceContext, RenderingContext))
    {
        OutputDebugStringA("Error\n");
        exit(-1);
    }   
    bool Running = true;
    while (Running){
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            // Simply clear the window with red
            static const GLfloat red[] = { 1.0f, 0.0f, 0.0f, 1.0f };
            glClearBufferfv(GL_COLOR, 0, red);
            // here some other code
    }

1 个答案:

答案 0 :(得分:1)

任何gl命令都将在当前上下文上执行。

您使用wglMakeCurrent(NULL, NULL);表示:"排除此线程的所有gl命令"

而是使用wglMakeCurrent(this_window_device, the_context_I_want_to_use);

编辑:

此外,渲染是对后帧缓冲区进行的(我假设你使用的是双缓冲像素格式)。要将其显示在窗口(前框缓冲区)中,您需要调用wglSwapBuffers

编辑2:

我建议你阅读整个wiki about creaating a context
它显示了一个窗口和上下文创建的例子。