2014-10-03 40 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);行这样,你就得到了球截头锥体。你应该看到球体。