Я пытаюсь создать программный рендерер для моей игры на основе плиток и застрял в самом важном шаге: копировании фрагментов пикселей
в буфер кадра.
Прежде всего, вот мой класс:
struct pixel_buffer
{
int width,height,bytesPerPixel;
unsigned char* pixels;
pixel_buffer()
{
pixels = NULL;
}
pixel_buffer(const char* imageName)
{
Image i = LoadImage(imageName);
width = i.width();
height = i.height();
bpp = i.bpp();
pixels = i.duplicate();
i.destroy();
}
pixel_buffer(int w,int h,int bpp)
{
width = w;
height = h;
bytesPerPixel = bpp;
pixels = new unsigned char[w*h*bpp];
}
~pixel_buffer()
{
delete pixels;
}
void attach(int x,int y,const pixel_buffer& other)
{
//How to copy the contents of "other" at x,y offset of pixel buffer ?
}
};
//This is the screen buffer and the contents get uploaded with glDrawArrays
pixel_buffer screen(640,480,4);
//This is a simple tile
pixel_buffer tile("files\\tiles\\brick.bmp");
//Attach tile to screen at offset 50,10
screen.attach(50,10,tile);
И эта часть меня смущает:
void attach(int x,int y,const pixel_buffer& other)
{
//How to copy the contents of "other" at x,y offset of pixel buffer ?
}
Я не уверен, как я должен прикрепить («скопировать») пиксельный буфер тайла к экранному буферу.
Я попробовал это, но не сработало:
void attach(int x,int y,const pixel_buffer& other)
{
memcpy(&pixels[x + y * (this->width * this->bpp),other.pixels,other.width * other.height * other.bpp);
}
Так что я хотел бы попросить о помощи: -D