c - LIne 不使用 glFrustum() 显示?

标签 c opengl glfrustum

我试图在窗口上画一条线,但它没有用 glFrustum() 显示。我在 glOrtho() 中使用了相同的代码,它确实显示了该行。我还需要设置什么才能让我的线路显示在设置窗口上吗?

void init() {
  glViewport(0, 0, w, h);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glFrustum( -2.0,2.0,-2.0,2.0, 1.0, 20.0 );
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
}

 void display() {
  glBegin(GL_LINES);
    glColor3f(0.0f, 0.0f, 1.0f);
    glVertex3f(0.0f, 0.0f, 2.0f);
    glVertex3f(1.0f, 1.0f, 5.0f);
  glEnd();
 }

最佳答案

在 OpenGL 中,相机沿负 Z 轴观察。因此,您的线在相机后面,因此被剪掉了。

而是把它画在前面:

glVertex3f(0.0f, 0.0f, -2.0f);
glVertex3f(1.0f, 1.0f, -5.0f);

关于c - LIne 不使用 glFrustum() 显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44877357/

相关文章:

c - 计数指针的值没有改变

opengl - 如何获取统一变量的数据类型

c - 将由轮廓样条构建的形状转换为简单的多边形

macos - 将模板缓冲区可视化为纹理

c++ - 我如何计算 glFrustum 参数?

c - C 中的移位运算符前置一个而不是零

编译 Apache Lucy

C 使用 exec 和 pipe 创建许多子进程