4

コード内で有効な OpenGL コンテキストがどのように、どの段階で作成されますか? 単純な OpenGL コードでもエラーが発生します。

4

1 に答える 1

4

の投稿を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()
于 2008-08-18T09:17:46.193 に答える