在opengl中沿z轴绘制一条线

时间:2014-08-22 04:57:57

标签: opengl glut freeglut

我正尝试在 z方向中使用0.5,-0.5,0.0 to 0.5,-0.5,-0.5 GL_LINES 点画一条线。

窗口的初始化:

glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH|GLUT_RGB);

在显示功能中设置。

glClearColor(1.0, 0.0, 0.0, 0.0);
glEnable(GL_DEPTH_TEST);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(0.0, 0.0, 0.0);

但是,该行不会显示在屏幕上。请帮助我们如何显示沿z方向的线。

1 个答案:

答案 0 :(得分:0)

您应该共享实际尝试使用GL_LINES绘制线条的代码段。没有它,我必须假设你不知道如何正确地做到这一点。设置后绘制线条的正确方法是:

glBegin(GL_LINES);
  glVertex3f(0.5f, -0.5f, 0.0f);
  glVertex3f(0.5f, -0.5f, -0.5f);
glEnd();
你尝试过这种方式吗?另外,如果你使用双缓冲,在渲染之后不要忘记交换缓冲区,在不使用时使用gluts或SwapBuffers(hdc)时使用glutSwapBuffers()。


编辑:

此外,您需要正确设置相机并稍微移动以实际看到您绘制的线条(它可能在视图区域之外)

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45,1,0.1,100); //Example values but should work in your case
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

这段代码应正确设置您的投影。现在OpenGL默认在Z轴的负方向上看,所以如果你想看到你的线,你需要使用代码将相机移动到Z轴的正端(实际上代码移动整个世界,而不仅仅是你的相机,但这并不重要):

glTranslate(0.0f,0.0f,-1.0f);

在glBegin之前使用它,你应该很高兴。

相关问题