使用glGetInternalformativ时出现奇怪的结果

时间:2014-01-03 01:04:48

标签: opengl nvidia

我刚刚从AMD gpu切换到Nvidia GPU(331.82 windows驱动程序),我对使用glGetInternalformativ时获得的结果感到有些惊讶。对于初学者,当我查询GL_TEXTURE_IMAGE_FORMAT的纹理格式时,大多数似乎都返回0.一些例子是GL_RGB8GL_SRGB8GL_SRGB8_ALPHA8GL_RGB32FGL_COMPRESSED_SIGNED_RG_RGTC2。返回0以外的一些示例包括GL_RGBA8GL_R32UIGL_RGB9_E5GL_RGB10_A2GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT。这是一个错误吗?

其他一些对我来说很奇怪的是,在检查GL_TEXTURE_IMAGE_TYPE格式时GL_RGB8GL_SRGB8GL_SRGB8_ALPHA8都返回GL_UNSIGNED_INT_8_8_8_8,但{{1} }}返回GL_RBGA8

根据要求,我正在使用的代码:

GL_UNSIGNED_INT_8_8_8_8_REV

void print_tex_format_info(GLenum internalformat) { GLuint pformat, format, type; glGetInternalformativ(GL_TEXTURE_2D, internalformat, GL_INTERNALFORMAT_PREFERRED, 1, &pformat); glGetInternalformativ(GL_TEXTURE_2D, internalformat, GL_TEXTURE_IMAGE_FORMAT, 1, &format); glGetInternalformativ(GL_TEXTURE_2D, internalformat, GL_TEXTURE_IMAGE_TYPE, 1, &type); printf("IF [%s]\nPF [%s]\nXF [%s]\nTP [%s]\n\n", ogl_EnumToString(internalformat), ogl_EnumToString(pformat), ogl_EnumToString(format), ogl_EnumToString(type) ); } print_tex_format_info(GL_RGB8); print_tex_format_info(GL_RGBA8); print_tex_format_info(GL_SRGB8); etc 使用巨型开关将GLenum转换为等效字符串。它返回ogl_EnumToString,它也与GL_ZERO相同。默认情况不是0,因此GL_NONE不能识别枚举或其他任何内容。

0 个答案:

没有答案