在顶点着色器中设置gl_PointSize = 1.0
意味着什么?这是否意味着顶点本身就是一个像素?
答案 0 :(得分:2)
gl_PointSize确定点的大小。
您可以绘制三角形,线条和点。如果您将绘制例如点的三角形,则屏幕上将显示3个点。可以使用gl_PointSize参数更改大小。如果设置例如gl_PointSize = 10.0; ,然后屏幕上的点将是相当大的。
这是为了什么?提供更多可能性。纹理也可以绑定到一个点 - 无论你在哪里画一个点,都会有一个纹理。很酷,哈?在这种情况下,这个纹理的大小由gl_PointSize决定;
不太确定可以更改的范围。我想这取决于一点。只需尝试(例如1.0,4.0,10.0),您就会很快看到差异。
答案 1 :(得分:2)
在顶点着色器中设置gl_PointSize = 1.0意味着什么?这是否意味着顶点本身就是一个像素?
是的,确实如此。
变量
gl_PointSize
用于顶点着色器写入要栅格化的点的大小。 以像素为单位进行测量。
请参阅OpenGL ES Specification - Khronos OpenGL ES Registry, 3.3 Points, page 51:
点大小取自内置
gl_PointSize
的着色器并固定到 依赖于实现的点大小范围。如果写入gl_PointSize
的值小于或等于零,则结果未定义。范围由ALIASED_POINT_SIZE_RANGE确定,可以按照第6章中的描述进行查询。 支持的最大点大小必须至少为1。
点光栅化为每个帧缓冲像素生成一个片段,其中心位于以点为中心的正方形内( xw , yw ),边长等于点大小强>
这意味着,如果您定义gl_PointSize = 1.0
,那么这将指定一个边长为1的片段。中心点位于此正方形的片段受到影响。
当然,如果启用了 gl_PointSize
,则GL_PROGRAM_POINT_SIZE
只有意义:
glEnable(GL_PROGRAM_POINT_SIZE);
且原始模式为 GL_POINTS
(或多边形模式设为GL_POINT
- 例如glPolygonMode(GL_FRONT_AND_BACK, GL_POINT)
)。