Я занимаюсь программированием GPGPU с OpenGL."cast" GL_R8 to GL_BGRA
Я хочу, чтобы иметь возможность записывать все мои данные в одномерные текстуры в формате GL_R8, так что я в основном могу рассматривать его как объект std:array
.
Затем во время рендеринга я хотел бы иметь возможность установить, как графический процессор должен считывать изображение, например. «отбросить» его до 1024x1024 BGRA.
Возможно ли это?
например. что я хочу:
gpu::array<uint8_t> data(GL_R8, width*height*4);
gpu::bind(data, GL_TEXTURE0, gpu::format::bgra, width, height);
Не мог ли он просто настроить текстуру swizzle от R до RGBA? 'glTexParameteri (GL_TEXTURE _..., GL_TEXTURE_SWIZZLE_ {R, G, B, A}, GL_RED);' – datenwolf
@ datenwolf: На самом деле это не будет делать то, что он хочет. Он передавал бы красный цвет всем четырем компонентам. Он хочет, чтобы каждые четыре последовательных красных компонента стали компонентами RGBA. То есть, чтобы иметь возможность писать один компонент за раз, но * читать * четыре компонента за раз. –