iPhone,浮动纹理

发布于 2024-12-03 05:23:04 字数 239 浏览 2 评论 0原文

我需要将 GL_RGBA32F 作为内部格式,但我在 OpenGL ES 实现中没有得到它。相反,我只得到 GL_FLOAT 作为纹理数据类型。 OES_texture_float 规范没有说明里面的内容。所以我不知道我的纹理数据是否会标准化为 [0, 1] 。基本上我需要存储在纹理未夹紧的纹理数据中,无论它是浮点值还是整数值。我如何在纹理中获取非标准化数据?

I need to have GL_RGBA32F as internal format, but i do not get this in OpenGL ES implementation. Instead of this i get only GL_FLOAT as a texture data type. The OES_texture_float spec has nothing to say what's inside. So i do not know, whether my texture data will be normalized to [0, 1] or not. Basically i need to store in texture unclamped texture data regardless it's float or integer value. How i can get not normalized data inside my texture?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦中的蝴蝶 2024-12-10 05:23:04

遗憾的是,OpenGL ES 对待 glTex(Sub)Image* 参数的方式与桌面 OpenGL 不同。

在桌面 OpenGL 中,定义纹理实际格式的是内部格式。在 GL ES 2.0 中,定义此值的是 formattype 值。因此,如果您上传 (GL_RGBA, GL_UNSIGNED_BYTE) 纹理,则相当于使用 GL_RGBA8 作为内部格式。

这意味着,如果您想要浮点纹理,请使用(GL_RGBA,GL_FLOAT)作为格式类型参数。这是两个规范之间毫无意义的不一致。

Sadly, OpenGL ES treats the parameters to glTex(Sub)Image* differently from desktop OpenGL.

In desktop OpenGL, what defines the actual format of the texture is the internalformat. In GL ES 2.0, it is the format and type values that define this. So if you upload a (GL_RGBA, GL_UNSIGNED_BYTE) texture, that's the equivalent of using GL_RGBA8 as the internal format.

What this means is that, if you want a floating-point texture, you use (GL_RGBA, GL_FLOAT) as the format and type parameters. It's a pointless inconsistency between the two specifications.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文