2013-11-28 124 views
0

我正在使用openGL/GLUT试图绘制一个图元并使用gluLookAt()移动相机。有麻烦,我只是看到黑色。这是我的渲染函数的代码。gluLook没有任何东西出现

glMatrixMode(GL_MODELVIEW); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glLoadIdentity(); 

gluLookAt(Player.GetX(), Player.GetY(), Player.GetZ()-5, 
      Player.GetX(), Player.GetY(), Player.GetZ(), 
      0,1,0); 



glPushMatrix(); 

glBegin(GL_TRIANGLES); //Begin coordinates 


glVertex3f(Player.GetX()-0.5f, Player.GetY()-1.0f, Player.GetZ()); 
glVertex3f(Player.GetX()+0.5f, Player.GetY()-1.0f, Player.GetZ()); 
glVertex3f(Player.GetX()-0.0f, Player.GetY()-0.0f, Player.GetZ()); 

glEnd(); //End quadrilateral coordinates 

glPopMatrix(); 

glutSwapBuffers(); 

的Player.GetXYZ()值都是0.0

+1

一旦你解决了这个问题,请你帮个忙,直接转到OpenGL 3.0+。 [这是为什么](http://stackoverflow.com/questions/3492729/whats-so-different-about-opengl-3x)。 [这里是如何](http://stackoverflow.com/questions/9293817/resources-to-learn-opengl-3-x)。 – Domi

+1

看起来你的眼睛超出了你的三角形。尝试第3次参数中的+5。 – bvj

+0

是啊刚得到那个:/谢谢!好的,所以我会尝试转换为OpenGL 3.0之前我太深谢谢你的帮助。 –

回答

1

有很多重要原因,为什么三角形失踪。你要检查的第一件事是深度缓冲区,以确保它不是一个照明问题。许多事情可能会阻止你的三角形出现在深度缓冲区中。

请确保您阅读了Avoiding 16 Common OpenGL Pitfalls。如果你不知道最基本的缺陷,你将无法正确调试你的图形管道。

如果不启用照明,要特别注意这些:

  1. 三角剪裁:请确保您的播放器是在正确的位置,找对了方向。
  2. 三角形颜色:您没有指定颜色。我认为OpenGL默认是黑色的。

如果启用了照明:

  1. 检查法线。
  2. 检查您的剔除模式。 Back-face culling是OpenGL的默认值。
+0

忘了提及,我可以得到三角形没有gluLookAt()我只是想添加相机移动。 –