Я пытался написать программу, которая использует Allegro 5 для обработки 2D-рендеринга и Ogre для 3D-рендеринга, но у меня были проблемы с инициализацией, у меня было большинство проблем, которые были hInstance окна, но теперь проблема в том, что Ogre::D3D9RenderWindow::setDevice()
принимает только тип Ogre, который устанавливается ID3Device9
в соответствии со ссылкой на Ogre API, а не тем, что возвращает 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;
}