Irrlicht嵌入QT widget中

十年热恋 提交于 2019-12-10 03:04:47

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()。


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!