2013-01-18 33 views
0

我最近開始通過SuperBible第五版學習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

我在註釋行的末尾顯示錯誤。

+0

哪一行給出第一個錯誤? – Slicedpan

+0

glutCreateWindow(「Triangle」); // error 1 – peaceman

+0

它看起來好像那行上的開頭引號不起作用,因此Triangle之後的所有內容都被解釋爲一個字符串,直到達到下一個引號(在GLEW之前) 。您是否完全按照編輯器中的內容複製和粘貼了該代碼? – Slicedpan

回答

0

那麼錯誤現在是由於你沒有鏈接到glew庫。找到glew.lib(如果你下載了一個二進制發行版,它應該帶有頭文件)。編輯項目的屬性,選擇鏈接器選項,並添加一個額外的庫目錄。添加glew lib的位置(應該稱爲glew32.lib或類似)。然後在展開鏈接器選項卡並選擇輸入,並在其他依賴項的末尾添加包含擴展名的lib文件的名稱。