ios - 在 iOS 中使用 ONE channel 创建纹理

标签 ios opengl-es opengl-es-2.0

在 iOS 应用程序中,我想在对象上放置纹理、渲染场景、读取它,然后读取该对象的“颜色”以识别它。

这很好用,我为此使用了 RGB 纹理。然后创建纹理的数据是:
1、0、0、2、0、0、3、0、0。

这需要相当大量的 RAM,浪费了 66%。我想使用只有一个 channel 的纹理。

阅读 glTexImage2D 的 OpenGL 规范在我看来,使用 GL_RED 格式是可行的方法,但它似乎在 iOS 中不可用。

任何人都可以确认或告诉我如何在 iOS 中仅使用一个 channel 创建纹理吗?

感谢您的任何提示,
托斯滕。

最佳答案

最新的 iOS 设备 (> iOS 5.0) 应该支持 EXT_texture_rg ,它允许使用 GL_RED_EXT 创建单 channel 和双 channel 渲染缓冲区(和纹理)和 GL_RG_EXT纹理格式枚举。但是,您应该通过调用 glGetString(GL_EXTENSIONS) 来查询是否存在扩展。并检查 GL_EXT_texture_rg 的返回值)。

关于ios - 在 iOS 中使用 ONE channel 创建纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443447/

相关文章:

ios - OpenGL ES 2.0 渲染到纹理

opengl-es - opengl es 2.0 android c++ glGetTexImage替代

java - 如何使用 OpenGL ES 2.0 和 Java (Android) 使用索引缓冲区绘制顶点

ios - UITextView setContentOffset with scrollEnabled=NO in iOS7

opengl-es - 如何在 OpenGL ES 中绘制 "glowing"线

swift - Sprite Kit 游戏在 tvOS 9.1 和 iOS 9.2 上的游戏结束时崩溃

opengl-es-2.0 - 如何在 OpenGL ES 2.0 中使用 2d 纹理渲染 3d 纹理数据?

在 Swift iOS 中解码 PHP JSON 返回空值

ios - 强制关闭模拟器上的 watchOS 应用程序?

iphone - 如何使用翻转动画显示 MapView 选项?