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.