Mistä johtuu että tällä koodilla saan vain kokoajan aikaan "Parachute deployment: segmentation fault:in"
#include <SDL/SDL.h> #include <SDL/SDL_gfxPrimitives.h> #include <SDL/SDL_rotozoom.h> SDL_Surface *ruutu, *tekstuuri, *rot; SDL_Event events; bool running, textureDone; Uint8 *nappi; int hiiriX, hiiriY, kulma; SDL_Rect piirtoalue; #define SCREENWIDTH 640 #define SCREENHEIGHT 480 void piirraHiiri(int, int, Uint32); int main(int argc, char *argv[]) { piirtoalue.x=0; piirtoalue.y=0; SDL_Init(SDL_INIT_VIDEO); ruutu = SDL_SetVideoMode(SCREENWIDTH, SCREENHEIGHT, 32, SDL_HWSURFACE /*| SDL_FULLSCREEN */| SDL_DOUBLEBUF); SDL_ShowCursor(false); running=true; while(running) { SDL_FillRect(ruutu, NULL, SDL_MapRGB(ruutu->format, 0, 0, 0)); SDL_PollEvent(&events); nappi = SDL_GetKeyState(NULL); SDL_GetMouseState(&hiiriX, &hiiriY); if (events.type==SDL_QUIT || nappi[SDLK_ESCAPE]) running=false; if (!textureDone) { int xkohta, ykohta; xkohta=ykohta=0; if (SDL_MUSTLOCK(tekstuuri)) SDL_LockSurface(tekstuuri); //tämä pitää kommentoida pois niin toimii tuon alempana mainitun kanssa while (ykohta < SCREENHEIGHT) { while (xkohta < SCREENWIDTH) { pixelRGBA(tekstuuri, xkohta, ykohta, xkohta^ykohta, xkohta^ykohta, xkohta^ykohta, 255); //TÄHÄN kun vaihtaa "tekstuuri":n tilalle "ruutu" niin ohjelma toimii mutta tekstuuri piirretään ruudulle... ++xkohta; } xkohta=0; ++ykohta; } textureDone=true; if (SDL_MUSTLOCK(tekstuuri)) SDL_UnlockSurface(tekstuuri); //yämäkin vaatii poiskommentointia } if (kulma < 360){++kulma;}else{kulma=0;} rot = rotozoomSurface(tekstuuri, kulma, 1, 0); SDL_BlitSurface(rot, NULL, ruutu, &piirtoalue); piirraHiiri(hiiriX, hiiriY, 0x0000FFFF); SDL_Delay(1); SDL_Flip(ruutu); } SDL_ShowCursor(true); SDL_Quit(); return 0; } void piirraHiiri(int x, int y, Uint32 color) { lineColor(ruutu, x-10, y, x+10, y, color); lineColor(ruutu, x, y-10, x, y+10, color); }
Kun vaihtaa että surface jonne piirrettään tuota XOR tekstuuria ei olekkaan "tekstuuri" vaan "ruutu" niin silloin toimii... Mistä voisi johtua?
Esimerkiksi siitä, että et ole luonut tekstuuria. SDL_CreateRGBSurface saattaisi auttaa.
...ja johan alkoi toimia. Kiitos!
Aihe on jo aika vanha, joten et voi enää vastata siihen.