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程序