我已經寫了一個例程,以讀取從BMP文件內的所有像素值到一個數組,我想餵給openGL的glTexImage2D把它變成一個紋理。這樣做,我意識到BMP文件內像素的實際格式是BGR而不是RGB,所以我的數組包含藍色,綠色和紅色。因此,與最初的位圖相比,我的最終紋理交換了藍色和紅色通道。閱讀BMP的BGR值,傳遞給glTexImage2D
這是我怎麼稱呼它:
glTexImage2D(GL_TEXTURE_2D, 0, 3, imgdata->width, imgdata->height, 0, GL_RGB, GL_UNSIGNED_BYTE, imgdata->pixdata);
任何解決方法,我通過這個局面/錯誤的參數?我現在唯一能找到的解決方案是使用循環手動交換數組內的RB值。
我在OpenGL的文檔中看不到這樣的格式 – Tsaras 2013-02-23 18:28:27
指定像素數據的格式。 以下符號值被接受: GL_RED, GL_RG, GL_RGB, GL_BGR, GL_RGBA,和 GL_BGRA。 – 2013-02-23 18:29:02
我在你提供的鏈接中看到它,但是當我從紅色書中讀取時,它不在列表中。事實上,我設置了GR_BGR,它被標記爲未聲明的標識符 – Tsaras 2013-02-23 18:30:03