我正在使用Windows 7和VC++ 2010
我试图在屏幕上绘制一个简单的点,但它没有显示.屏幕清除为黑色,所以我知道我有一个有效的OpenGL上下文等...
基本上我的OpenGL代码归结为此(此时我没有深度缓冲区):
glClear( GL_COLOR_BUFFER_BIT );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 45.0, 1018.0 / 743.0, 5.0, 999.0 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glColor4f( 1, 1, 1, 1 );
glPointSize( 100 );
glBegin( GL_POINTS );
glVertex2i( 0, 0 );
glEnd();
SwapBuffers( hdc );
Run Code Online (Sandbox Code Playgroud)
OpenGL的初始化代码是这样的:
glClearColor( 0, 0, 0, 1 );
glShadeModel( GL_SMOOTH );
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
Run Code Online (Sandbox Code Playgroud)
问题是屏幕上没有任何内容,唯一发生的事情是屏幕被清除.
通过以下清单(这是delphigl.com(de_DE)的一般opengl清单,我们通常会在没有看到任何内容时让人们通过):
glClearColor.glDisable(GL_TEXTURE_2D).glViewport的设置是否正确.glTranslatef(0, 0, -6.0)有几个潜在的问题.主要问题是你如何使用gluPerspective投影.gluPerspective用于透视视图,因此,它不会在视图坐标中的(0,0,0)处显示任何内容.在您的设置中,您禁止在视图坐标(近剪裁平面)中显示(0,0,5)之前的任何内容.我建议你指出glVertex3f(0., 0., 10.)并再试一次.另一种解决方案是使用glTranslatef超过5个单位移动您的视图坐标.
也glPointSize可能不会接受您的值100,因为常见的实现仅限于64的点大小.
为了开始使用OpenGL,我还建议您阅读Nehes教程.他们可能不是最先进的,但涵盖了你现在面临的任何事情.
| 归档时间: |
|
| 查看次数: |
3796 次 |
| 最近记录: |