【发布时间】:2012-03-01 00:19:43
【问题描述】:
我有以下结构,可以使用 QtSDK vs 4.8 将直接 x 场景渲染到 Qt Widget。
main.cpp---->QGraphicsView---->QGraphicsScene
|
V
DXWidget(override paint engine, contains a d3d9device)
现在我不想决定在我的主要功能中使用这两种设备中的哪一种,因此我提出了以下架构。
main.cpp
|
V
MyMainWindow (inherits from QMainWindow)-->GLWidget-->GraphicsView-->GraphicsScene
|
V
DXWidget (contains a DX Device)
现在 OpenGL 渲染周期仍然有效;但是 DirectX 渲染周期在使用此架构时不起作用。屏幕现在呈现为灰色。我认为可能是因为我没有覆盖MyMainWindow中的paintEngine()方法所以我在MyMainWindow中添加了以下逻辑。
QPaintEngine *TFWMainWindow::paintEngine()
{
#ifdef WIN32
if (m_renderMode == DIRECTX)
return NULL;
else if (m_renderMode == OPENGL)
QMainWindow::paintEngine();
#elif __linux__
QMainWindow::paintEngine();
#endif
}
但是,这仍然没有帮助。 OpenGL 仍然使用 Qt 的图形场景和图形视图进行渲染,但是 DirectX 仍然无法正确渲染。我的 WidgetDX 上也有 paintEngine() 重载,但它不起作用。关于如何让 DirectX 在新架构下工作有什么想法吗?
【问题讨论】: