4

我正在使用 OpenGL(不是 DirectX)编写 CAD 应用程序。在 Windows 8 Pro(64 位)上运行调试版本时,在应用程序正确终止之前,以下消息会打印到调试器的控制台窗口:

DXGI WARNING: Process is terminating. Using simple reporting. Please call ReportLiveObjects() at runtime for standard reporting. [ STATE_CREATION WARNING #0: ]
DXGI WARNING: Live Producer at 0x0000009E51808AD8, Refcount: 2. [ STATE_CREATION WARNING #0: ]
DXGI WARNING:   Live Object at 0x0000009E5180A570, Refcount: 2. [ STATE_CREATION WARNING #0: ]
DXGI WARNING: Live                         Object :      1 [ STATE_CREATION WARNING #0: ]

我不知道这是从哪里来的。DXGI 似乎与我没有使用的 DirectX 有关。有什么提示吗?


更新

按照 Paul-Jan 的建议,我启用了设备调试,这会产生以下消息:

D3D11 INFO: Create ID3D11Context: Name="unnamed", Addr=0x00000015EEB486D0, ExtRef=1, IntRef=0 [ STATE_CREATION INFO #2097225: CREATE_CONTEXT]
D3D11 INFO: Create ID3DDeviceContextState: Name="unnamed", Addr=0x00000015EE96DE70, ExtRef=1, IntRef=0 [ STATE_CREATION INFO #3145735: CREATE_DEVICECONTEXTSTATE]
D3D11 INFO: Create ID3D11BlendState: Name="unnamed", Addr=0x00000015EE97B6A0, ExtRef=1, IntRef=0 [ STATE_CREATION INFO #2097270: CREATE_BLENDSTATE]
D3D11 INFO: Create ID3D11DepthStencilState: Name="unnamed", Addr=0x00000015EE9799F0, ExtRef=1, IntRef=0 [ STATE_CREATION INFO #2097273: CREATE_DEPTHSTENCILSTATE]
D3D11 INFO: Create ID3D11RasterizerState: Name="unnamed", Addr=0x00000015EE97B340, ExtRef=1, IntRef=0 [ STATE_CREATION INFO #2097276: CREATE_RASTERIZERSTATE]
D3D11 INFO: Create ID3D11Sampler: Name="unnamed", Addr=0x00000015EE97AE30, ExtRef=1, IntRef=0 [ STATE_CREATION INFO #2097267: CREATE_SAMPLER]
D3D11 INFO: Create ID3D11Query: Name="unnamed", Addr=0x00000015F25D3060, ExtRef=1, IntRef=0 [ STATE_CREATION INFO #2097279: CREATE_QUERY]
D3D11 INFO: Create ID3D11Texture2D: Name="unnamed", Addr=0x00000015EEB8CA50, ExtRef=1, IntRef=0 [ STATE_CREATION INFO #2097234: CREATE_TEXTURE2D]
D3D11 INFO: Create ID3D11Texture2D: Name="unnamed", Addr=0x00000015EA313BF0, ExtRef=1, IntRef=0 [ STATE_CREATION INFO #2097234: CREATE_TEXTURE2D]
D3D11 INFO: Create ID3D11Texture2D: Name="unnamed", Addr=0x00000015EEB41EC0, ExtRef=1, IntRef=0 [ STATE_CREATION INFO #2097234: CREATE_TEXTURE2D]
D3D11 INFO: Destroy ID3D11Texture2D: Name="unnamed", Addr=0x00000015EA313BF0 [ STATE_CREATION INFO #2097236: DESTROY_TEXTURE2D]
D3D11 INFO: Destroy ID3D11Texture2D: Name="unnamed", Addr=0x00000015EEB41EC0 [ STATE_CREATION INFO #2097236: DESTROY_TEXTURE2D]
D3D11 INFO: Destroy ID3D11Texture2D: Name="unnamed", Addr=0x00000015EEB8CA50 [ STATE_CREATION INFO #2097236: DESTROY_TEXTURE2D]
D3D11 WARNING: Process is terminating. Using simple reporting. Please call ReportLiveObjects() at runtime for standard reporting. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: Live Producer at 0x00000015EEA57E08, Refcount: 3. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING:  Live Object at 0x00000015EEB486D0, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING:  Live Object at 0x00000015EE96DE70, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING:  Live Object at 0x00000015EE97B6A0, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING:  Live Object at 0x00000015EE9799F0, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING:  Live Object at 0x00000015EE97B340, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING:  Live Object at 0x00000015EE97AE30, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING:  Live Object at 0x00000015F25D3060, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: Live                         Object :      7 [ STATE_CREATION WARNING #0: UNKNOWN]

DXGI WARNING: Process is terminating. Using simple reporting. Please call ReportLiveObjects() at runtime for standard reporting. [ STATE_CREATION WARNING #0: ]
DXGI WARNING: Live Producer at 0x00000015F25D2EB8, Refcount: 2. [ STATE_CREATION WARNING #0: ]
DXGI WARNING:   Live Object at 0x00000015EE9AF870, Refcount: 2. [ STATE_CREATION WARNING #0: ]
DXGI WARNING: Live                         Object :      1 [ STATE_CREATION WARNING #0: ]
4

2 回答 2

6

在 Windows Vista 及更高版本中,DirectX 和 OpenGL 实际上都通过 DXGI 工作。DXGI 管理设备。producer实际使用的渲染 API(OpenGL / DirectX)在 DXGI中称为 a ,因此我们可以安全地假设该消息是关于您的通用 OpenGL 使用情况。

当它抱怨生产者和活动对象的引用计数为 2 时,可能是你没有正确地破坏你的 OpenGL 上下文吗?(即成功调用wglMakeCurrent( NULL )and wglDeleteContext)这样的遗漏根本不会是一个实际问题,因为两者都会在进程终止时被隐式销毁,但需要警告。

于 2012-11-15T07:16:03.387 回答
0

在使用 DirectX 11 的项目中,我遇到了相同的警告信息(ReportLiveObjects、Live Producer、Live Object、STATE_CREATION WARNING #0: UNKNOWN,.....)。但这些信息对我来说信息量不够,而且对你来说,我想。

对于我的项目,问题原来是纹理文件(.dds)的格式与我程序的其他部分不兼容,因此程序无法正确加载纹理。在我将其转换为正确的格式后。此警告信息消失了。

所以我在这里的结论是,您可能需要使用一些调试技术,例如断点、日志记录等,以便跟踪您的案例中真正的问题是什么。

于 2014-02-26T22:52:42.853 回答