Ich habe bereits stb_image in einigen Desktop (PC) -Projekten verwendet und es hat gut funktioniert, aber jetzt versuche ich es zu verwenden, um einige Tags zu laden, um sie mit OpenGL ES zu verwenden und ich kann t. Dieser ist der Code, den ich verwenden:stb_image funktioniert nicht auf iPhone
void TextureManager::LoadFontTexture(const char *filename,int rows,int columns)
{
glGenTextures(1,&textures[texNum]);
texNum++;
glBindTexture(GL_TEXTURE_2D,textures[texNum-1]);
int x,y,n;
GLenum format;
unsigned char *data=stbi_load(filename,&x,&y,&n,0);
if (data==NULL)
{
NSLog(@"Data loaded incorrectly");
NSLog(@"Failure reason:%s",stbi_failure_reason());
}
else {
NSLog(@"Width:%d height:%d",x,y);
}
if (n==3)
{
format=GL_RGB;
}
else if (n==4)
{
format=GL_RGBA;
}
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D,0,n,x,y,0,format,GL_UNSIGNED_BYTE,data);
}
Dieser Code hat gut funktioniert auf dem Desktop, aber wenn ich versuche, etwas mit diesem Bild texturize ich ein schwarzes Quadrat. Die Werte für Breite und Höhe sind korrekt und immer die (n == 4) wenn sie aufgerufen wird (das Bild hat einen Alpha-Kanal, also ist das korrekt). Ich weiß nicht, was falsch ist. Ich habe auch versucht, das Format zu ändern = GL_RGBA mit format = GL_BGRA, aber es funktioniert nicht
FWIW, beachten Sie, dass Ihr Code möglicherweise Ressourcen verliert: Wenn das Laden des Images fehlschlägt, wird die GL-Textur trotzdem generiert und nicht freigegeben. Außerdem sollte auf "stbi_load" ein Aufruf "stbi_image_free" folgen. – rotoglup