The Dirtchamber
A mixed reality testing environment for real-time global illumination algorithms
|
Main D3D mesh interface class. More...
#include <mesh.h>
Public Member Functions | |
virtual void | set_shader (ID3D11Device *device, ID3DBlob *input_binary, ID3D11VertexShader *vs, ID3D11PixelShader *ps) |
Sets the input layout, vertex- and pixel shader of this mesh. | |
virtual void | set_shader_slots (INT diffuse_tex=-1, INT normal_tex=-1, INT specular_tex=-1) |
Sets three register numbers to identify the slots the pixel shader is looking for surface textures. | |
virtual void | create (ID3D11Device *device, const tstring &filename)=0 |
Create a mesh from a given filename. | |
virtual void | destroy () |
Destroy a mesh and free all its resources. | |
virtual void | render (ID3D11DeviceContext *context, DirectX::XMFLOAT4X4 *to_clip=nullptr)=0 |
Renders the mesh using the shaders previously set. More... | |
Public Member Functions inherited from dune::mesh< DirectX::XMFLOAT3 > | |
virtual size_t | num_vertices ()=0 |
Returns the number of vertices of a mesh. | |
virtual size_t | num_faces ()=0 |
Returns the number of faces of a mesh. | |
Public Member Functions inherited from dune::aabb< DirectX::XMFLOAT3 > | |
DirectX::XMFLOAT3 | center () const |
Returns the center of the bounding-box. | |
DirectX::XMFLOAT3 | bb_max () const |
Returns the maximum (upper/right/back) of the bounding-box. | |
DirectX::XMFLOAT3 | bb_min () const |
Returns the minimum (lower/left/front) of the bounding-box. | |
virtual void | set_world (const DirectX::XMFLOAT4X4 &world) |
Update the world matrix of this mesh. | |
const DirectX::XMFLOAT4X4 & | world () |
Returns the current world matrix of this mesh. | |
Additional Inherited Members | |
Protected Member Functions inherited from dune::aabb< DirectX::XMFLOAT3 > | |
void | init_bb (const DirectX::XMFLOAT3 &p) |
Initialize the bounding-box with a first point. More... | |
void | update_bb (const DirectX::XMFLOAT3 &p) |
Update the bounding-box with a new point. More... | |
Main D3D mesh interface class.
This class represents the base interface of a Direct3D mesh. A Direct3D mesh needs at least a vertex and a pixel shader, a vertex layout descriptor and shader registers to upload diffuse, normal and specular textures. Each mesh object has a set_shader function to set input layout, vertex and pixel shader from outside. Each mesh object additionally has a set_shader_slots function to externally control the register slots to look for texture objects when rendering a mesh.
|
pure virtual |
Renders the mesh using the shaders previously set.
When calling render, the mesh will be rendered using the shaders set with set_shaders(). Additionally, a clip-space matrix can be set to clip away unseen geometry.
context | A Direct3D context. |
to_clip | A clip-space matrix against which the mesh is being culled. |
Implemented in dune::gilga_mesh, dune::simple_mesh, dune::sdk_mesh, and dune::composite_mesh.
Referenced by dune::light_propagation_volume::visualize().