Я пытаюсь закодировать путь OpenGL для моего 3D-движка. Путь D3D перечисляет все адаптеры устройств, все режимы (под режимом я имею в виду битовую глубину, размеры, доступное оконное отображение и частоту обновления) для каждого адаптера, а затем все форматы пикселей, доступные для данного режима и адаптера, наряду с некоторыми полезными заглавными буквами (шейдер) версия, типы фильтров и т. д.). Итак, я получил следующие защищенные функции в классе:
// Enumerate all back/front buffer combinations.
virtual void EnumerateBackFrontBufferCombinations(CComPtr<IDirect3D9>& d3d9);
// Enumerate all depth/stencil formats.
virtual void EnumerateDepthStencilFormats(CComPtr<IDirect3D9>& d3d9);
// Enumerate all multi-sample formats.
virtual void EnumerateMultiSampleTypes(CComPtr<IDirect3D9>& d3d9);
// Enumerate all device formats, i.e. dynamic, static, render target, etc.
virtual void EnumerateMapFormats(CComPtr<IDirect3D9>& d3d9);
// Enumerate all capabilities.
virtual void EnumerateCapabilities(CComPtr<IDirect3D9>& d3d9);
Адаптеры перечисляются с EnumDisplayDevices, режимы (разрешения и частоты обновления) перечисляются с EnumDisplaySettings, так что это может быть сделано для GL или D3D. Другие функции, в которых я не так уверен с OpenGL. Каковы эквиваленты для IDDirect3D9 CheckDeviceType, CheckDeviceFormat, CheckDeviceMultiSampleType, CheckDepthStencilMatch? Я знаю, что могу использовать DescribePixelFormat, учитывая DC, но вам нужно создать окно, прежде чем вы сможете использовать DC с ним, но вы не можете создать окно правильно, пока не знаете, какие форматы вы собираетесь использовать использовать.
Какие советы вы можете мне дать?
Спасибо.