(Uint8*)surface->pixels+y*surface->pitch+x*bpp 를 이해
글쓴이: mmojz / 작성시간: 일, 2005/10/09 - 1:20오후
Uint32 getpixel(SDL_Surface *surface, int x, int y)
{
int bpp = surface->format->BytesPerPixel;
/* Here p is the address to the pixel we want to retrieve */
Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;
이러한 내용이 있습니다..
저 식을 잘 모르겠군요. pitch 가 뭔지도...
Forums:
Re: (Uint8*)surface->pixels+y*surface->pitch+x*bpp 를
SDL을 사용해본지가 오래돼서 기억이 안나는군요 ^^
이런경우에는 어떤 크기와 해상도의 Surface구조체를 만드시고 구조체의 각각의 멤버값을 출력해보세요. 그리고 끼워맞추시면 될것같네요.
특정위치의(x, y)의 픽셀값을 Uint8배열에서 찾아내는것 같은데...
Re: (Uint8*)surface->pixels+y*surface->pitch+x*bpp 를
일단 picth란것이 무엇이냐면,
서페이스를 작성하였을때 서페이스의 크기가 딱 Width * Height라면 좋겠지만
실상은 메모리를 잡을때 2의 배수던가... 2의 승수로 맞추는편이 좋기때문에 더 커지는 경우가 있습니다.
picth는 서페이스 한 라인의 실제 크기라고 생각하시면 됩니다.
그래서 pitch >= width 입니다.
그리고 나중에 bpp를 곱해주는 이유는... 1바이트가 한 픽셀이 아니라, 화면의 해상도에 따라 다르기 때문입니다.
───────────────────────
yaourt -S gothick elegant
khris'log
댓글 달기