1
我試圖在OpenGL中簡單地加載6張圖片作爲立方體紋理。 Blow是加載代碼:OpenGL中的立方體貼圖根本不顯示
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
for (int i = 0;i < 6;++i)
{
int width, height, channel;
unsigned char* img = SOIL_load_image(skybox[i].c_str(), &width, &height, &channel, SOIL_LOAD_AUTO);
glTexImage2D(cubeTarget[i], 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, img);
delete img;
}
glEnable(GL_TEXTURE_CUBE_MAP_ARB);
渲染代碼被傳遞。奇怪的是渲染的立方體是白色的。看起來紋理完全沒有加載。我改變加載代碼看2D紋理是否將工作:
glGenTextures(1, texture);
glBindTexture(GL_TEXTURE_2D, texture[0]);
int width, height, channel;
unsigned char* img = SOIL_load_image(skybox[0].c_str(), &width, &height, &channel, SOIL_LOAD_AUTO);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, img);
delete img;
if(texture[0] == 0) return false;
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glEnable(GL_TEXTURE_2D);
結果是我可以看到紋理畢竟,不管如何分配怪造成的紋理座標。我收集了以下信息:
我用於加載圖像的lib運行良好;
立方體貼圖的設置來自SuperBibble第9章。當我編譯本書的代碼時,幾乎相同的代碼將很好地工作。
順便說一句,有沒有人有關於加載圖像庫的一些建議?我使用的一個似乎停止更新很長一段時間...
附加:我現在發現是,如果我嘗試只加載一個IMG作爲所有天空盒面'紋理,它會顯示。只要使用一個變量來替換一個特定的值,什麼都不會顯示。
你在哪裏設置mipmap? (如果你不這樣做,爲什麼你啓用它們?) – JasonD 2013-03-26 08:13:53
@JasonD你的意思是縮小過濾器?我其實並沒有建立mipmap。當我將其更改爲GL_LINEAR時,它仍然不起作用。所以我想這不是問題。 – Narusaki 2013-03-26 08:23:19
「*我使用的似乎停止更新很長一段時間...... *」土壤?土壤是*完整*;它擁有所有者想要賦予的所有功能。在這一點上,沒有必要更新它。 – 2013-03-26 09:06:30