質問
有効な 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