GFXShaderConstBuffer Class Reference

#include <gfxShader.h>

Inheritance diagram for GFXShaderConstBuffer:

Inheritance graph
[legend]
List of all members.

Detailed Description

GFXShaderConstBuffer is a collection of string/value pairs that are sent to a shader.

Under the hood, the string value pair is mapped to a block of memory that can be blasted to a shader with one call (ideally)


Public Member Functions

virtual GFXShadergetShader ()=0
 Return the shader that created this buffer.
Set shader constant values
Actually set shader constant values
Parameters:
name Name of the constant, this should be a name contained in the array returned in getShaderConstDesc, if an invalid name is used, its ignored.


virtual void set (GFXShaderConstHandle *handle, const F32 f)=0
virtual void set (GFXShaderConstHandle *handle, const Point2F &fv)=0
virtual void set (GFXShaderConstHandle *handle, const Point3F &fv)=0
virtual void set (GFXShaderConstHandle *handle, const Point4F &fv)=0
virtual void set (GFXShaderConstHandle *handle, const ColorF &fv)=0
virtual void set (GFXShaderConstHandle *handle, const S32 f)=0
virtual void set (GFXShaderConstHandle *handle, const Point2I &fv)=0
virtual void set (GFXShaderConstHandle *handle, const Point3I &fv)=0
virtual void set (GFXShaderConstHandle *handle, const Point4I &fv)=0
virtual void set (GFXShaderConstHandle *handle, const AlignedArray< F32 > &fv)=0
virtual void set (GFXShaderConstHandle *handle, const AlignedArray< Point2F > &fv)=0
virtual void set (GFXShaderConstHandle *handle, const AlignedArray< Point3F > &fv)=0
virtual void set (GFXShaderConstHandle *handle, const AlignedArray< Point4F > &fv)=0
virtual void set (GFXShaderConstHandle *handle, const AlignedArray< S32 > &fv)=0
virtual void set (GFXShaderConstHandle *handle, const AlignedArray< Point2I > &fv)=0
virtual void set (GFXShaderConstHandle *handle, const AlignedArray< Point3I > &fv)=0
virtual void set (GFXShaderConstHandle *handle, const AlignedArray< Point4I > &fv)=0
virtual void set (GFXShaderConstHandle *handle, const MatrixF &mat, const GFXShaderConstType matrixType=GFXSCT_Float4x4)=0
 Specify the type of the matrix, only the GFXSCT types ending in NxN are valid.
virtual void set (GFXShaderConstHandle *handle, const MatrixF *mat, const U32 arraySize, const GFXShaderConstType matrixType=GFXSCT_Float4x4)=0
 Same as above, but in array form.
GFXResource interface
virtual const String describeSelf () const =0
 The resource should put a description of itself (number of vertices, size/width of texture, etc.) in buffer.


Member Function Documentation

virtual GFXShader* GFXShaderConstBuffer::getShader (  )  [pure virtual]

Return the shader that created this buffer.

Implemented in GFXD3D9ShaderConstBuffer, and GFXGLShaderConstBuffer.

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const F32  f 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const Point2F fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const Point3F fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const Point4F fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const ColorF fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const S32  f 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const Point2I fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const Point3I fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const Point4I fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const AlignedArray< F32 > &  fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const AlignedArray< Point2F > &  fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const AlignedArray< Point3F > &  fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const AlignedArray< Point4F > &  fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const AlignedArray< S32 > &  fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const AlignedArray< Point2I > &  fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const AlignedArray< Point3I > &  fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const AlignedArray< Point4I > &  fv 
) [pure virtual]

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const MatrixF mat,
const GFXShaderConstType  matrixType = GFXSCT_Float4x4 
) [pure virtual]

Specify the type of the matrix, only the GFXSCT types ending in NxN are valid.

Implemented in GFXD3D9ShaderConstBuffer, and GFXGLShaderConstBuffer.

virtual void GFXShaderConstBuffer::set ( GFXShaderConstHandle handle,
const MatrixF mat,
const U32  arraySize,
const GFXShaderConstType  matrixType = GFXSCT_Float4x4 
) [pure virtual]

Same as above, but in array form.

We don't use an AlignedArray here because the packing of non 4x4 arrays will differ more than we can express with an AlignedArray. So the API is responsible for marshaling the data into the format it needs. In practice, that means that 4x4 matrices are going to be quickest (straight memory copy on D3D and GL). Other dimensions will require "interesting" code to handle marshaling.

Implemented in GFXD3D9ShaderConstBuffer, and GFXGLShaderConstBuffer.

virtual const String GFXShaderConstBuffer::describeSelf (  )  const [pure virtual]

The resource should put a description of itself (number of vertices, size/width of texture, etc.) in buffer.

Implements GFXResource.

Implemented in GFXD3D9ShaderConstBuffer, and GFXGLShaderConstBuffer.