GLUT OpenGL - 仅使用 GL_POINTS 绘制形状

Posted

技术标签:

【中文标题】GLUT OpenGL - 仅使用 GL_POINTS 绘制形状【英文标题】:GLUT OpenGL - Drawing Shapes using only GL_POINTS 【发布时间】:2015-09-23 16:41:42 【问题描述】:

我正在处理一项作业,我只需要使用 GL_POINTS 进行绘图。我意识到这是一种昂贵的方法,但它是为了家庭作业,所以没有 GL_TRIANGLES / GL_POLYGON / GL_LINES 等。

首先,我试图理解仅使用点的概念。假设我想绘制一个 100 x 100 像素的正方形。我是否需要四个 for 循环以直线绘制 100 个像素来创建正方形?如果我想用颜色填充正方形怎么办?

我理解使用 GL_POLYGON 绘制正方形,因为这相当简单。我们使用 GLUT 库只是为了绘制带有点的形状。

【问题讨论】:

可能应该移到computergraphics.stackexchange。 谢谢,我会在那里发帖的。 我更多的是标记这个问题,以便版主移动它。如果您想自己做,请在此处删除此问题,以免交叉发布。 这是一个非常奇怪的任务;我想不出用点而不是三角形来构成几何的理由。不过,您可以使用glPointSize 修改点的大小。 @BartekBanachewicz 那你为什么要使用 OpenGL?至少将您的渲染图像上传到纹理/像素缓冲区对象,而不是绘制数千个点。 【参考方案1】:

我认为这项任务基本上会迫使您编写自己的渲染器。因此,例如,您需要为线条实现 Bresenham 算法,并为三角形实现扫描线光栅化。一旦你有了它,你就可以对每个形状进行三角剖分,然后光栅化为多个三角形。

【讨论】:

【参考方案2】:

要绘制一个 100x100 像素宽的正方形,您只需在应用程序中使用:

glEnable(GL_PROGRAM_POINT_SIZE);

然后在您的顶点着色器中找到您需要的唯一顶点(正方形的中心):

gl_PointSize = pixel_size;

在你的情况下:

gl_PointSize = 100;

【讨论】:

以上是关于GLUT OpenGL - 仅使用 GL_POINTS 绘制形状的主要内容,如果未能解决你的问题,请参考以下文章

Setup VS2017 for GLUT,使用VS2017 和GLUT 运行opengl程序

opengl中如何实现图象的缩放

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

在终端应用程序中使用 opengl(没有 glut/glew)[关闭]

openGL初学函数解释汇总

使用 OpenGL 和 GLUT 创建 FPS 风格的运动系统