54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#include <ddraw/direct3d.hpp>
|
|
#include <ddraw/devenum.hpp>
|
|
#include <ddraw/devdesc.hpp>
|
|
#include <ddraw/surface.hpp>
|
|
#include <ddraw/device3d.hpp>
|
|
|
|
Direct3D::Direct3D(void)
|
|
{
|
|
}
|
|
|
|
Direct3D::Direct3D(const Direct3D &someDirect3D)
|
|
{ // private implementation
|
|
*this=someDirect3D;
|
|
}
|
|
|
|
Direct3D::~Direct3D()
|
|
{
|
|
destroy();
|
|
}
|
|
|
|
Direct3D &Direct3D::operator=(const Direct3D &/*someDirect3D*/)
|
|
{ // private implementation
|
|
return *this;
|
|
}
|
|
|
|
void Direct3D::destroy(void)
|
|
{
|
|
if(!isOkay())return;
|
|
operator->()->Release();
|
|
SmartPointer<IDirect3D3>::destroy();
|
|
}
|
|
|
|
BOOL Direct3D::enumerateDevice(DeviceEnumerator &deviceEnumerator)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
deviceEnumerator.enumeratedDevices().remove();
|
|
operator->()->EnumDevices(DeviceEnumerator::enumDeviceCallback,&deviceEnumerator);
|
|
return TRUE;
|
|
}
|
|
|
|
DirectDrawError Direct3D::createDevice(const DeviceDescription &deviceDescription,Surface &surface,DirectDevice3D &device3D)
|
|
{
|
|
LPDIRECT3DDEVICE3 lpDirect3DDevice3;
|
|
DirectDrawError status;
|
|
|
|
// device3D.destroy();
|
|
if(!isOkay())return DirectDrawError::GenericFailure;
|
|
status=DirectDrawError::DirectDrawResult(operator->()->CreateDevice(deviceDescription.guid(),(IDirectDrawSurface4*)((SmartPointer<IDirectDrawSurface4>&)surface),&lpDirect3DDevice3,0));
|
|
if(!status.okResult())return status;
|
|
device3D=lpDirect3DDevice3;
|
|
return status;
|
|
// (SmartPointer<IDirect3DDevice3>&)device3D=lpDirect3DDevice3;
|
|
}
|