Вопрос
Как и на каком этапе в моем коде создается допустимый контекст 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()
называется.
Не связан с StackOverflow