Voisiko joku näyttää pienen ohjelman, jossa käytetään esim. SDL_draw kirjaston Draw_Line funktiota. Itse olen saanut kaikkea muuta(mitä nyt näppäinten ja kuvien käsittelyä) SDL:ssä toimimaan, mutta nuo grafiikkafunktiot ovat kyllä täyttä hepreaa minulle. Josko vaikka sen esimerkin jälkeen innostuisin tekemään tänne joitakin SDL koodivinkkejä. :)
Voin antaa palasen lähdekoodia ohjelmasta, joka piirtää sdl_drawin avulla pikseleitä ja neliöitä.
Tätä koodia ja sdl_drawin helppiä soveltamalla voit helposti piirtää viivoja, ympyröitä ja muita monimutkaisempia kuvioita.
int main(int argc, char* argv[]) { SDL_Init(SDL_INIT_VIDEO); atexit(SDL_Quit); SDL_Surface* pSurface = SDL_SetVideoMode ( SCREENWIDTH, SCREENHEIGHT, SCREENBPP, SCREENFLAGS ); Draw_Init(); // alusta SDL_draw SDL_Event event; for (;;) { if ( SDL_PollEvent ( &event ) ) { if ( event.type == SDL_QUIT ) break; } DrawScene(pSurface); } return(0); } void DrawScene(SDL_Surface* surface) { //tyhjennä ruutu SDL_FillRect (surface, NULL, 0 ); for(int a=0;a<=NUM_BOXES;a++) Draw_Rect(surface, boxes[a].x, boxes[a].y, boxes[a].width, boxes[a].height, SDL_MapRGB(surface->format, 100,100,100)); // Tässä välissä on paaaaaljon törmäystarkistus tms. fysiikkakoodia :P Uint32 c; c = SDL_MapRGB(surface->format, particles[i].color.r, particles[i].color.g, particles[i].color.b); Draw_Pixel(surface, particles[i].x, particles[i].y, c); } // päivitä ruutu SDL_UpdateRect(surface, 0, 0, 0, 0); }
Täsä on pikkupätkä omasta ohjelmastani, joka soveltaa SDL_drawia. Toivottavasti on apua.
#include <SDL.h> #include <SDL_draw.h> SDL_Surface *screen_surf; int main( int argc, char* argv[] ) { SDL_Init(SDL_INIT_VIDEO); screen_surf = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE); Draw_Init(); Draw_Pixel(screen_surf, 45,45, 8); SDL_Delay(5000); //odotetaan 5 sekuntia SDL_Quit(); return 0; }
Mitä vikaa tuossa on? Tulee vain virheilmoitukset:
Testit.obj : error LNK2001: unresolved external symbol _Draw_Pixel Testit.obj : error LNK2001: unresolved external symbol _Draw_Init
Et ole linkannut SDL_draw-kirjastoa (luultavasti .lib/.a) mukaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.