我的問題是,當使用 glutInitContextProfile(GLUT_CORE_PROFILE)而不是glutInitContextProfile(GLUT_COMPATIBILITY_PROFILE)紋理區域保持黑色。我只是爲了強調:與兼容性配置文件,一切正常,我期望它的工作方式)使用核心配置文件時OpenGL紋理問題
我加載我的紋理與Devil,通常與ilutGLLoadImage(文件名),因爲我不知道如果tex參數由魔鬼正確設置,我也加載一些紋理與該代碼:
ILuint img;
ilGenImages(1, &img);
ilBindImage(img);
ILboolean ret = false;
if((ret = ilLoadImage("...jpg"))){
ret = ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE);
if(!ret){
std::cout << "image conversion failed" << std::endl;
}
glGenTextures(1, &texture[20]);
glBindTexture(GL_TEXTURE_2D, texture[20]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
/*char imageData[27] = {
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
};*/
//glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 3, 3, 0, GL_RGB, GL_UNSIGNED_BYTE, imageData);
glTexImage2D(GL_TEXTURE_2D, 0, ilGetInteger(IL_IMAGE_BPP), ilGetInteger(IL_IMAGE_WIDTH),
ilGetInteger(IL_IMAGE_HEIGHT), 0, ilGetInteger(IL_IMAGE_FORMAT), GL_UNSIGNED_BYTE,
ilGetData());
}
else{
std::cout << "image file not found" << std::endl;
}
ilDeleteImages(1, &img);
我沒有成功測試了不同的TEX-參數,與那些使用,但至少應該不涉及mipmap處理相關的問題。 當我使用帶有imagedata-array的註釋部分時,一切正常,所以我想這對綁定,繪圖和着色沒有任何問題。如果您認爲可能會出現該簽名的問題,我會發布更多的代碼。
我知道,在覈心配置文件中,由於某些原因紋理可以被認爲是「不完整的」,但我無法找到爲什麼應該發生。我從DevIL或OpenGL都沒有收到任何錯誤。
感謝您的幫助。
作品,非常感謝你! GL錯誤是無效的,儘管我有這個錯誤已經有一段時間了,現在它終於打到我了;) – waixo 2011-01-24 09:41:56