Irrlicht嵌入QT widget中

Irrlicht中默認的和通常的opengl程序同樣都是控制檯+一個繪圖窗口的,在Irrrlicht中有一個例子是把irrlicht程序嵌入win32繪圖窗口下。具體代碼以下:html

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類下有個成員函數ide

winId();因此在QT中能夠建立一個QWidget類而後用這個函數返回win32的窗體句柄,再進行以上操做就能夠了;目前只發現這一種方式,winId函數介紹以下,可能會出現問題,因此若是有其餘更好的方式但願各位指教,函數

WId QWidget::winId () const

返回窗口部件的窗口系統標識符。spa

原則上是能夠移植的,可是若是使用了它,必定是作了一些不可移植的事情。請留心。指針

也能夠參考find()。code

相關文章
相關標籤/搜索