3

イライラしている。単純なhelloworldタイプのプログラムを実行しようとしていますが、実際には実行されていません。

私はWindows7を使用していますが、グラフィックカードは新しいOpenGLのものをサポートしています。Freeglutを使用してCで記述し、MinGWとCode::Blocksを使用してコンパイルしています。リンカーには、freeglut、opengl32、glu32があります。私はMinGWフォルダーにあるfreeglutフォルダーにfreeglutのものを保持しているので、ビルド設定の検索ディレクトリの下に、コンパイラー用の「C:\ MinGW \ freeglut \ include」と「C:\ MinGW \ freeglut\lib」があります。 "リンカー用。

これが私のコードです:

#include <stdlib.h>
#include <GL/glut.h>

void NIAppIdle(void);
void NIAppDisplay(void);

int main(int argc, char *argv[])
{
    // Setup windwing
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
    glutInitWindowSize(800, 600);
    glutCreateWindow("HELLO WORLD");

    // Define GLUT callbacks
    glutIdleFunc(NIAppIdle);
    glutDisplayFunc(NIAppDisplay);

    // Enter render loop
    glutMainLoop();
    return 0;
}

void NIAppIdle(void)
{
    glutPostRedisplay();
}

void NIAppDisplay(void)
{
    glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);

    float geometry[] =
    {
        -0.5f,  0.5f, 0.0f, 1.0f,
         0.5f, -5.0f, 0.0f, 1.0f,
         0.0f,  0.5f, 0.0f, 1.0f
    };
    glEnableVertexAttribArray(0);
    glVertexAttribPointer(0, 4, GL_FLOAT, 0, 0, geometry);
    glDrawArrays(GL_TRIANGLES, 0, 3);
    glutSwapBuffers();
}

問題は、「glEnableVertexAttribArray」および「glVertexAttribPointer」関数にあります。コンパイラは、「このスコープとして宣言されていない」と言っています。

プログラムはこれらの行がなくても実行できるので、OpenGLは適切にリンクされていると思いますが、何らかの理由でこれらの関数を使用できず、OpenGLの一部であることを知っています。それは私が持っているOpenGLのバージョンと関係がありますか?

とにかく、OpenGLを学ぶのは初めてですが、恐らく何かひどいことをしたことがあるので、誰かに助けを求めています。この投稿が少しくだらないように思われる場合は申し訳ありませんが、これはこのサイトに投稿するのも初めてです。また、私の文法は申し訳ありません。英語は私の第一言語ではありません。

4

1 に答える 1

3

glEnableVertexAttribArrayにアクセスするには、関数ポインターを手動でロードする必要があると思います。単純なHelloWorldプログラムを作成するだけの場合は、GLEWを使用して処理することをお勧めします。

于 2012-06-11T17:45:42.513 に答える