主题涉及OpenGL ES 2.0。
我有一个设备,当通过
查询扩展时glGetString(GL_EXTENSIONS)
返回支持的扩展列表,其中没有一个是GL_EXT_texture_compression_s3tc
。
AFAIK,没有GL_EXT_texture_compression_s3tc
不允许使用DXT压缩纹理。
但是,当在设备上使用DXT压缩纹理时,它们会毫无问题地呈现。
使用glCompressedTexImage2D
提交纹理数据。
尝试使用DXT1,DXT3和DXT5。
为什么会这样?使用纹理压缩是否安全,尽管似乎不支持压缩?
答案 0 :(得分:2)
我认为,缺少对GL_EXT_texture_compression_s3tc
的支持并不意味着您不能使用压缩格式。无论如何,他们可能会得到支持。
引自glCompressedTexImage2D doc page for ES2:
根据扩展规范解码纹理图像 定义指定的
的值获得internalformat
。 OpenGL ES(...)提供了一个 获取由此提供的此类格式的符号常量的机制 扩展。 支持的压缩纹理格式数量可以是 通过查询GL_NUM_COMPRESSED_TEXTURE_FORMATS
的值获得。 支持的特定压缩纹理格式列表可以是 通过查询GL_COMPRESSED_TEXTURE_FORMATS
。
请注意,GL_EXT_texture_compression_s3tc
没有任何内容。即使他们的“伪标准化”(我的意思是 - 扩展)替代品未被列为支持,也可以实现对各种功能的支持。
您应该使用glGetIntegerv()
查询这些常量(GL_NUM_COMPRESSED_TEXTURE_FORMATS
和GL_COMPRESSED_TEXTURE_FORMATS
)以了解哪些压缩格式实际上支持。