RenderStack 11.06.1
Public Member Functions | Properties
RenderStack.Mesh.Mesh Class Reference

Basic renderable shape, vertex buffer and index buffer. Can also have multiple representations, see MeshMode. More...

Inheritance diagram for RenderStack.Mesh.Mesh:
RenderStack.Mesh.IMeshSource

List of all members.

Public Member Functions

void ClearProgramAttributeBindings ()
void Dispose ()
 Mesh (BufferUsageHint bufferUsageHint)
Buffer IndexBuffer (MeshMode meshMode)
bool HasIndexBuffer (MeshMode meshMode)
Buffer FindOrCreateIndexBuffer (MeshMode meshMode, BufferTarget bufferTarget, BufferUsageHint bufferUsageHint, DrawElementsType indexType, BeginMode beginMode)
void ApplyAttributes (Program program, MeshMode meshMode, bool enable)
void ApplyAttributes (Program program, MeshMode mode)
void End ()

Properties

Buffer VertexBuffer [get, set]

Detailed Description

Note:
Mostly stable, somewhat experimental.

Definition at line 38 of file Mesh.cs.


Constructor & Destructor Documentation

RenderStack.Mesh.Mesh.Mesh ( BufferUsageHint  bufferUsageHint)

Definition at line 92 of file Mesh.cs.

Referenced by RenderStack.UI.NinePatch.NinePatch(), and RenderStack.UI.TextBuffer.TextBuffer().

        {
            VertexBuffer = new Buffer(
                BufferTarget.ArrayBuffer,
                bufferUsageHint
            );
        }

Member Function Documentation

void RenderStack.Mesh.Mesh.ClearProgramAttributeBindings ( )

Definition at line 58 of file Mesh.cs.

References RenderStack.Graphics.AttributeBindings.Clear().

        {
            programAttributeBindings.Clear();
        }
void RenderStack.Mesh.Mesh.Dispose ( )

Definition at line 68 of file Mesh.cs.

        {
            if(!disposed)
            {
                if(VertexBuffer != null)
                {
                    VertexBuffer.Dispose();
                    VertexBuffer = null;
                }

                for(int i = 0; i < (int)(MeshMode.Count); ++i)
                {
                    if(indexBuffers[i] != null)
                    {
                        indexBuffers[i].Dispose();
                        indexBuffers[i] = null;
                    }
                }

                GC.SuppressFinalize(this);
                disposed = true;
            }
        }
Buffer RenderStack.Mesh.Mesh.IndexBuffer ( MeshMode  meshMode)

Definition at line 100 of file Mesh.cs.

        {
            return indexBuffers[(int)meshMode];
        }
bool RenderStack.Mesh.Mesh.HasIndexBuffer ( MeshMode  meshMode)

Definition at line 104 of file Mesh.cs.

        {
            if(meshMode == MeshMode.NotSet) return false;
            return indexBuffers[(int)meshMode] != null;
        }
Buffer RenderStack.Mesh.Mesh.FindOrCreateIndexBuffer ( MeshMode  meshMode,
BufferTarget  bufferTarget,
BufferUsageHint  bufferUsageHint,
DrawElementsType  indexType,
BeginMode  beginMode 
)

Definition at line 109 of file Mesh.cs.

References RenderStack.Graphics.Buffer.BeginMode, RenderStack.Graphics.Buffer.BufferTarget, and RenderStack.Graphics.Buffer.DrawElementsType.

        {
            if(HasIndexBuffer(meshMode) == false)
            {
                var indexBuffer = new Buffer(
                    bufferTarget,
                    bufferUsageHint,
                    indexType,
                    beginMode
                );
                indexBuffers[(int)meshMode] = indexBuffer;

                return indexBuffer;
            }
            else
            {
                Buffer indexBuffer = indexBuffers[(int)meshMode];
                if(
                    (indexBuffer.BufferTarget != bufferTarget) ||
                    (indexBuffer.BeginMode != beginMode) ||
                    (indexBuffer.BufferTarget != bufferTarget) ||
                    (indexBuffer.DrawElementsType != indexType)
                )
                {
                    throw new Exception();
                }
                return indexBuffers[(int)meshMode];
            }
        }
void RenderStack.Mesh.Mesh.ApplyAttributes ( Program  program,
MeshMode  meshMode,
bool  enable 
)

Definition at line 145 of file Mesh.cs.

        {
            if(meshMode == MeshMode.NotSet)
            {
                throw new Exception("MeshMode not set");
            }

            KeyValuePair<Program, int> key = new KeyValuePair<Program,int>(program, (int)meshMode);

            if(programAttributeBindings.ContainsKey(key))
            {
                enabledAttributeBindings = programAttributeBindings[key];
                enabledAttributeBindings.Apply(enable);
                return;
            }

            System.Diagnostics.Debug.Assert(enable == true);
            enabledAttributeBindings = new AttributeBindings(VertexBuffer, IndexBuffer(meshMode));

            programAttributeBindings[key] = enabledAttributeBindings;
            program.AttributeMappings.BindAttributes(
                enabledAttributeBindings, 
                program, 
                VertexBuffer
            );

            enabledAttributeBindings.Apply(enable);

        }
void RenderStack.Mesh.Mesh.ApplyAttributes ( Program  program,
MeshMode  mode 
)

Definition at line 178 of file Mesh.cs.

        {
            ApplyAttributes(program, mode, true);
        }
void RenderStack.Mesh.Mesh.End ( )

Definition at line 182 of file Mesh.cs.

        {
#if true
            if(enabledAttributeBindings != null)
            {
                enabledAttributeBindings.Apply(false);
                enabledAttributeBindings = null;
            }
#endif
        }

Property Documentation

Buffer RenderStack.Mesh.Mesh.VertexBuffer [get, set]

Definition at line 42 of file Mesh.cs.


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