【问题标题】:Drawing a line along z axis in opengl在opengl中沿z轴绘制一条线
【发布时间】:2014-08-22 04:57:56
【问题描述】:

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

窗口的初始化:

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方向的线。

【问题讨论】:

  • 您是否设置了相机位置?如果你不使用openGL 向下看Z 轴(你只看到一个点)
  • @ratchet 怪胎:他甚至不需要看到一点。取决于近剪裁平面。如果大于 0.5,他就什么都看不见了。

标签: opengl glut freeglut


【解决方案1】:

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

glBegin(GL_LINES);
  glVertex3f(0.5f, -0.5f, 0.0f);
  glVertex3f(0.5f, -0.5f, -0.5f);
glEnd();

你试过这样吗?另外,如果你使用双缓冲,不要忘记在渲染后交换缓冲区,使用 glut 时使用 glutSwapBuffers() 或不使用时使用 SwapBuffers(hdc)。


编辑:

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

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 之前使用它,你应该很高兴。

【讨论】:

  • 是的,我正在画你所展示的那条线。在显示函数中使用了 glFlush() 和 glutSwapBuffers()。我也需要设置一些相机坐标吗??
  • @user3351750:嗯,是的。看看我的编辑。我还认为您需要更深入地了解 OpenGL 的工作原理。尝试一些书籍或在线教程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 2023-03-15
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多