質問

有効な 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() と呼ばれます。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top