qq_36601357 2018-08-18 08:49 采纳率: 75%
浏览 1371
已结题

glTranslatef后图像消失

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用着方便。

  • 写回答

2条回答 默认 最新

  • xieshouguo520 2018-08-18 14:23
    关注

    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【近剪切面处】

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作