是否可以在WebGL顶点着色器中使用整数属性?我的顶点数据包含整数,我想像这样定义顶点属性:
attribute vec3 POSITION;
attribute int INDEX[8];
attribute float WEIGHT[8];
Run Code Online (Sandbox Code Playgroud)
如果这是可能的,我如何使用gl.bufferData将混合顶点数据从js传递给着色器?
如果这不可能,那么获得相同结果的最佳方法是什么(将索引从CPU传递到着色器并在着色器中将它们用作整数)?
Ret*_*adi 14
WebGL不支持整数属性.除了规范(https://www.khronos.org/registry/webgl/specs/1.0/)中列出的一些例外,WebGL使用与OpenGL ES 2.0相同的GLSL功能集.
OpenGL ES着色语言1.00(用于ES 2.0的GLSL版本)的规范文档在第30页的"4.3.3属性"部分中说明:
属性限定符只能用于float,vec2,vec3,vec4,mat2,mat3和mat4等数据类型.属性变量不能声明为数组或结构.
你能做的最好的事情就是简单地使用没有小部分的浮子.可以精确表示的值的范围将比使用相同存储空间的整数更有限.例如,16位浮点(半浮点数)具有11位精度,并且可以精确地表示0到2048之间的整数.
归档时间: |
|
查看次数: |
4875 次 |
最近记录: |