4

gl_PointSize = 1.0顶点着色器中的设置意味着或实现什么?这是否意味着顶点本身就是一个像素?

4

2 回答 2

3

gl_PointSize 确定点的大小。

您可以绘制三角形、线条和点。例如,如果您要以点为单位绘制一个三角形,那么屏幕上将出现 3 个点。可以使用 gl_PointSize 参数更改大小。例如,如果您设置 gl_PointSize = 10.0; ,那么屏幕上的点就会很大。

这个是来做什么的?提供更多可能性。纹理也可以绑定到一个点——无论你在哪里画一个点,都会有一个纹理。酷,哈?而这种情况下这个纹理的大小是由gl_PointSize决定的;

不太确定在什么范围内可以更改。我想这取决于一点。只需尝试(例如 1.0、4.0、10.0),您就会很快看到差异。

于 2018-02-01T14:40:46.727 回答
3

在顶点着色器中设置 gl_PointSize = 1.0 意味着或实现什么?这是否意味着顶点本身就是一个像素?

是的,它确实。


gl_PointSize

该变量gl_PointSize旨在让顶点着色器写入要光栅化的点的大小。它以像素为单位。

请参阅OpenGL ES 规范 - Khronos OpenGL ES 注册表,3.3 点,第 51 页

点大小取自内置着色器gl_PointSize,并限制在与实现相关的点大小范围内。如果写入的值gl_PointSize小于或等于零,则结果未定义。范围由 ALIASED_POINT_SIZE_RANGE 确定,可以按照第 6 章所述进行查询。支持的最大点大小必须至少为 1。
点光栅化为每个帧缓冲区像素生成一个片段,其中心位于以点 ( xw , yw ) 为中心的正方形内,边长等于点大小。


这意味着,如果您定义gl_PointSize = 1.0,那么这将指定一个边长为 1 个片段的正方形。中心点在这个方格中的片段会受到影响。

与“桌面”OpenGL 相比,程序中的点大小不必启用。(在桌面 OpenGLgl_PointSize中只有在GL_PROGRAM_POINT_SIZE启用时才有意义)。

于 2018-02-01T17:44:35.853 回答