0

私は最近、SuperBibleの第5版を通じてOpenGlの学習を開始しましたが、残念ながら、OpenGlが提供する最初の例で行き詰まりました。

コードは次のとおりです。

#include <GLTools.h>
#include <GLShaderManager.h>
#include <GL/glew.h>
#include <GL/glut.h>


GLShaderManager shaderManager;
GLBatch triangleBatch;
void ChangeSize(GLsizei w, GLsizei h);

void ChangeSize(int w, int h){
    glViewport(0,0,w,h);
}

void SetupRC(){
    //background
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);


    shaderManager.InitializeStockShaders();

    GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
                          0.5f, 0.0f, 0.0f,
                          0.0f, 0.5f, 0.0f};


    triangleBatch.Begin(GL_TRIANGLES, 3);
    triangleBatch.CopyVertexData3f(vVerts);
    triangleBatch.End();

}

void RenderScene(void){

    glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

    GLfloat vRed[] = {1.0f, 0.0f, 0.0f, 1.0f};
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
    triangleBatch.Draw();


    glutSwapBuffers();
}


int main(int argc, char* argv[])
{
    //gltSetWorkingDirectory(argv[0]);
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);


    glutInitWindowSize(800,600);
    glutCreateWindow("Triangle");


    glutReshapeFunc(ChangeSize);
    //
    glutDisplayFunc(RenderScene);

    GLenum err=glewInit();

    if(GLEW_OK != err) {
        fprintf(stderr, "GLEW error: %s\n", glewGetErrorString(err));
        return 1;
    }

    SetupRC();

    glutMainLoop();
    return 0;
} 

エラーは次のとおりです。

http://codepad.org/aFSEAJKT

コメントの行末にエラーを表示しました。

4

1 に答える 1

0

エラーは、glewライブラリにリンクしていないことが原因です。glew.libを見つけます(バイナリディストリビューションをダウンロードした場合は、ヘッダーが付属しているはずです)。プロジェクトのプロパティを編集し、リンカーオプションを選択して、ライブラリディレクトリを追加します。glew libの場所を追加します(glew32.libまたはsimiliarと呼ばれる必要があります)。次に、[リンカー]タブを展開し、[入力]を選択し、追加の依存関係の最後に、拡張子を含むlibファイルの名前を追加します。

于 2013-01-18T20:07:26.740 に答える