我正在尝试为我的3D引擎编写OpenGL路径。 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不太满意的其他功能。 IDirect3D9的CheckDeviceType,CheckDeviceFormat,CheckDeviceMultiSampleType,CheckDepthStencilMatch的等价物是什么?我知道我可以使用DescribePixelFormat,但是你需要在使用DC之前创建窗口,但是在你知道要采用什么格式之前你无法正确创建窗口。使用
你可以给我什么提示?
感谢。
答案 0 :(得分:1)
但在知道要使用的格式
之前,无法正确创建窗口
为什么?
标准方法是: