【问题标题】:I need to draw a point using OpenGL and GLUT, But I just get a blank black screen我需要使用 OpenGL 和 GLUT 画一个点,但我只是得到一个空白的黑屏
【发布时间】:2021-07-27 16:06:51
【问题描述】:

我正在尝试使用 OpenGL 和 GLUT 打印一个点,但是当我运行以下代码时出现空白屏幕。任何帮助将不胜感激。 谢谢。

#include<GL/glut.h>

void display() {
    glColor3f(1.0, 0.0, 0.0);
    glBegin(GL_POINTS);
    glVertex2f(0.0, 0.0);
    glEnd();
    glFlush();
}

void main(int argc, char** argv) {
    glutInit(&argc, argv);
    glutInitWindowSize(640, 480);
    glutCreateWindow("example");
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutDisplayFunc(display);
    glutMainLoop();

}

【问题讨论】:

  • 也许,这个点(1 像素)太小而无法被注意到。由于您没有设置任何矩阵,我假设它们都默认为身份(但我不确定)。你试过三角形吗?
  • 仅供参考:Simple GLUT Example。顺便提一句。在示例中,您将了解如何设置投影和模型视图矩阵,以及如何清除帧缓冲区。 (这些都是我很难猜到的事情,因为我从来没有写过一个 GL 程序,我没有设置矩阵,也没有最初清除帧缓冲区。清除帧缓冲区是唯一对我有用的东西从一开始就反对我在某些事情变得可见之前大多数时候必须修复的所有其他事情......);-)
  • 我尝试了一个有效的圈子,但这只是从某个网站复制和粘贴的。
  • 我尝试了一个有效的圈子,但这只是从某个网站复制和粘贴的。 在这种情况下,您有一个工作样本和您的样本,可以比较他们所做的你没有做什么。听起来像是一个尝试是否可以在您的 MCVE 中添加一些东西以使其运行的机会。但我仍然建议先尝试一个三角形(当然是非退化的),以排除您看不到点(1 个像素)... ;-)

标签: c++ opengl glut point


【解决方案1】:

您需要在glBegin 之前调用glPointSize。示例:

void display() {
  glColor3f(1.0, 0.0, 0.0);
  glPointSize(10.0f);
  glBegin(GL_POINTS);
  glVertex2f(0.0f, 0.0f);
  glEnd();
  glFlush();
}

如果每帧的点大小都相同,那么您只需在初始化时调用一次glPointSize

【讨论】:

  • 谢谢,这行得通。我需要做什么才能将背景颜色更改为白色?
  • @Vijay glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 会这样做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
相关资源
最近更新 更多