Заполнить текстуры C++ Cinder значениями RGBA

Я использую библиотеку Cinder и хочу создать текстуру, заполненную значениями RGBA, которые я сохранил в массиве. Там нет полезных объяснений в Интернете.

1 ответ

Решение

Раньше я не использовал cinder, но быстрое изучение документации позволяет предположить, что вы можете загрузить текстуру либо из файла, либо из Surface.

Поэтому, глядя на документы, вы можете создать поверхность следующим образом:

cinder::Surface8u surf( 128, 128, SurfaceChannelOrder::RGBA );

Затем вы можете заполнить его с помощью функции getData следующим образом:

uint8_t* pCols = surf.getData();
for( int y = 0; y < 128; y++ )
{
    for( int x = 0; x < 128; x++ )
    {
        // Fill each pixel with red.
        const idx = (y * (128 * 4)) + (x * 4);
        pCols[idx + 0] = 0xff;
        pCols[idx + 1] = 0x00;
        pCols[idx + 2] = 0x00;
        pCols[idx + 3] = 0xff;
    }
}

Затем вы загрузите текстуру с поверхности следующим образом:

cinder::gl::Texture texture( surf );
Другие вопросы по тегам