gl_PointSize = 1.0
顶点着色器中的设置意味着或实现什么?这是否意味着顶点本身就是一个像素?
2 回答
gl_PointSize 确定点的大小。
您可以绘制三角形、线条和点。例如,如果您要以点为单位绘制一个三角形,那么屏幕上将出现 3 个点。可以使用 gl_PointSize 参数更改大小。例如,如果您设置 gl_PointSize = 10.0; ,那么屏幕上的点就会很大。
这个是来做什么的?提供更多可能性。纹理也可以绑定到一个点——无论你在哪里画一个点,都会有一个纹理。酷,哈?而这种情况下这个纹理的大小是由gl_PointSize决定的;
不太确定在什么范围内可以更改。我想这取决于一点。只需尝试(例如 1.0、4.0、10.0),您就会很快看到差异。
在顶点着色器中设置 gl_PointSize = 1.0 意味着或实现什么?这是否意味着顶点本身就是一个像素?
是的,它确实。
该变量
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
启用时才有意义)。