为什么WebGL和Cocoa之间的GL_ALIASED_POINT_SIZE不同?

时间:2014-10-12 20:11:42

标签: macos cocoa opengl webgl

我的WebGL ALIASED_POINT_SIZE(在Safari和Chrome中)是33901。

另一方面,在我的原生OpenGL(在Mac / Cocoa上),它只是(1,64)。

为什么两个值不同?是否无法增加gl_PointSize

2 个答案:

答案 0 :(得分:1)

您正在考虑两个不同的值:

  • 33901(或十六进制的0x846d)是GL_ALIASED_POINT_SIZE_RANGE的值,这是枚举值,用于查询点大小范围。
  • (1,64)必须是您已查询的磅值范围。

在原生OpenGL中,您可以使用以下方法查询磅值范围:

GLint range[2];
glGetIntegerv(GL_ALIASED_POINT_SIZE_RANGE, range);

我没有使用过WebGL,但根据文档相应的调用应该是:

gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE)

答案 1 :(得分:1)

gl_PointSize是您在顶点着色器中设置的全局,用于设置要栅格化的下一个点的大小。您可以随意设置它,从一个常量(所有点将是相同的大小),从一个统一(所有点将是您在运行时可以设置的相同大小),从属性(每个点将是一个不同的大小取决于您提供的每点数据),从某些等式(等等)(根据您的等式,每个点的大小不同)。

ALIASED_POINT_SIZE_RANGE是一个常量值,传递给OpenGL中的glGetIntegerv和WebGL中的gl.getParameter,返回GPU /驱动程序支持的点大小范围。

请注意,WebGL和OpenGL ES 2.0仅需要1.0的最大磅值。这意味着如果您指望能够渲染大于1个像素的点,则需要在某些硬件上找到其他解决方案。你可以see the supported sizes near the bottom of this page