2014-10-03 119 views
1

我想在使用OpenGL的白色背景上繪製紅色球體。以下是我應該繪製球體的代碼部分。主入口點的在白色背景上繪製球體(C++和OpenGL)

部分:

initialise(); 
glutDisplayFunc(draw_Sphere); 
glEnable(GL_DEPTH_TEST); 
glutMainLoop(); 

初始化:

void initialise() 
{ 
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 
    glClearDepth(1.0f); 
    glEnable(GL_DEPTH_TEST); 
    glEnable(GL_COLOR_MATERIAL); 
    glEnable(GL_LIGHTING); 
    glDepthFunc(GL_LEQUAL); 
    glShadeModel(GL_SMOOTH); 
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 
} 

繪製球體:

void draw_Sphere() 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    glTranslatef(200, 200, 0); 
    glColor3f(1.0, 0.0, 0.0); 
    glPushMatrix(); 
    glutSolidSphere(0.25, 20, 20); 
    glPopMatrix(); 
    glutSwapBuffers(); 
} 

我不知道發生了什麼事情不對,但此次榮獲」渲染球體(它會繪製白色背景,但是)。任何建議來解決它?

+2

一些想法:我看到你啓用GL_LIGHTING,但我沒有看到燈光設置。你在X和Y上做了一個glTranslatef,但是不是Z:但是我認爲你需要X和Y爲零,並且自從默認攝像頭沿着Z軸看Z軸被翻譯。我忘記Z應該是正面還是負面。接下來,無需圍繞對glutSolidSphere的調用推送/彈出矩陣。使用默認的相機矩陣。我建議先從一個工作教程開始,然後將您的調用添加到glutSolidSphere中。試試http://nehe.gamedev.net/tutorial/lessons_01__05/22004/ – 2014-10-03 15:29:05

回答

2

使用矩陣

考慮設立該適當的模型,視圖和投影矩陣。那麼你將對你所看到的有更多的控制。

解決方案

glTranslatef(200, 200, 0);行這樣,你就得到了球截頭錐體。你應該看到球體。