如何在OpenGL ES 2.0中使用GL_FLOAT创建纹理?

时间:2012-11-20 19:22:30

标签: opengl-es opengl-es-2.0 textures

当有人打电话时:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texWidth, texHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, rawData);

很容易知道如何格式化数据:传入一个字节数组,范围为0-255,其中0表示最低,255表示每种颜色组件最亮。

当您对GL_FLOAT执行相同操作时,会传入一组浮点数。我的问题是,每种颜色成分值的范围是多少? 0到1.0? 0到浮点数的最大值?

当你使用GL_RGBA时,你会传入一个浮点数组,每个像素有4个浮点数,对吗?

另外,要确认:GL_HALF_FLOAT_OES不是glTexImage2D的参数,而是仅适用于verticex,是吗?

我的iPad 3报告支持“GL_OES_texture_float”和“GL_OES_texture_half_float_linear”。这意味着我确实可以使用GL_FLOAT作为glTexImage2D的参数,对吧?谁知道iPad 2是否支持这个?

2 个答案:

答案 0 :(得分:3)

浮点值的范围是...... the range of floating-point values。这有点使用它们。从着色器中的浮点纹理中获取时,将获得存储在其中的浮点值。没有夹紧或任何应用。

如果制作半浮点纹理,则其值的范围为16位浮点值。如果你制作一个单精度浮点纹理,那么它的值的范围是32位浮点值。

答案 1 :(得分:0)

我可以回答这个问题的前两部分,最后两部分我将你推荐给this question

  

我的问题是,每种颜色成分值的范围是多少? 0到1.0?

是的范围是0.0到1.0

[编辑] 正如Nicol Bolas指出的那样,这是不正确的,你可以使用任何浮点值,但是当它被解释为颜色值时,它将被限制在范围内(0.0 - 1.0)

  

当你使用GL_RGBA时,你会传入一个浮点数组,每个像素有4个浮点数,对吗?

是的,浮动也将按此顺序存储(红色,绿色,蓝色,Alpha)

相关问题