Irrlicht中默认的和一般的opengl程序一样都是控制台+一个绘图窗口的,在Irrrlicht中有一个例子是把irrlicht程序嵌入win32绘图窗口下。具体代码如下:
HWND hIrrlichtWindow =
CreateWindow("BUTTON", "", WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
50, 80, 320, 220, hWnd, NULL, hInstance, NULL);
irr::SIrrlichtCreationParameters param;
param.WindowId = reinterpret_cast(hIrrlichtWindow); // hColorButton
param.DriverType = video::EDT_OPENGL;
irr::IrrlichtDevice* device = irr::createDeviceEx(param);
返回的device指针就是一个绘图设备了,其实思想很简单,就是创建一个窗体返回窗体句柄,这个句柄作为SIrrlichtCreationParameters的windowID即可;其实QT下面实现完全可以用这个方法,在QWidget类下有个成员函数
winId();所以在QT中可以创建一个QWidget类然后用这个函数返回win32的窗体句柄,再进行以上操作就可以了;目前只发现这一种方式,winId函数介绍如下,可能会出现问题,所以如果有其他更好的方式希望各位指教,;
WId QWidget::winId () const
返回窗口部件的窗口系统标识符。
原则上是可以移植的,但是如果使用了它,一定是做了一些不可移植的事情。请留心。
也可以参考find()。