Разница между форматами пикселей OpenGL и D3D - PullRequest
1 голос
/ 08 января 2011

Я продолжаю пытаться разработать путь OpenGL для моего программного обеспечения.Я использую абстрактные классы с конкретными реализациями для обоих, но, очевидно, мне нужен общий перечислитель формата пикселей, чтобы я мог описать текстуру, backbuffer / frontbuffer и визуализировать целевые форматы между ними.Я предоставляю функцию в каждой конкретной реализации, которая принимает мой абстрактный идентификатор, скажем, R8G8B8A8, и предоставляет конкретной реализации перечисление, подходящее для D3D или OpenGL

. Я могу легко перечислить все форматы пикселей D3D с помощью CheckDeviceFormat.Для OpenGL я сначала перебираю доступные ускоренные форматы Win32 (используя DescribePixelFormat), а затем смотрю на PIXELFORMATDESCRIPTOR, чтобы увидеть, как он составлен, чтобы я мог назначить ему одно из своих перечислений.Вот где начинаются мои проблемы:

Я хочу иметь возможность обнаружить все ускоренные форматы, которые OpenGL поддерживает в любой конкретной системе, как сопоставимые с форматом D3D.Но согласно дескрипторам форматов, нет никаких форматов RGB (все они BGR).Кроме того, такие вещи, как форматы DXT1 - 5, перечисляемые в D3D, не перечисляются с использованием вышеуказанного метода.Что касается последнего, я могу предположить, что если расширение доступно, то это формат с аппаратным ускорением.

Для первого (как интерпретировать дескриптор формата в терминах RGB / BGR и т. Д.) ЯЯ не слишком уверен, как это работает.

Кто-нибудь знает об этом материале?

Ответы приветствуются.

1 Ответ

0 голосов
/ 09 января 2011

Хорошо, я думаю, что нашел то, что искал:

Форматы изображений OpenGL

Некоторые форматы изображений определяются спецификацией (для буфера / глубины-трафарет, текстуры, рендеринг-цели и т. д.), поэтому есть гарантия, что они будут доступны (их перечисление не требуется).Дескриптор формата пикселя все еще может использоваться для определения доступных форматов переднего буфера для данного окна.

...