使用GLUT绘制简单球体时遇到问题。当我绘制一个球体时,应用程序只绘制一个黑色形状(我的背景颜色为白色),当我试图绘制一个线状立方体时,我只得到一个黑点。 这是我的代码
private void init()
{
Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_SINGLE | Glut.GLUT_RGB | Glut.GLUT_DOUBLE);
Gl.glClearColor(255, 255, 255, 1);
Gl.glViewport(0, 0, AnT.Width, AnT.Height);
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Glu.gluPerspective(45, (float)AnT.Width / (float)AnT.Height, 0.1, 200);
Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();
Gl.glEnable(Gl.GL_DEPTH_TEST);
Gl.glEnable(Gl.GL_LIGHTING);
Gl.glEnable(Gl.GL_LIGHT0);
}
private void draw()
{
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glClearColor(255, 255, 255, 1);
Gl.glLoadIdentity();
//Glut.glutWireCube(100);
Glut.glutSolidSphere(1, 16, 16);
Gl.glPopMatrix();
Gl.glFlush();
AnT.Invalidate();
}
在加载表单和绘图功能时调用我的init函数 - 绘制它。任何人都可以帮助我吗?
答案 0 :(得分:0)
Glut.GLUT_SINGLE | Glut.GLUT_RGB | Glut.GLUT_DOUBLE
GLUT_SINGLE
和GLUT_DOUBLE
是互斥的。选一个。
Gl.glPopMatrix();
您错过了相应的glPushMatrix()
,但对于此特定用例,您也不需要。{/ p>
Gl.glClearColor(255, 255, 255, 1);
glClearColor()
使float
介于0.0和1.0之间。
请尝试此序列:
private void init()
{
Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_SINGLE | Glut.GLUT_RGB);
Gl.glViewport(0, 0, AnT.Width, AnT.Height);
}
private void draw()
{
Gl.glClearColor(1, 1, 1, 1);
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Glu.gluPerspective(45, (float)AnT.Width / (float)AnT.Height, 0.1, 200);
Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();
Gl.glTranslatef(0, 0, -5);
Gl.glEnable(Gl.GL_DEPTH_TEST);
Gl.glEnable(Gl.GL_CULL_FACE);
Gl.glEnable(Gl.GL_LIGHTING);
Gl.glEnable(Gl.GL_LIGHT0);
Glut.glutSolidSphere(1, 16, 16);
// Gl.glDisable(Gl.GL_LIGHTING);
// Glut.glutWireCube(1);
Gl.glFinish();
AnT.Invalidate();
}