mesajah Temat założony przez niniejszego użytkownika |
[SDL] Co jest nie tak ? » 2010-09-04 15:42:55 Czemu mi to nie działa ?
#include "SDL.h" #include "iostream" using namespace std;
const int Rozdzielczosc_X = 800; const int Rozdzielczosc_Y = 600; const int Bitow_Na_Pixel = 32; SDL_Surface * SDLSEkran = NULL;
bool Init_SDL() { if( SDL_Init( SDL_INIT_EVERYTHING ) == - 1 ) return false; SDLSEkran = SDL_SetVideoMode( Rozdzielczosc_X, Rozdzielczosc_Y, Bitow_Na_Pixel, SDL_SWSURFACE ); if( SDLSEkran == NULL ) { return false; } SDL_WM_SetCaption( "Zilesios", NULL ); return true; }
SDL_Surface * Wczytaj_BMP( char NazwaPliku ) { SDL_Surface * Powierzchnia_Na_Bitmape = NULL; SDL_Surface * Przekonwertowana_Bitmapa = NULL; Powierzchnia_Na_Bitmape = SDL_LoadBMP( NazwaPliku ); if( Powierzchnia_Na_Bitmape != NULL ) { Przekonwertowana_Bitmapa = SDL_DisplayFormat( Powierzchnia_Na_Bitmape ); SDL_FreeSurface( Powierzchnia_Na_Bitmape ); } return Przekonwertowana_Bitmapa; } void Exit() { SDL_FreeSurface( SDLSEkran ); SDL_Quit(); }
int main( int argc, char * args[] ) { if( !Init_SDL() ) return 0; SDL_Delay( 3000 ); Exit(); return 0; } |
|
DejaVu |
» 2010-09-04 15:45:08 A jaki jest błąd?
/edit:
No i co to jest:
|
|
kamillo121 |
» 2010-09-04 15:46:07 Pierwsze co rzuca się w oczy to to, że funkcja do ładowania bitmap przyjmuje const char* a ty jej zapodajesz char, dopisz jaki błąd bo Ci nikt nie pomoże SDL_Surface * Wczytaj_BMP( char NazwaPliku ) zamiast tego daj SDL_Surface * Wczytaj_BMP( char * NazwaPliku )
//edit zauważyłem teraz, że zwalniasz zmienna SDLEkran, gdzie ta ma ustawione tryb video, nie należy tego robić, zwalniaj tylko powierzchnie które nie mają ustawione trybu video ! |
|
Elaine |
» 2010-09-04 16:07:34 Dołączenie pliku o nazwie iostream. Jeśli nie ma takiego w obecnym katalogu, to traktowane jest to tak samo, jak #include <iostream> . |
|
mesajah Temat założony przez niniejszego użytkownika |
» 2010-09-04 17:44:58 sorka zły kod dałem a oto dobry : #include "SDL.h"
const int Rozdzielczosc_X = 800; const int Rozdzielczosc_Y = 600; const int Bitow_Na_Pixel = 32;
SDL_Surface * SDLSEkran = NULL;
SDL_Surface * Wczytaj_BMP( char NazwaPliku ) { SDL_Surface * Powierzchnia_Na_Bitmape = NULL; SDL_Surface * Przekonwertowana_Bitmapa = NULL; Powierzchnia_Na_Bitmape = SDL_LoadBMP( NazwaPliku ); if( Powierzchnia_Na_Bitmape != NULL ) { Przekonwertowana_Bitmapa = SDL_DisplayFormat( Powierzchnia_Na_Bitmape ); SDL_FreeSurface( Powierzchnia_Na_Bitmape ); } return Przekonwertowana_Bitmapa; }
bool Blit( SDL_Surface * src, int Offset_X, int Offset_Y ) { SDL_Rect Destination; Destination.x = Offset_X; Destination.y = Offset_Y; Destination.w = src->w; Destination.h = src->h; if( SDL_BlitSurface( src, NULL, SDLSEkran, & Destination ) == 0 ) { return true; } else { return false; } }
bool Init_SDL() { if( SDL_Init( SDL_INIT_EVERYTHING ) == - 1 ) return false; SDLSEkran = SDL_SetVideoMode( Rozdzielczosc_X, Rozdzielczosc_Y, Bitow_Na_Pixel, SDL_SWSURFACE ); if( SDLSEkran == NULL ) { return false; } SDL_WM_SetCaption( "DarkCult SDL tutorial", NULL ); Obrazek = Wczytaj_BMP( "1.bmp" ); if( Obrazek == NULL ) return false; return true; }
void Exit() { SDL_FreeSurface( Obrazek ); SDL_FreeSurface( SDLSEkran ); SDL_Quit(); }
int main( int argc, char * args[] ) { if( !Init_SDL() ) return 0; if( Blit( Obrazek, 100, 50 ) == false ) { return 0; } if( SDL_Flip( SDLSEkran ) == - 1 ) { return 0; } SDL_Delay( 3000 ); Exit(); return 0; } A error to : Error 1 error C2664: 'SDL_RWFromFile' : cannot convert parameter 1 from 'char' to 'const char *' c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 15 Error 2 error C2065: 'Obrazek' : undeclared identifier c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 55 Error 3 error C2664: 'Wczytaj_BMP' : cannot convert parameter 1 from 'const char [6]' to 'char' c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 55 Error 4 error C2065: 'Obrazek' : undeclared identifier c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 56 Error 5 error C2065: 'Obrazek' : undeclared identifier c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 63 Error 6 error C2065: 'Obrazek' : undeclared identifier c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 72 7 IntelliSense: argument of type "char" is incompatible with parameter of type "const char *" c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 15 8 IntelliSense: identifier "Obrazek" is undefined c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 55 9 IntelliSense: argument of type "const char *" is incompatible with parameter of type "char" c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 55 10 IntelliSense: identifier "Obrazek" is undefined c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 63 11 IntelliSense: identifier "Obrazek" is undefined c:\users\ukis\documents\visual studio 2010\projects\win332\win332\sdl.cpp 72
|
|
kamillo121 |
» 2010-09-04 17:52:50 PO pierwsze o tym już mówiłem SDL_Surface * Wczytaj_BMP( char NazwaPliku ) SDL_Surface * Wczytaj_BMP( char * NazwaPliku )
po drugie nie ma takiego obiektu jak Obrazek to chyba jasne; w funkcji main odwołujesz się do niego najpierw stwórz SDL_Surface * Obrazek = null;
po trzecie pisałem, żebyś nie zwalniał powierzchni ustawionej jako video usuń SDL_FreeSurface( SDLEkran );
//edit jako, że Obrazek jest jako zmienna globalna utwórz go obok SdL_Surface* SDLEkran=nuul; |
|
DejaVu |
» 2010-09-04 17:56:42 Jak już zmieniać to na SDL_Surface * Wczytaj_BMP( const char * NazwaPliku ) |
|
mesajah Temat założony przez niniejszego użytkownika |
» 2010-09-04 20:15:02 thx . użyłem sposobu kamijek |
|
« 1 » |