Direct3D9::D3D9RenderDevice Class Reference
#include <d3d9renderdevice.h>
Detailed Description
Implements a RenderDevice on top of Direct3D9.(C) 2007 Radon Labs GmbH
Public Member Functions | |
D3D9RenderDevice () | |
constructor | |
virtual | ~D3D9RenderDevice () |
destructor | |
IDirect3DDevice9 * | GetDirect3DDevice () const |
get pointer to the d3d device | |
bool | Open () |
open the device | |
void | Close () |
close the device | |
bool | BeginFrame () |
begin complete frame | |
void | SetVertexBuffer (const Ptr< CoreGraphics::VertexBuffer > &vb) |
set current vertex buffer | |
void | SetIndexBuffer (const Ptr< CoreGraphics::IndexBuffer > &ib) |
set current index buffer | |
void | Draw () |
draw current primitives | |
void | EndPass () |
end current pass | |
void | EndFrame () |
end complete frame | |
void | Present () |
present the rendered scene | |
void | SaveScreenshot (CoreGraphics::ImageFileFormat::Code fmt, const Ptr< IO::Stream > &outStream) |
save a screenshot to the provided stream | |
bool | IsOpen () const |
return true if currently open | |
void | AttachEventHandler (const Ptr< CoreGraphics::RenderEventHandler > &h) |
attach a render event handler | |
void | RemoveEventHandler (const Ptr< CoreGraphics::RenderEventHandler > &h) |
remove a render event handler | |
const Ptr < CoreGraphics::RenderTarget > & | GetDefaultRenderTarget () const |
get default render target | |
void | BeginPass (const Ptr< CoreGraphics::RenderTarget > &rt, const Ptr< CoreGraphics::ShaderInstance > &passShader) |
begin rendering a frame pass | |
void | BeginBatch (CoreGraphics::BatchType::Code batchType, const Ptr< CoreGraphics::ShaderInstance > &batchShader) |
begin rendering a batch inside | |
const Ptr < CoreGraphics::VertexBuffer > & | GetVertexBuffer () const |
get current vertex buffer | |
const Ptr < CoreGraphics::IndexBuffer > & | GetIndexBuffer () const |
get current index buffer | |
void | SetPrimitiveGroup (const CoreGraphics::PrimitiveGroup &pg) |
set current primitive group | |
const CoreGraphics::PrimitiveGroup & | GetPrimitiveGroup () const |
get current primitive group | |
void | EndBatch () |
end current batch | |
bool | IsInBeginFrame () const |
check if inside BeginFrame | |
int | GetRefCount () const |
get the current refcount | |
void | AddRef () |
increment refcount by one | |
void | Release () |
decrement refcount and destroy object if refcount is zero | |
bool | IsInstanceOf (const Rtti &rtti) const |
return true if this object is instance of given class | |
bool | IsInstanceOf (const Util::String &className) const |
return true if this object is instance of given class by string | |
bool | IsInstanceOf (const Util::FourCC &classFourCC) const |
return true if this object is instance of given class by fourcc | |
bool | IsA (const Rtti &rtti) const |
return true if this object is instance of given class, or a derived class | |
bool | IsA (const Util::String &rttiName) const |
return true if this object is instance of given class, or a derived class, by string | |
bool | IsA (const Util::FourCC &rttiFourCC) const |
return true if this object is instance of given class, or a derived class, by fourcc | |
const Util::String & | GetClassName () const |
get the class name | |
Util::FourCC | GetClassFourCC () const |
get the class FourCC code | |
Static Public Member Functions | |
static bool | CanCreate () |
test if a compatible render device can be created on this machine | |
static IDirect3D9 * | GetDirect3D () |
get pointer to Direct3D interface, opens Direct3D if not happened yet | |
static void | DumpRefCountingLeaks () |
dump refcounting leaks, call at end of application (NEBULA3_DEBUG builds only!) | |
Protected Member Functions | |
bool | NotifyEventHandlers (const CoreGraphics::RenderEvent &e) |
notify event handlers about an event |
Member Function Documentation
bool Direct3D9::D3D9RenderDevice::CanCreate | ( | ) | [static] |
test if a compatible render device can be created on this machine
Test if the right Direct3D version is installed by trying to open Direct3D.
Reimplemented from Base::RenderDeviceBase.
IDirect3D9 * Direct3D9::D3D9RenderDevice::GetDirect3D | ( | ) | [static] |
get pointer to Direct3D interface, opens Direct3D if not happened yet
Get a pointer to the Direct3D interface. Opens Direct3D if not happened yet.
IDirect3DDevice9 * Direct3D9::D3D9RenderDevice::GetDirect3DDevice | ( | ) | const |
get pointer to the d3d device
Return a pointer to d3d device. Asserts that the device exists.
bool Direct3D9::D3D9RenderDevice::Open | ( | ) |
open the device
Open the render device. When successful, the RenderEvent::DeviceOpen will be sent to all registered event handlers after the Direct3D device has been opened.
Reimplemented from Base::RenderDeviceBase.
void Direct3D9::D3D9RenderDevice::Close | ( | ) |
close the device
Close the render device. The RenderEvent::DeviceClose will be sent to all registered event handlers.
Reimplemented from Base::RenderDeviceBase.
bool Direct3D9::D3D9RenderDevice::BeginFrame | ( | ) |
begin complete frame
Begin a complete frame. Call this once per frame before any rendering happens. If rendering is not possible for some reason (e.g. a lost device) the method will return false. This method may also send the DeviceLost and DeviceRestored RenderEvents to attached event handlers.
Reimplemented from Base::RenderDeviceBase.
void Direct3D9::D3D9RenderDevice::SetVertexBuffer | ( | const Ptr< CoreGraphics::VertexBuffer > & | vb | ) |
set current vertex buffer
Sets the vertex buffer to use for the next Draw().
Reimplemented from Base::RenderDeviceBase.
void Direct3D9::D3D9RenderDevice::SetIndexBuffer | ( | const Ptr< CoreGraphics::IndexBuffer > & | ib | ) |
set current index buffer
Sets the index buffer to use for the next Draw().
Reimplemented from Base::RenderDeviceBase.
void Direct3D9::D3D9RenderDevice::Draw | ( | ) |
draw current primitives
Draw the current primitive group. Requires a vertex buffer, an optional index buffer and a primitive group to be set through the respective methods. To use non-indexed rendering, set the number of indices in the primitive group to 0.
Reimplemented from Base::RenderDeviceBase.
void Direct3D9::D3D9RenderDevice::EndPass | ( | ) |
end current pass
End the current rendering pass. This will flush all texture stages in order to keep the d3d9 resource reference consistent without too much hassle.
Reimplemented from Base::RenderDeviceBase.
void Direct3D9::D3D9RenderDevice::EndFrame | ( | ) |
end complete frame
End a complete frame. Call this once per frame after rendering and presentation has happened, and only if BeginFrame() returns true.
Reimplemented from Base::RenderDeviceBase.
void Direct3D9::D3D9RenderDevice::Present | ( | ) |
present the rendered scene
NOTE: Present() should be called as late as possible after EndFrame() to improve parallelism between the GPU and the CPU.
Reimplemented from Base::RenderDeviceBase.
void Direct3D9::D3D9RenderDevice::SaveScreenshot | ( | CoreGraphics::ImageFileFormat::Code | fmt, | |
const Ptr< IO::Stream > & | outStream | |||
) |
save a screenshot to the provided stream
Save the backbuffer to the provided stream.
Reimplemented from Base::RenderDeviceBase.
void Base::RenderDeviceBase::AttachEventHandler | ( | const Ptr< CoreGraphics::RenderEventHandler > & | h | ) | [inherited] |
attach a render event handler
Attach an event handler to the render device.
void Base::RenderDeviceBase::RemoveEventHandler | ( | const Ptr< CoreGraphics::RenderEventHandler > & | h | ) | [inherited] |
remove a render event handler
Remove an event handler from the display device.
bool Base::RenderDeviceBase::NotifyEventHandlers | ( | const CoreGraphics::RenderEvent & | e | ) | [protected, inherited] |
notify event handlers about an event
Notify all event handlers about an event.
int Core::RefCounted::GetRefCount | ( | ) | const [inline, inherited] |
get the current refcount
Return the current refcount of the object.
void Core::RefCounted::AddRef | ( | ) | [inline, inherited] |
increment refcount by one
Increment the refcount of the object.
void Core::RefCounted::Release | ( | ) | [inline, inherited] |
decrement refcount and destroy object if refcount is zero
Decrement the refcount and destroy object if refcount is zero.
const Util::String & Core::RefCounted::GetClassName | ( | ) | const [inline, inherited] |
get the class name
Get the class name of the object.
Util::FourCC Core::RefCounted::GetClassFourCC | ( | ) | const [inline, inherited] |
get the class FourCC code
Get the class FourCC of the object.
void Core::RefCounted::DumpRefCountingLeaks | ( | ) | [static, inherited] |
dump refcounting leaks, call at end of application (NEBULA3_DEBUG builds only!)
This method should be called as the very last before an application exits.