|
RenderStack 11.06.1
|
Basic renderable shape, vertex buffer and index buffer. Can also have multiple representations, see MeshMode. More...
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] |
| 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
);
}
| 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;
}
}
| bool RenderStack.Mesh.Mesh.HasIndexBuffer | ( | MeshMode | meshMode | ) |
| 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];
}
}
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);
}
Definition at line 178 of file Mesh.cs.
{
ApplyAttributes(program, mode, true);
}
| void RenderStack.Mesh.Mesh.End | ( | ) |
1.7.4