2013-02-12 64 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