我有一個需要在SDL屏幕上繪製像素的項目。代碼位已被提供給我:使用SDL在屏幕上繪製像素C
int render_screen(SDL_Surface* screen)
{
pixel pixel_white;
pixel_white.r = (Uint8)0xff;
pixel_white.g = (Uint8)0xff;
pixel_white.b = (Uint8)0xff;
pixel_white.alpha = (Uint8)128;
SDL_LockSurface(screen);
/*do your rendering here*/
/*----------------------*/
SDL_UnlockSurface(screen);
/*flip buffers*/
SDL_Flip(screen);
clear_screen(screen);
return 0;
}
而且這個功能:
void put_pixel(SDL_Surface* screen,int x,int y,pixel* p)
{
Uint32* p_screen = (Uint32*)screen->pixels;
p_screen += y*screen->w+x;
*p_screen = SDL_MapRGBA(screen->format,p->r,p->g,p->b,p->alpha);
}
有這個代碼,我真的不明白了一些事情。首先,我認爲這個想法是我應該從render_screen函數中調用函數put_pixel,但是使用什麼參數? put_pixel(SDL_Surface *屏幕,int x,int y,pixel * p)行似乎很複雜。如果x和y是函數繪製參數,爲什麼然後在函數indata中聲明它們?我必須用put_pixel命令(something,x,y,something2)來調用put_pixel。如果我使用x = 56和y = 567,那麼在parentesis中聲明時是不是重置爲0?我應該在什麼東西和東西2,使其工作?
我覺得這裏真正的問題是,你是一個初學者到C. C是一個具有挑戰性的語言學習在第一。如果您想開始編寫遊戲,您可能會在PyGame或Löve方面取得更多成功。 –
[SDL2.0中的像素繪圖]的可能重複(http://stackoverflow.com/questions/20579658/pixel-drawing-in-sdl2-0) –