我的应用程序在使用打包像素格式(如GL_EXT_packed_pixels )之前检查UNSIGNED_INT_8_8_8_8_EXT扩展。在我的MacBook上,我的代码找不到这个扩展,尽管使用打包的像素格式看起来仍然有效。
OpenGL扩展查看器似乎表明它在OS上有一个特殊的名称:

有什么关系呢?在评估是否支持GL_EXT_packed_pixels时,我应该只检查UNSIGNED_INT_8_8_8_8_EXT或GL_APPLE_packed_pixels吗?
发布于 2015-01-08 03:38:24
EXT_packed_pixels有以下定义:
UNSIGNED_BYTE_3_3_2_EXT 0x8032
UNSIGNED_SHORT_4_4_4_4_EXT 0x8033
UNSIGNED_SHORT_5_5_5_1_EXT 0x8034
UNSIGNED_INT_8_8_8_8_EXT 0x8035
UNSIGNED_INT_10_10_10_2_EXT 0x8036而APPLE_packed_pixels有以下几个方面:
UNSIGNED_BYTE_3_3_2 0x8032
UNSIGNED_BYTE_2_3_3_REV 0x8362
UNSIGNED_SHORT_5_6_5 0x8363
UNSIGNED_SHORT_5_6_5_REV 0x8364
UNSIGNED_SHORT_4_4_4_4 0x8033
UNSIGNED_SHORT_4_4_4_4_REV 0x8365
UNSIGNED_SHORT_5_5_5_1 0x8034
UNSIGNED_SHORT_1_5_5_5_REV 0x8366
UNSIGNED_INT_8_8_8_8 0x8035
UNSIGNED_INT_8_8_8_8_REV 0x8367
UNSIGNED_INT_10_10_10_2 0x8036
UNSIGNED_INT_2_10_10_10_REV 0x8368比较两者,EXT_packed_pixels是APPLE_packed_pixels的一个子集,并且共享的值是相同的。因此,如果支持APPLE_packed_pixels,则可以安全地使用来自EXT_packed_pixels的所有定义。
正如扩展查看器的屏幕截图所显示的那样,自GL_EXT_packed_pixels 1.2以来,OpenGL一直是核心功能。因此,在大多数情况下,您不需要在扩展字符串中测试其中的任何一个。如果您首先检查版本,并且它至少是1.2,您已经知道该功能是可用的。测试逻辑可能如下所示:
if (strcmp(glGetString(GL_VERSION), "1.2") >= 0 ||
strstr(glGetString(GL_EXTENSIONS), "_packed_pixels") != NULL)
{
// supported
}https://stackoverflow.com/questions/27831289
复制相似问题