2012-01-07 76 views
0

我想在android opengl-es 2.0中使用8位纹理(我只需要每个像素256个值),并想知道如何使用glTexImage2D对其进行设置。如何在Android上为OpenGl-ES 2.0设置8位纹理?

GL_ALPHA8会工作吗?

我没有找到任何Android支持的标准支持的纹理格式列表(或至少大多数的设备至少有android 2.2和opengl 2.0)。我现在没有设备可以测试它,所以我真的很想在这方面提供一些建议。

原因是因为我想为我的片段着色器使用纹理,它只占用尽可能少的内存,并且只需要保存256个值。

回答

0

从官方的OpenGL ES文件:

论点glTexImage2D

指定素数据的数据类型。接受以下符号值:GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT_5_6_5,GL_UNSIGNED_SHORT_4_4_4_4和GL_UNSIGNED_SHORT_5_5_5_1。

如果要使用此功能,你必须选择其中之一:) 最有可能你搜索GL_UNSIGNED_BYTE而字节包含8位:d

+0

感谢您的答复。我选择GL_UNSIGNED_BYTE作为类型,但是我为什么选择内部格式和格式参数,以便每个像素只使用1个字节而不是4个? – HardCoder 2012-01-07 13:31:49

+0

我会使用GL_RGB或GL_LUMINANCE这两个参数,取决于您使用的是什么。只要注意两者应该有匹配的常量。 – poitroae 2012-01-07 13:38:29

+0

GL_RGB确实需要每个值3个字节,对吧? GL_LUMINANCE似乎不适合我。我试着用GL_ALPHA,但似乎工作。问题在于我不知道它为一个像素分配了多少视频内存:1个字节,4个字节或者完全不同的东西。 – HardCoder 2012-01-07 14:18:37

相关问题