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.