2013-02-12 89 views
1

我们通过SDL_image加载纹理,然后我们将其加载到OpenGL的通过textimage2d:SDL的OpenGL SDL_image Mac电脑:显示器输出(色彩偏移)

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture->w, texture->h, 
0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, (GLuint**)texture->pixels); 

在我的Windows机器,运行正常,但在我的朋友的Mac机器的颜色似乎正在转移。他的显示器上呈现出强烈的蓝色纹理。当然,这必须处理internalFormat(这里是GL_BGRA_EXT)。我们尝试了所有我们发现并运行的代码(正确编译),但没有给mac提供正确的输出。任何想法如何获得有关如何计算由SDL_image提供的像素数组的Mac的想法?

+0

“* internalFormat(这里是GL_BGRA_EXT)*”否,纹理的内部格式是GL_RGBA。另外,如果你不能描述实际问题比“强烈的蓝色纹理”更好,那么很难知道什么是错的。你不能提供问题和固定版本的截图吗? – 2013-02-12 22:25:13

回答

0

好吧,由于您的链接,一些调查和丢失的脑细胞,我们得出结论,我们可以通过sdl表面中定义的掩模(surface-> format-> Rmask)来检测像素数据的顺序以决定如果我们使用GL_UNSIGNED_INT_8_8_8_8或GL_UNSIGNED_INT_8_8_8_8_REV。

0

我还没有开始使用SDL openGL,但是这里有一些可能相关的潜在关键字。

RGBA/BGRA?

Colors are off in SDL program

http://www.opengl.org/wiki/Common_Mistakes

#if for TARGET_CPU_PPC and using a consistent value like GL_RGBA for everything.

希望这可以让你开始。

+0

好吧,由于您的链接,一些调查和丢失的脑细胞,我们得出结论,我们可以通过sdl表面中定义的掩模(surface-> format-> Rmask)来检测像素数据的顺序,以决定我们是否使用GL_UNSIGNED_INT_8_8_8_8或GL_UNSIGNED_INT_8_8_8_8_REV。 – Jean 2013-02-12 22:28:14