2012-11-20 78 views
0

当一个呼叫:如何在OpenGL ES 2.0中使用GL_FLOAT创建纹理?

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是否支持这一点?

回答

3

浮点值的范围是... the range of floating-point values。这是使用它们的一点。当您从着色器中的浮点纹理中获取数据时,会获得存储在其中的浮点值。没有夹紧装置或任何东西。

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

0

我能回答这个问题的前两个部分,而我是指你this question最后两个部分

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

是该范围为0.0到1.0

[编辑] 作为尼科尔流星锤所指出的,这是不正确的,则可以使用任何浮点值,然而,当被解释为一个颜色值,它会被钳位到范围(0.0 - 1.0)

而且当你使用GL_RGBA时,你会传入一个浮点数组,每个像素有4个浮点数,是否正确?

是,浮体将被存储在该顺序也(红,绿,蓝,阿尔法)

+0

“然而,当它被解释为一个颜色值时,它将被限制在范围内(0.0 - 1.0)”何时解释?它由*着色器*“解释”,并在那里被解释为IEEE 754浮点值。除非您手动进行,否则不会发生任何形式的夹紧。 –