我的问题接近What is the actual number of vertex uniform components for GLSL shader on ATI graphics card?
在他的情况下,
在amd卡上写on the wiki,为了获得正确的值,它应该除以4,它给了他4096/4 = 1024个浮点数。
由于mat4是16个浮点数,然后他将它除以16,这给了他1024/16 = 64 mat4。
所以限制与他的使用是一致的。
但这不是我的,这就是我所拥有的:
我正在使用向量来转换多维数据集的实例,因此向量的数量等于传递给glDrawArraysInstanced()的实例数。
代码实际上只是gl_Position = vp * translateVec[gl_InstaceID] * pos
(vp是一个独特的ViewProjection矩阵)。
如果少于256个向量,则正确翻译多维数据集。
在256个向量之上,前256个立方体是可以的,但所有其他不是,它们位于(0,0,0)点,看起来像向量是(0,0,0)。
我有6490米amd,所以喜欢他,我应该按照4步进行划分 16384/4 = 4096浮标
维基说,由于矢量架构,“你应该假设每个单独的制服占用4个组件”。这意味着vec3将使用4个组件而不是3个。
所以4096/4 = 1024 vec3
如你所见,这与我的观察并不一致。
我缺少什么? 还有GL_MAX_UNIFORM_VECTORS(4096对我来说)呢?
备注:我使用glUniform3fv()
上传了vec3数组,并使用uniform vec3[255]
核心配置文件4.2,win7,13.1催化剂声明了数组。