我一直在尝试编写一个程序,它使用 Allegro 5 来处理 2D 渲染和使用 Ogre 来处理 3D 渲染,但是我在初始化时遇到了问题,我已经解决了大部分问题,即窗口的 hInstance,但是现在的问题是,它只采用 Ogre 的类型,并且根据 Ogre API 参考Ogre::D3D9RenderWindow::setDevice()
由 an 设置,而不是返回的是. 我需要帮助来弄清楚如何将.ID3Device9
al_get_d3d9_device()
LPDIRECT3DDEVICE9
LPDIRECT3DDEVICE9
ID3Device9
这是我到目前为止的代码:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
ALLEGRO_DISPLAY *al_display = NULL;
if(!al_init())
{
fprintf(stderr, "Cannot initialize allegro");
return -1;
}
al_display = al_create_display(640, 480);
if(!al_display)
{
fprintf(stderr,"Cannot initialize the display");
return -1;
}
HWND hWnd = al_get_win_window_handle(al_display);
HINSTANCE hInst = (HINSTANCE)GetWindowLong( hWnd, GWL_HINSTANCE);
Ogre::D3D9RenderWindow ogre_window(hInst);
ogre_window.setDevice(al_get_d3d_device(al_display)); // Function only takes an Ogre::D3D9Device
return 0;
}