Hey, ich dieses Skript habe eine SDL_Surface zu laden und als OpenGL Textur speichern:SDL_Surface zu OpenGL Textur
typedef GLuint texture;
texture load_texture(std::string fname){
SDL_Surface *tex_surf = IMG_Load(fname.c_str());
if(!tex_surf){
return 0;
}
texture ret;
glGenTextures(1, &ret);
glBindTexture(GL_TEXTURE_2D, ret);
glTexImage2D(GL_TEXTURE_2D, 0, 3, tex_surf->w, tex_surf->h, 0, GL_RGB, GL_UNSIGNED_BYTE, tex_surf->pixels);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
SDL_FreeSurface(tex_surf);
return ret;
}
Das Problem ist, dass es nicht funktioniert. Wenn ich die Funktion von der Hauptfunktion aus anrufe, lädt sie einfach kein Bild (wenn sie nur die Zeichnungsfarbe ändert), und wenn von einer Funktion außerhalb der Hauptfunktion aufgerufen wird, stürzt das Programm ab. Es ist diese Linie, die das Programm abstürzen läßt:
2D(GL_TEXTURE_2D, 0, 3, tex_surf->w, tex_surf->h, 0, GL_RGB, GL_UNSIGNED_BYTE, tex_surf->pixels);
jemand einen Fehler in diesem sehen kann?
Veröffentlichen Sie eine minimale, kompilierbare Quelle, die Ihr Problem veranschaulicht. Du wirst bessere Antworten bekommen. Es ist sehr schwierig zu theoretisieren, was das Problem anders ist. – dirkgently