glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity;
glTranslatef(0.0f, 0.0f, 0.1f);
glColor3f(0.8f, 0.8f, 0.8f);
glBegin(GL_TRIANGLES);
glVertex3f(0.0f, 0.0f, -2.1f);
glVertex3f(1.0f, 0.0f, -2.1f);
glVertex3f(0.0f, 1.0f, -2.1f);
glEnd();
SwapBuffers(g_hdc);
按照教程来的。没有三角形显示。去掉glTranslate就可以。加上后,除非三个参数都是0,否则就不显示。在glVertex3f中直接改变x,y,z,正常显示。
在wm_size中设置的信息如下:
h = HIWORD(lParam);
w = LOWORD(lParam);
if (h == 0)
h = 1;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, (GLfloat)w / (GLfloat)h, 1.0f, 1000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
求帮忙啊。还不如android上的opengl用着方便。
glTranslatef(0.0f, 0.0f, 0.1f);这句话表示你的三角形在z轴的正向的0.1处。
gluPerspective(45.0f, (GLfloat)w / (GLfloat)h, 1.0f, 1000.0f)表示你的眼睛可见的范围在距离视点的1到1000范围【距离总是正的】。
但是opengl默认的视点位置在坐标原点,而且指向z轴的负方向,而不是正方向。
没有平移的语句,你的三角形刚好在可见范围---负的z轴,距离原点【视点默认位置】距离大于你设置的1.0【近剪切面处】
问题解决了,代码第二行,glLoadIdentity,少打了一个()。