1

我一直在尝试添加对 GL_RGB_422_APPLE 的支持。

内部格式 = GL_RGB;

像素格式 = GL_RGB_422_APPLE;

像素类型 = GL_UNSIGNED_SHORT_8_8_APPLE;

glTexImage2D(GL_TEXTURE_2D, 0, InternalFormat, 2048, 2048, 0, PixelFormat, PixelType, 0);

但是 `glCheckFramebufferStatus` 正在返回 GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 错误。

它适用于以下格式: internalFormat = GL_RGB;

像素格式 = GL_RGB;

像素类型 = GL_UNSIGNED_BYTE;

是否有任何其他步骤可以支持 GL_RGB_422_APPLE ?

在我们的项目中,我们使用的纹理只存储每个像素的布尔值(0/1)。存储布尔值 16 位/像素是如此昂贵。这就是我寻找上述实现的原因。

4

1 回答 1

1

你,作为一个单纯的 OpenGL 开发者,不能为任何东西“添加支持”。这是实施者的工作。使用 OpenGL ES (GLES) 2.0,除非有扩展支持,否则您根本不能RGB_422_APPLE用于帧缓冲附件。实际上,GLES 2.0 规范甚至没有提到任何大小的内部格式。奇怪的是,它们确实使用大小合适的内部格式来描述帧缓冲区附件何时合法并且不会损害帧缓冲区的完整性。

无论如何,即使您确实支持常规纹理并RGBA_422_APPLE通过适当的扩展名,也没有说明 [size internal] 格式是否以及如何合法用作帧缓冲区附件以及略读所述格式的扩展规范,没有迹象表明它是合法的。

我猜你在这种特殊情况下不走运。

编辑:澄清一下,为了能够使用非深度/非模板纹理作为帧缓冲区附件,它必须color-renderable。上面提到的规范没有提到任何关于这个问题的内容,您使用的实现似乎也是如此。

于 2013-09-23T13:47:19.993 回答