[SDL + OGL] surfaces -> texturen
-
hi,
gibt es ne möglichkeit SDL_Surface's in opengl texturen zu konvertieren? oder muss ich manuell die dateien in ne glubyte variable laden usw.?
also das soll so aussehen, dass ich ne variable vom typ SDL_Surface habe und ich in die ne bilddatei lade. dann will ich ne textur für opengl generieren und zwar auf basis der SDL_Surface variable damit ich das nicht komplett neu laden muss...
danke im voraus
mfg
Black Sting
-
Bin ja mal net so:
// ///////////////////////////////////////////////// // PUBLIC // // Läd eine Bitmap in den Texturmanager. // // [in] FileName: Name der zu ladenen Bitmap // ///////////////////////////////////////////////// void CTextureManager::loadTexture (std::string FileName) { // Teste ob Textur schon geladen if (!(getTexture (FileName) == -1)) return; // Teste ob datei überhaupt existiert. std::ifstream FileStream(FileName.c_str()); if (!FileStream.good()) { // Datei existiert nicht, Warnung ins Protokoll schreiben. PROTOKOLL.write (MESSAGE_FILENOTFOUND(FileName, LOG_PARAMS)); // Und Funktion abbrechen. return; } // Temporäres Objekt anlegen und namen geben. TextureItem temp; temp.FileName = FileName; // Bitmap in SDL-Surface laden. SDL_Surface *Texture(SDL_LoadBMP(FileName.c_str())); // Textur für OpenGL generieren. glGenTextures(1, &temp.texID); glBindTexture(GL_TEXTURE_2D, temp.texID); glTexImage2D(GL_TEXTURE_2D, 0, 3, Texture->w, Texture->h, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, Texture->pixels); // SDL-Surface wieder freigeben und auf NULL setzen. if (Texture != NULL) { SDL_FreeSurface(Texture); Texture = NULL; } // Noch einen Linearen Filter reinhauen glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); PROTOKOLL.write (MESSAGE_FILENOTFOUND("Textur Geladen", LOG_PARAMS)); // und ab damit in den Vector pushen. this->m_vec_Textures.push_back (temp); }
Den Rest kannste Dir ja denken
-
hey, super, vielen dank
is ja einfacher als erwartet
mfg
Black Sting
-
googel mal ein bischen nach "testgl.c".
Irgendwo im CVS von SDL ist genau eine solche Funktion.