Использование glDrawArrays для загрузки кадровых буферов? - PullRequest
1 голос
/ 24 февраля 2012

Я пытаюсь создать программный рендерер для моей игры на основе плиток и застрял в самом важном шаге: копировании фрагментов пикселей в буфер кадра.

Прежде всего, вот мой класс:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...