我聽說你需要兩個紋理尺寸的力量才能在OpenGL中工作。但是,我已經能夠加載200x200和300x300(不是2的冪)的紋理。與此同時,當我嘗試使用相同的代碼加載512x512(兩個冪次)的紋理,但數據不會加載(按照我使用DevIL加載這些PNG的方式)。我一直無法找到任何能夠告訴我加載哪種類型的尺寸的東西。我也知道你可以剪裁紋理並添加邊框,但我不知道最終的尺寸應該是多少。什麼紋理尺寸可以OpenGL處理
這裏是負載的功能:
void tex::load(std::string file)
{
ILuint img_id = 0;
ilGenImages(1,&img_id);
ilBindImage(img_id);
ilLoadImage(file.c_str());
ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE);
pix_data = (GLuint*)ilGetData();
tex_width = (GLuint)ilGetInteger(IL_IMAGE_WIDTH);
tex_height = (GLuint)ilGetInteger(IL_IMAGE_HEIGHT);
ilDeleteImages(1,&img_id);
//create
glGenTextures(1,&tex_id);
glBindTexture(GL_TEXTURE_2D,tex_id);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,tex_width,tex_height,0,GL_RGBA,GL_UNSIGNED_BYTE,pix_data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glBindTexture(GL_TEXTURE_2D,NULL);
}
在較新版本的OpenGL中,圖像不需要是「兩個冪」(雖然它也取決於GPU等)......但是如何加載和處理圖像/紋理?如果沒有看到正在使用的實際代碼,很難告訴你有什麼問題。 – Vallentin
查詢'MAX_TEXTURE_SIZE',它可以讓你知道2D紋理支持的最大寬度/高度。一些非常老的GPU不支持512x512,但現在最支持的是2048x2048 - 16384x16384之間的某個地方。你可以在這裏看到統計信息[here](http://feedback.wildfiregames.com/report/opengl/feature/GL_MAX_TEXTURE_SIZE)。 –
3379是最大紋理尺寸 – 0ctoDragon