1

是否可以在 openGL ES 1.1 中使用调色板?

我目前正在开发一款具有玩家精灵的游戏,并且玩家精灵需要能够更改为不同团队的颜色。例如,改变衬衫的颜色但不改变面部颜色,这就排除了简单的色调旋转。

这可能吗,还是必须手动实现(直接修改纹理数据)?

4

2 回答 2

3

请记住,除了非 mipmapped GL_NEAREST 之外的任何内容都将在调色板索引之间混合。在将它们上传为 BGRA32 之前,我最终在我的解压缩方法中扩展了调色板纹理。(GLES 2.0)

于 2012-10-30T18:56:34.303 回答
2

它不是 MBX 的硬件功能,而是从 iPhone SDK 快速检查 ES 1.x 的 gl.h 显示GL_PALETTE4_RGB8_OESGL_PALETTE8_RGBA8_OES还有其他一些可以作为常量之一传递给glCompressedTexImage2D,根据手册页here . 因此,您可以将带有调色板的纹理传递给它,但我敢打赌,驱动程序只会将它们转换为 CPU 上的 RGB 纹理,然后将它们上传到 GPU。除了它们是 ES 1.x 规范的一部分之外,我不相信 Apple 支持这些类型的压缩纹理。

在 ES 2.x 上,您可以自由地做任何您想做的事情。您可以轻松地将调色板作为一个纹理上传(例如,(x, 0) 处的像素是调色板索引 x 的颜色)和调色板纹理作为另一个。然后,您将利用两个纹理单元来完成一个在绘制片段时可能完成的工作,因此请自行判断您是否负担得起。

于 2010-11-30T18:12:03.447 回答