3
如何以及在什麼階段在我的代碼中創建了有效的OpenGL上下文?即使是簡單的OpenGL代碼,我也會遇到錯誤。有效的OpenGL上下文
如何以及在什麼階段在我的代碼中創建了有效的OpenGL上下文?即使是簡單的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上下文。glutMainLoop()
之前,用glutCreateWindow()
創建的窗口不可見。