2011-06-10 152 views
0

Apple建议在iOS上使用GLubyte数据类型来处理颜色数据,所以我试图让它起作用。我得到的结果是,所有颜色组件< 255是完全黑色的,并且只有设置为255的颜色组件才是真正的颜色。OpenGL ES2顶点阵列中的GLubyte颜色不起作用

我在做什么: - 保存单个物体的颜色在我自己的颜色类GLubytes(取值范围为0-255) -pass颜色到顶点属性阵列类型GLubyte着色器(依然范围0-255) - 在片段着色器中,直接使用颜色或将组件分成255,都不起作用。

编辑:这没有工作,问题是在我的代码中的其他地方。

+0

你应该发布你的代码。 – 2011-06-10 20:37:33

+0

如果使用泛型属性,请确保在“glVertexAttribPointer”中设置标准化标志,以便您的值自动转换为[0,1]。 – 2011-06-10 21:52:20

+0

将颜色传递为范围[0-255]中的GLubytes并将标准化参数设置为true会得到相同的结果:仍然不起作用? – Jonesy 2011-06-11 09:31:59

回答

0

这只是工作正常,问题是在我的代码中的其他地方。

0

Apple推荐使用GLubyte作为顶点属性?我认为你误解了这个提示。你实际想要做的是将这些值存储在256x1灰度(GL_LUMINANCE)纹理中,并将其作为统一传递给着色器。这确实比使用数组更快。