【发布时间】:2011-12-23 22:14:21
【问题描述】:
我正在尝试创建一个浮动纹理来存储由片段着色器创建的渲染管道的中间结果。我需要片段的值是有符号的浮点数。
我了解所有新的 iOS 设备都应该支持OES_texture_float 扩展(即根据Apple guide 从 iPhone 3GS/iPod Touch 3/iPad 开始)。
但是,当我使用
创建这样的纹理时glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_HALF_FLOAT_OES, NULL);
启动我的应用并在 Instruments 中检查它,它告诉我:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_HALF_FLOAT_OES, NULL) : (invalid enum=0x8d61): invalid enum for argument 'type'
奇怪的是,它仍然可以在我的 iPhone 4S 上运行,但不能在 iPhone 4 上运行(应该也支持)。但是,两个设备都会出现错误消息。但在 iPhone 4 上,OpenGL 无法使用此纹理作为渲染目标来构建有效的帧缓冲区对象。在完美运行的4S上。
你对我做错了什么有什么建议吗?
谢谢!
【问题讨论】:
标签: ios opengl-es floating-point textures