Savail Temat założony przez niniejszego użytkownika |
[SDL/Opengl] Problem z odpaleniem programu » 2010-10-09 19:19:55 Witam Program ma za zadanie wyswietlic sprite bmp przy uzyciu SDL i Opengl. Niestety gdy go uruchamiam on odrazu sie wylacza i juz mi nerwy puszaczaja bo przyczyny znalesc nie umiem ;/ Bylbym ogromnie wdzieczny za pomoc #include <sdl/sdl.h> #include <gl/gl.h> #include <sdl/sdl_opengl.h> SDL_Surface * surface; SDL_Event event; GLuint texture; GLenum texture_format; GLint nofcolors;
int load() { nofcolors = 3; texture_format = GL_RGB; texture = NULL; surface = SDL_LoadBMP( "flower.bmp" ); glGenTextures( 1, & texture ); glBindTexture( GL_TEXTURE_2D, texture ); 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, nofcolors, surface->w, surface->h, 0, texture_format, GL_UNSIGNED_BYTE, surface->pixels ); if( surface ) { SDL_FreeSurface( surface ); } }
void draw() { glClear( GL_COLOR_BUFFER_BIT ); glBindTexture( GL_TEXTURE_2D, texture ); glBegin( GL_QUADS ); glTexCoord2i( 0, 0 ); glVertex3f( 100, 100, 0 ); glTexCoord2i( 1, 0 ); glVertex3f( 228, 100, 0 ); glTexCoord2i( 1, 1 ); glVertex3f( 228, 228, 0 ); glTexCoord2i( 0, 1 ); glVertex3f( 100, 228, 0 ); glEnd(); glLoadIdentity(); SDL_GL_SwapBuffers(); }
int init() { SDL_Surface * screen; SDL_Init( SDL_INIT_VIDEO ); screen = SDL_SetVideoMode( 640, 480, 16, SDL_OPENGL ); SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); }
void init_GL() { glClearColor( 0, 0, 0, 0 ); glEnable( GL_TEXTURE_2D ); glViewport( 0, 0, 640, 480 ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho( 0, 640, 480, 0, - 1, 1 ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); }
int main( int argc, char * argv[] ) { bool quit = false; init(); init_GL(); load(); draw(); while( quit == false ) { if( SDL_PollEvent( & event ) ) { if( event.type == SDL_KEYDOWN ) { switch( event.key.keysym.sym ) { case SDLK_ESCAPE: quit = true; break; } } } } }
|
|
DejaVu |
» 2010-10-09 19:26:40 Nie sprawdzasz czy udało się załadować bitmapę. Pewnie zrobiłeś rename, a nie konwersję pliku bądź plik leży w złym miejscu. |
|
Savail Temat założony przez niniejszego użytkownika |
» 2010-10-09 19:36:50 niestety to nie to ;/ Wymiary obrazka sa takze potega liczby 2(128 / 128) i nazwa jest poprawna |
|
DejaVu |
» 2010-10-09 19:39:59 Jeżeli twierdzisz, że nie wiem co ja piszę to ja już głosu nie zabieram. Nie jeden był taki co miał taki sam problem jak Ty. |
|
kamillo121 |
» 2010-10-09 19:48:50 1. DejaVu wie co pisze ;) 2. Widać, że kod jest zerżnięty(za przeproszeniem) z jakiegoś przykładu bo jakbys sam pisał to nie dawałbyś chociażby funkcji typu int gdzie nie zwraca żadnej wartości 3. Tak jak wspomniał poprzednik sprawdź warunkiem czy udało się załadować bmp, jak nie to wywal jakiś błąd do terminalu przez standardowe wyjście i zobaczysz 4. Skoro nie wiesz gdzie błąd staraj się sam dodawać kilka warunków w newralgicznych miejscach programu wykluczając tym ewentualne błędy a potem pisz 5. Wiele osób mówi, że sprawdzało, że na pewno to nie to a potem... sami wiecie :) 6. gdzie main zwraca wartość ? |
|
Savail Temat założony przez niniejszego użytkownika |
» 2010-10-09 20:00:14 Sory jesli obrazilem cie Piotrze, mieliscie racje... Kod jest z przykladu... chcialem szybko sprawdzic czy to zadziala i dlatego tak troche niedbale. Oryginalny obrazek ma format png, wydawalo mi sie ze zmienilem go na bmp bo nawet we wlasciwosciach pisze ze jest to mapa bitowa ale mylilem sie... Wielkie dzieki za pomoc. Bylem pewien ze nie chodzi o grafike, a jednak... |
|
DejaVu |
» 2010-10-09 20:34:46 Ja się nie obrażam :P jak już to strzelam fochy :) tak przynajmniej dziewczyna mi kiedyś powiedziała :) po prostu... niektórzy spamują, a niektórzy dają konkretną odpowiedź. Ty dążąc do szybkiego osiągnięcia celu pomijasz podstawowe kroki weryfikacji błędów co się później przekłada na nieporozumienia z którymi polemizować mi się po prostu nie chce. Jak już pisałem nie jesteś pierwszym, który robi takie oczywiste błędy. |
|
Drraven |
» 2010-10-10 09:46:29 taka mała uwaga: #include <sdl/sdl.h> #include <gl/gl.h> #include <sdl/sdl_opengl.h> Powinno być: #include <sdl/sdl.h> #include <sdl/sdl_opengl.h> #include <gl/gl.h>
Z doświadczenia wiem ze sdl/sdl_opengl.h jest trochę wredne i musi być tak jak napisałem chyba ze coś się zmieniło od moich ostatnich prób z ogl i sdl ;p |
|
« 1 » 2 |