CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Problem z SLD i openGL

Problem z SLD i openGL

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Problem z SLD i openGL

Nowy postprzez Chlorek » sobota, 19 listopada 2011, 22:24

Tak więc mam funkcje wczytującą obraz png za pomocą SDL, a następnie przekształcającą go na teksturę dla obiektu. I tu mam problem, gdyż wywołanie tej funkcji powoduje samoistne zamknięcie się aplikacji, gdzieś musi być błąd, dziwne jest tylko to, że tą funkcje akurat wziąłem z internetu i podobno innym ludziom ona działa więc czemu u mnie nie? Początkowo myślałem, że to dlatego że ją przerobiłem na potrzeby programu i gdzieś zrobiłem gafę, jednak gdy użyłem kodu identycznego jak w źródle z którego czerpałem informacje występuje ten sam problem. Oto funkcja:
KOD cpp:     UKRYJ  
GLuint load_texture(const char* file)
{
   SDL_Surface* surface = IMG_Load(file);
   GLuint texture;
   glPixelStorei(GL_UNPACK_ALIGNMENT,4);
   glGenTextures(1, &texture);
   glBindTexture(GL_TEXTURE_2D, texture);
   SDL_PixelFormat *format = surface->format;
   if (format->Amask)
   {
      gluBuild2DMipmaps(GL_TEXTURE_2D, 4, surface->w, surface->h, GL_RGBA, GL_UNSIGNED_BYTE, surface->pixels);
   }
   else
   {
      gluBuild2DMipmaps(GL_TEXTURE_2D, 3, surface->w, surface->h, GL_RGB, GL_UNSIGNED_BYTE, surface->pixels);
   }
   SDL_FreeSurface(surface);
   
    glTexImage2D(GL_TEXTURE_2D, 0, 3, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, &texture);
    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);
   
   return texture;
}
Kevin Mitnick - łamacz ludzi, nie haseł.
Najlepszy sposób nauki c++... pisać, pisać, pisać, pisać i jeszcze raz pisać!
Avatar użytkownika
Chlorek
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): czwartek, 6 stycznia 2011, 20:20
Lokalizacja: Tu i tam
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Linux Macpup & Win XP Prof & Linux SlackWare & Linux Ubuntu
Kompilator: Dev-C++ v4.9.9.2 (mingw 3.4.2); Code::Blocks v10.05 (mingw najnowsze)
SKYPE: chlorekcl
    Windows XPFirefox

Re: Problem z SLD i openGL

Nowy postprzez Cyfrowy Baron » sobota, 19 listopada 2011, 22:37

Sprawdziłeś jakiej wersji OpenGL wymaga ten kod, oraz czy Twoja karta graficzna obsługuję tą wersję OpenGL.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z SLD i openGL

Nowy postprzez Chlorek » sobota, 19 listopada 2011, 23:14

Tak pod 2.1 chodzi to cacko a moja karta graficzna również taką wersję obsługuje, tak więc wszystko powinno być dobrze.

#Edit:
Grzebałem w kodzie, grzebałem, aż wygrzebałem :D Wszystko działa po 2 dniach męczarni. Chodziło o kilka ostatnich funkcji które było trzeba usunąć i ewentualnie przenieść do funkcji renderującej obraz.
KOD cpp:     UKRYJ  
GLuint load_texture(const char* file)
{
   SDL_Surface* surface = SDL_LoadBMP(file);
   GLuint texture;
   glPixelStorei(GL_UNPACK_ALIGNMENT,4);
   glGenTextures(1, &texture);
   glBindTexture(GL_TEXTURE_2D, texture);
   SDL_PixelFormat *format = surface->format;
   if (format->Amask)
   {
      gluBuild2DMipmaps(GL_TEXTURE_2D, 4, surface->w, surface->h, GL_RGBA, GL_UNSIGNED_BYTE, surface->pixels);
   }
   else
   {
      gluBuild2DMipmaps(GL_TEXTURE_2D, 3, surface->w, surface->h, GL_RGB, GL_UNSIGNED_BYTE, surface->pixels);
   }
   SDL_FreeSurface(surface);
   
   return texture;
}


A jeśli można zapytać to czemu obrazy wczytywane we wszystkich formatach są dobre, a obraz z BMP ma pomylone kolory? Tam gdzie powinno być zielono jest niebiesko :( Pytam tylko z ciekawości, i tak nie używam tego formatu jednak warto takie rzeczy wiedzieć.
Kevin Mitnick - łamacz ludzi, nie haseł.
Najlepszy sposób nauki c++... pisać, pisać, pisać, pisać i jeszcze raz pisać!
Avatar użytkownika
Chlorek
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): czwartek, 6 stycznia 2011, 20:20
Lokalizacja: Tu i tam
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Linux Macpup & Win XP Prof & Linux SlackWare & Linux Ubuntu
Kompilator: Dev-C++ v4.9.9.2 (mingw 3.4.2); Code::Blocks v10.05 (mingw najnowsze)
SKYPE: chlorekcl
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość