DI-Guy SDK Documentation  13.8
diguyGraphicsInstanceGroup Class Reference

A class that represents an instance group. An instance group is a collection of meshes, attached to shapes, that can be drawn with a single draw call using supplemental instance data information. An instance group can contain segmented meshes or skinned mesh. More...

#include <diguyGraphicsInstanceGroup.h>

Inheritance diagram for diguyGraphicsInstanceGroup:
diguyOglGraphicsInstanceGroup diguyOsgGraphicsInstanceGroup

Public Member Functions

Accessor Functions

The functions in this section provide access to data in this object.

They are designed to be called by DI-Guy programmers.

Unless otherwise noted all functions in this class section are callable from:

  • C++
  • Script
long get_uid () const
 Instance groups are assigned a unique identifier, or uid. More...
 
int get_num_instances () const
 Returns the number of instances in the instance group. More...
 
int get_start_base_offset () const
 Return the offset, in floats, of the base data for the instance group. More...
 
int get_start_link_offset () const
 Return the offset, in floats, of the link data for the instance group. More...
 
int get_num_links () const
 Returns the number of links for instances with skinned geometry. More...
 
void get_debug_color (float &r, float &g, float &b, float &a) const
 Returns the debug color of an instance group. More...
 
int get_show_debug_colors () const
 Returns if debug colors should be used to render. More...
 
diguyGraphicsShaderProgramget_shader_program () const
 This function returns a pointer to the shader program designated for this instance group. More...
 
diguyGraphicsMeshget_diguy_mesh ()
 Returns a pointer to the low level geometry mesh object that comprises the renderable for the instances in the group. More...
 
int get_graphics_state_switch_index ()
 Returns a index to which swapped texture state to use for drawing this instance group. More...
 
const float * get_instance_data ()
 Returns a pointer to the raw instance data for the instance group. More...
 
int get_instance_data_size ()
 Return the size of the data for the instance group in bytes. More...
 
const float * get_instance_base_data ()
 Returns a pointer to the raw instance data for the instance group. More...
 
int get_instance_base_data_size ()
 Return the size of the data for the instance group in bytes. More...
 
const float * get_instance_link_data ()
 Returns a pointer to the raw instance data for the instance group. More...
 
int get_instance_link_data_size ()
 Return the size of the data for the instance group in bytes. More...
 
int get_instance_data_all_groups_size ()
 Return the size of the data for all instance groups in bytes. More...
 
int get_num_extra_per_instance_data_floats ()
 Return the number of extra floats the user has requested for the tbo, must be multiple of 4. More...
 
virtual void build ()
 This function will be called by DI-Guy when it is time for a renderer specific instance group to be created. More...
 
virtual void unbuild ()
 This function will be called by DI-Guy when it is time for a instance group to be destroyed. More...
 
virtual void update ()
 This function will be called by DI-Guy when it is time for the instance group to be updated with new data. More...
 
virtual int bind_instance_group_data (int base_start, int link_start, int count)
 This function will be called by DI-Guy when variables for using the instance data needs to be sent to the graphics card. More...
 
virtual int bind_instance_buffer_data (int num_floats, const float *instance_data)
 This function will be called by DI-Guy when data for instance groups needs to be sent to the graphics card. More...
 
diguyGraphicsShapeget_instanced_shape_at_index (int index)
 Returns a pointer to a instanced shape. index should be less then get_num_instances() More...
 
diguyGraphicsStateget_graphics_state ()
 returns a pointer to the instanced state More...
 

Private Functions

The functions and variables past this point are for internal use only.

No external access to them is expected or necessary.

bdiInstanceGroupm_scripted_object
 A pointer to internal data. More...
 
class bdiInstanceGroup
 
class bdiGraphicsFactory
 
bdiInstanceGroupget_scripted_object ()
 
 diguyGraphicsInstanceGroup (void *internal_data)
 A protected constructor. More...
 
virtual ~diguyGraphicsInstanceGroup ()
 A protected destructor. More...
 

Detailed Description

A class that represents an instance group. An instance group is a collection of meshes, attached to shapes, that can be drawn with a single draw call using supplemental instance data information. An instance group can contain segmented meshes or skinned mesh.

Can be subclassed by filling out the diguy_graphics_set_instance_group_create_func().

Constructor & Destructor Documentation

diguyGraphicsInstanceGroup::diguyGraphicsInstanceGroup ( void *  internal_data)
protected

A protected constructor.

Constructors are called automatically by DI-Guy.

virtual diguyGraphicsInstanceGroup::~diguyGraphicsInstanceGroup ( )
protectedvirtual

A protected destructor.

Destructors are called automatically by DI-Guy.

Member Function Documentation

long diguyGraphicsInstanceGroup::get_uid ( ) const

Instance groups are assigned a unique identifier, or uid.

This function returns the uid of the instance group.

Note: uid will change between DI Guy runs.

Returns: uid of the instance group

int diguyGraphicsInstanceGroup::get_num_instances ( ) const

Returns the number of instances in the instance group.

int diguyGraphicsInstanceGroup::get_start_base_offset ( ) const

Return the offset, in floats, of the base data for the instance group.

Returns:

offset, in bytes, of the instance group in the buffer data

int diguyGraphicsInstanceGroup::get_start_link_offset ( ) const

Return the offset, in floats, of the link data for the instance group.

Returns:

offset, in bytes, of the instance group in the buffer data

int diguyGraphicsInstanceGroup::get_num_links ( ) const

Returns the number of links for instances with skinned geometry.

Note: will return 0 if the geometry is not skinned

Returns:

number of links

void diguyGraphicsInstanceGroup::get_debug_color ( float &  r,
float &  g,
float &  b,
float &  a 
) const

Returns the debug color of an instance group.

Returns:

RGBA color

int diguyGraphicsInstanceGroup::get_show_debug_colors ( ) const

Returns if debug colors should be used to render.

diguyGraphicsShaderProgram* diguyGraphicsInstanceGroup::get_shader_program ( ) const

This function returns a pointer to the shader program designated for this instance group.

if any. Shader programs are shared objects usable meshes and instance groups. by many meshes.

Returns:

pointer to diguyGraphicsShaderProgram, or NULL if this instance group does not have a shader specified

diguyGraphicsMesh* diguyGraphicsInstanceGroup::get_diguy_mesh ( )

Returns a pointer to the low level geometry mesh object that comprises the renderable for the instances in the group.

Returns:

pointer of type diguyGraphicsMesh

int diguyGraphicsInstanceGroup::get_graphics_state_switch_index ( )

Returns a index to which swapped texture state to use for drawing this instance group.

Only meaningful if respect texture states is on.

const float* diguyGraphicsInstanceGroup::get_instance_data ( )

Returns a pointer to the raw instance data for the instance group.

Returns:

pointer to the instance data

int diguyGraphicsInstanceGroup::get_instance_data_size ( )

Return the size of the data for the instance group in bytes.

Returns:

size, in bytes, of the instance buffer data

const float* diguyGraphicsInstanceGroup::get_instance_base_data ( )

Returns a pointer to the raw instance data for the instance group.

int diguyGraphicsInstanceGroup::get_instance_base_data_size ( )

Return the size of the data for the instance group in bytes.

const float* diguyGraphicsInstanceGroup::get_instance_link_data ( )

Returns a pointer to the raw instance data for the instance group.

int diguyGraphicsInstanceGroup::get_instance_link_data_size ( )

Return the size of the data for the instance group in bytes.

int diguyGraphicsInstanceGroup::get_instance_data_all_groups_size ( )

Return the size of the data for all instance groups in bytes.

int diguyGraphicsInstanceGroup::get_num_extra_per_instance_data_floats ( )

Return the number of extra floats the user has requested for the tbo, must be multiple of 4.

virtual void diguyGraphicsInstanceGroup::build ( )
virtual

This function will be called by DI-Guy when it is time for a renderer specific instance group to be created.

All information to construct the instance group for consumption by either an immediate mode or scene graph renderer is avaiable via the Accessor Functions above when this function is called.

Immediate Mode:

Immediate mode renderers do not usually override this function.

Scene Graph:

Scene graph renderers override this function to create scene graph specific objects to handle mangement and rendering of the instance group.

Callable From:

  • N/A (automatically called by DI-Guy Graphics API during the Build Stage)

Reimplemented in diguyOsgGraphicsInstanceGroup, and diguyOglGraphicsInstanceGroup.

virtual void diguyGraphicsInstanceGroup::unbuild ( )
virtual

This function will be called by DI-Guy when it is time for a instance group to be destroyed.

Immediate Mode:

Immediate mode renderers may override this function, to destroy any object that may have been created by build().

Scene Graph:

Scene graph renderers usually do override this function, to destroy any object that may have been created by build().

Callable From:

  • N/A (automatically called by DI-Guy Graphics API during the Unbuild Stage)

Reimplemented in diguyOsgGraphicsInstanceGroup, and diguyOglGraphicsInstanceGroup.

virtual void diguyGraphicsInstanceGroup::update ( )
virtual

This function will be called by DI-Guy when it is time for the instance group to be updated with new data.

Immediate Mode:

Immediate mode renderers usually do not override this function.

Scene Graph:

Scene graph renderers should override this function if they are supporting instancing.

Callable From:

  • N/A (automatically called by DI-Guy Graphics API during Update Stage)

Reimplemented in diguyOsgGraphicsInstanceGroup.

virtual int diguyGraphicsInstanceGroup::bind_instance_group_data ( int  base_start,
int  link_start,
int  count 
)
virtual

This function will be called by DI-Guy when variables for using the instance data needs to be sent to the graphics card.

For GLSL-based shaders, these values are typically passed into the vertex shader via uniform variables.

Immediate Mode:

Immediate mode renderers usually do override this function.

Scene Graph:

Scene graph renderers usually do not override this function, but instead use diguyGraphicsShape::get_shader_matrix_data() during the Update Stage.

Callable From:

  • N/A (automatically called by DI-Guy Graphics API during the Draw Stage)

Reimplemented in diguyOglGraphicsInstanceGroup.

virtual int diguyGraphicsInstanceGroup::bind_instance_buffer_data ( int  num_floats,
const float *  instance_data 
)
virtual

This function will be called by DI-Guy when data for instance groups needs to be sent to the graphics card.

Immediate Mode:

Immediate mode renderers usually do override this function.

Scene Graph:

Scene graph renderers usually do not override this function, but instead update the instance data in diguyGraphicsInstanceGroup::update()

Callable From:

  • N/A (automatically called by DI-Guy Graphics API during the Draw Stage)

Reimplemented in diguyOglGraphicsInstanceGroup.

diguyGraphicsShape* diguyGraphicsInstanceGroup::get_instanced_shape_at_index ( int  index)

Returns a pointer to a instanced shape. index should be less then get_num_instances()

diguyGraphicsState* diguyGraphicsInstanceGroup::get_graphics_state ( )

returns a pointer to the instanced state

bdiInstanceGroup* diguyGraphicsInstanceGroup::get_scripted_object ( )
inline

Friends And Related Function Documentation

friend class bdiInstanceGroup
friend
friend class bdiGraphicsFactory
friend

Member Data Documentation

bdiInstanceGroup* diguyGraphicsInstanceGroup::m_scripted_object
private

A pointer to internal data.


The documentation for this class was generated from the following file: