在openGL中绘制点时丢失了一些点

Posted

技术标签:

【中文标题】在openGL中绘制点时丢失了一些点【英文标题】:losing some points while drawing points in openGL 【发布时间】:2016-09-17 20:46:33 【问题描述】:

我在 openGL 中编写了一个 c++ 代码来绘制七个顶点。我的示例代码如下:

#include <GL/glut.h>

void init2D(float r, float g, float b)

    glClearColor(r, g, b, 0.0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0, 200.0, 0.0, 150.0);
    glPointSize(4.0);


void display(void)

    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 0.0, 0.0);

    //draw two points
    glBegin(GL_POINTS);
    glVertex2i(30, 30);
    glVertex2i(47, 76);
    glVertex2i(76, 150);
    glVertex2i(130, 240);
    glVertex2i(300, 200);
    glVertex2i(250, 50);
    glVertex2i(60, 20);
    glEnd();

   glFlush();
 

void main(int argc, char *argv[])

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(500, 500);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("points and lines");
    init2D(0.0, 0.0, 0.0);
    glutDisplayFunc(display);
    glutMainLoop();
 

但是当我运行代码时,我只得到了其中的 4 个。代码有什么问题吗?有没有办法显示所有的点?

【问题讨论】:

【参考方案1】:
gluOrtho2D(0.0, 200.0, 0.0, 150.0);

您正在设置投影,以便 (0,0) 映射到左下角,而 (200, 150) 映射到右上角,因此

glVertex2i(130, 240);
glVertex2i(300, 200);
glVertex2i(250, 50);

都在视图体积之外。

【讨论】:

@user6843794:调整gluOrtho2D() 调用,使视锥体包含所有点。

以上是关于在openGL中绘制点时丢失了一些点的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL仅从顶点数组中绘制一些索引

如何在Android上使用OpenGL ES 2.0绘制点

OpenGL闪烁并且比C ++更多

如何使用 OpenGL 在圆内绘制随机点?

OpenGL入门01.使用OpenGL绘制一个点

使用 glut、opengl 绘制散点图矩阵