|
RenderStack 11.06.1
|
Abstraction for OpenGL buffer objects. Currently supports vertex and index buffers. More...
Public Member Functions | |
| void | OnDeserializedGraphicsContexThread () |
| void | Dispose () |
| Buffer () | |
| void | GLGen () |
| Buffer (BufferTarget target, BufferUsageHint usageHint) | |
| Buffer (BufferTarget target, BufferUsageHint usageHint, long bufferSize) | |
| Buffer (BufferTarget target, BufferUsageHint usageHint, DrawElementsType indexType, BeginMode beginMode) | |
| void | BeginEdit () |
| void | EndEdit () |
| void | Use () |
| void | SetAllFloat (Attribute attribute, int count, float[] inValues) |
| void | Write (byte[] data) |
| void | Set (Attribute attribute, params int[] values) |
| void | Set (Attribute attribute, params uint[] values) |
| void | Set (Attribute attribute, params float[] values) |
| void | Set (Attribute attribute, Vector2 value) |
| void | Set (Attribute attribute, Vector3 value) |
| void | Set (Attribute attribute, Vector4 value) |
| void | Position (Vector3 value) |
| void | Position (Vector3 value, int index) |
| void | Normal (Vector3 value) |
| void | Normal (Vector3 value, int index) |
| void | TexCoord (Vector2 value) |
| void | TexCoord (Vector2 value, int index) |
| void | Point (UInt32 index0) |
| void | Line (UInt32 index0, UInt32 index1) |
| void | Triangle (UInt32 index0, UInt32 index1, UInt32 index2) |
| void | Quad (UInt32 index0, UInt32 index1, UInt32 index2, UInt32 index3) |
Static Public Member Functions | |
| static void | FinalizeDeserializations () |
| static int | SizeOfType (DrawElementsType type) |
| static void | FinalizeEndEdits () |
Public Attributes | |
| uint | CurrentIndex = 0 |
Properties | |
| VertexFormat | VertexFormat [get] |
| BufferTarget | BufferTarget [get] |
| UInt32 | BufferObject [get] |
| DrawElementsType | DrawElementsType [get] |
| UInt32 | Count [get] |
| BeginMode | BeginMode [get] |
| long | Size [get] |
| long | StreamPosition [get] |
| RenderStack.Graphics.Buffer.Buffer | ( | BufferTarget | target, |
| BufferUsageHint | usageHint | ||
| ) |
| RenderStack.Graphics.Buffer.Buffer | ( | BufferTarget | target, |
| BufferUsageHint | usageHint, | ||
| long | bufferSize | ||
| ) |
Definition at line 200 of file Buffer.cs.
{
bufferTarget = target;
bufferUsageHint = usageHint;
size = bufferSize;
GLGen();
GL.BufferData(
BufferTarget,
(System.IntPtr)(bufferSize),
(System.IntPtr)(0),
bufferUsageHint
);
}
| RenderStack.Graphics.Buffer.Buffer | ( | BufferTarget | target, |
| BufferUsageHint | usageHint, | ||
| DrawElementsType | indexType, | ||
| BeginMode | beginMode | ||
| ) |
| static void RenderStack.Graphics.Buffer.FinalizeDeserializations | ( | ) | [static] |
| void RenderStack.Graphics.Buffer.OnDeserializedGraphicsContexThread | ( | ) |
Definition at line 109 of file Buffer.cs.
References RenderStack.Graphics.GhostManager.Gen().
{
GL.GenBuffers(1, out bufferObject);
GhostManager.Gen();
GL.BindBuffer(BufferTarget, BufferObject);
byte[] array = memoryStream.ToArray();
GL.BufferData(
BufferTarget,
(System.IntPtr)array.Length,
array,
bufferUsageHint
);
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
memoryStream.SetLength(0);
}
| static int RenderStack.Graphics.Buffer.SizeOfType | ( | DrawElementsType | type | ) | [static] |
Definition at line 146 of file Buffer.cs.
{
switch(type)
{
case DrawElementsType.UnsignedByte: return 1;
case DrawElementsType.UnsignedInt: return 4;
case DrawElementsType.UnsignedShort: return 2;
default: throw new System.Exception("Invalid typeCode");
}
}
| void RenderStack.Graphics.Buffer.Dispose | ( | ) |
Definition at line 162 of file Buffer.cs.
References RenderStack.Graphics.GhostManager.Add().
{
if(!disposed)
{
if(bufferObject != 0)
{
GhostManager.Add(new BufferGhost(bufferObject));
bufferObject = 0;
}
GC.SuppressFinalize(this);
disposed = true;
}
}
| void RenderStack.Graphics.Buffer.GLGen | ( | ) |
Definition at line 181 of file Buffer.cs.
References RenderStack.Graphics.GhostManager.Gen().
{
if(OpenTK.Graphics.GraphicsContext.CurrentContext != null)
{
GL.GenBuffers(1, out bufferObject);
GhostManager.Gen();
}
}
| void RenderStack.Graphics.Buffer.BeginEdit | ( | ) |
Definition at line 233 of file Buffer.cs.
Referenced by RenderStack.Mesh.GeometryMesh.BuildMeshFromGeometry(), RenderStack.UI.NinePatch.NinePatch(), RenderStack.UI.NinePatch.Place(), and RenderStack.UI.FontStyle.Print().
{
if(BufferTarget == BufferTarget.ArrayBuffer)
{
stride = vertexFormat.Stride;
}
else if(BufferTarget == BufferTarget.ElementArrayBuffer)
{
stride = SizeOfType(DrawElementsType);
}
else
{
throw new System.Exception("Invalid buffer stride exception");
}
CurrentIndex = 0;
memoryStream = memoryStream ?? new MemoryStream();
writer = writer ?? new BinaryWriter(memoryStream);
}
| static void RenderStack.Graphics.Buffer.FinalizeEndEdits | ( | ) | [static] |
| void RenderStack.Graphics.Buffer.EndEdit | ( | ) |
Definition at line 268 of file Buffer.cs.
Referenced by RenderStack.UI.NinePatch.NinePatch(), RenderStack.UI.NinePatch.Place(), and RenderStack.UI.FontStyle.Print().
{
if(OpenTK.Graphics.GraphicsContext.CurrentContext == null)
{
lock(delayedEndEdits)
{
delayedEndEdits.Add(this);
return;
}
}
long currentSize = CurrentIndex * stride;
count = CurrentIndex;
size = currentSize;
if(currentSize == 0)
{
return;
}
GL.BindBuffer(BufferTarget, BufferObject);
byte[] array = memoryStream.ToArray();
GL.BufferData(
BufferTarget,
(System.IntPtr)array.Length,
array,
bufferUsageHint
);
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
memoryStream.SetLength(0);
}
| void RenderStack.Graphics.Buffer.Use | ( | ) |
Definition at line 304 of file Buffer.cs.
{
GL.BindBuffer(BufferTarget, BufferObject);
}
| void RenderStack.Graphics.Buffer.SetAllFloat | ( | Attribute | attribute, |
| int | count, | ||
| float[] | inValues | ||
| ) |
Definition at line 309 of file Buffer.cs.
References RenderStack.Graphics.Attribute.Dimension, RenderStack.Graphics.Attribute.Offset, and RenderStack.Graphics.Attribute.Stride().
{
IntPtr VideoMemoryIntPtr = GL.MapBuffer(BufferTarget, BufferAccess.WriteOnly);
unsafe
{
fixed(float* inMemory = &inValues[0])
{
byte* VideoMemory = (byte*)VideoMemoryIntPtr.ToPointer();
for(int i = 0; i < count; ++i)
{
byte* bLocation = &VideoMemory[i * attribute.Stride() + attribute.Offset];
float* fLocation = (float*)bLocation;
for(int j = 0; j < attribute.Dimension; i++)
{
fLocation[j] = inMemory[i * attribute.Dimension + j];
}
}
}
}
GL.UnmapBuffer(BufferTarget);
}
| void RenderStack.Graphics.Buffer.Write | ( | byte[] | data | ) |
| void RenderStack.Graphics.Buffer.Set | ( | Attribute | attribute, |
| params int[] | values | ||
| ) |
Definition at line 337 of file Buffer.cs.
References RenderStack.Graphics.Attribute.Offset, and RenderStack.Graphics.VertexFormat.Stride.
Referenced by RenderStack.UI.NinePatch.Place(), and RenderStack.UI.FontStyle.Print().
{
writer.Seek((int)CurrentIndex * VertexFormat.Stride + attribute.Offset, System.IO.SeekOrigin.Begin);
foreach(int value in values)
{
writer.Write(value);
}
}
| void RenderStack.Graphics.Buffer.Set | ( | Attribute | attribute, |
| params uint[] | values | ||
| ) |
Definition at line 345 of file Buffer.cs.
References RenderStack.Graphics.Attribute.Offset, and RenderStack.Graphics.VertexFormat.Stride.
{
writer.Seek((int)CurrentIndex * VertexFormat.Stride + attribute.Offset, System.IO.SeekOrigin.Begin);
foreach(uint value in values)
{
writer.Write(value);
}
}
| void RenderStack.Graphics.Buffer.Set | ( | Attribute | attribute, |
| params float[] | values | ||
| ) |
Definition at line 353 of file Buffer.cs.
References RenderStack.Graphics.Attribute.Offset, and RenderStack.Graphics.VertexFormat.Stride.
{
writer.Seek((int)CurrentIndex * VertexFormat.Stride + attribute.Offset, System.IO.SeekOrigin.Begin);
foreach(float value in values)
{
writer.Write(value);
}
}
Definition at line 361 of file Buffer.cs.
References RenderStack.Graphics.Attribute.Offset, RenderStack.Graphics.VertexFormat.Stride, RenderStack.Math.Vector2.X, and RenderStack.Math.Vector2.Y.
{
writer.Seek((int)CurrentIndex * VertexFormat.Stride + attribute.Offset, System.IO.SeekOrigin.Begin);
writer.Write(value.X);
writer.Write(value.Y);
}
Definition at line 367 of file Buffer.cs.
References RenderStack.Graphics.Attribute.Offset, RenderStack.Graphics.VertexFormat.Stride, RenderStack.Math.Vector3.X, RenderStack.Math.Vector3.Y, and RenderStack.Math.Vector3.Z.
{
writer.Seek((int)CurrentIndex * VertexFormat.Stride + attribute.Offset, System.IO.SeekOrigin.Begin);
writer.Write(value.X);
writer.Write(value.Y);
writer.Write(value.Z);
}
Definition at line 374 of file Buffer.cs.
References RenderStack.Graphics.Attribute.Offset, RenderStack.Graphics.VertexFormat.Stride, RenderStack.Math.Vector4.W, RenderStack.Math.Vector4.X, RenderStack.Math.Vector4.Y, and RenderStack.Math.Vector4.Z.
{
writer.Seek((int)CurrentIndex * VertexFormat.Stride + attribute.Offset, System.IO.SeekOrigin.Begin);
writer.Write(value.X);
writer.Write(value.Y);
writer.Write(value.Z);
writer.Write(value.W);
}
| void RenderStack.Graphics.Buffer.Position | ( | Vector3 | value | ) |
Definition at line 382 of file Buffer.cs.
References RenderStack.Graphics.VertexFormat.FindAttribute().
{
var attribute = VertexFormat.FindAttribute(VertexUsage.Position, 0);
Set(attribute, value);
}
| void RenderStack.Graphics.Buffer.Position | ( | Vector3 | value, |
| int | index | ||
| ) |
Definition at line 387 of file Buffer.cs.
References RenderStack.Graphics.VertexFormat.FindAttribute().
{
var attribute = VertexFormat.FindAttribute(VertexUsage.Position, index);
Set(attribute, value);
}
| void RenderStack.Graphics.Buffer.Normal | ( | Vector3 | value | ) |
Definition at line 392 of file Buffer.cs.
References RenderStack.Graphics.VertexFormat.FindAttribute().
{
var attribute = VertexFormat.FindAttribute(VertexUsage.Normal, 0);
Set(attribute, value);
}
| void RenderStack.Graphics.Buffer.Normal | ( | Vector3 | value, |
| int | index | ||
| ) |
Definition at line 397 of file Buffer.cs.
References RenderStack.Graphics.VertexFormat.FindAttribute().
{
var attribute = VertexFormat.FindAttribute(VertexUsage.Normal, index);
Set(attribute, value);
}
| void RenderStack.Graphics.Buffer.TexCoord | ( | Vector2 | value | ) |
Definition at line 402 of file Buffer.cs.
References RenderStack.Graphics.VertexFormat.FindAttribute().
{
var attribute = VertexFormat.FindAttribute(VertexUsage.TexCoord, 0);
Set(attribute, value);
}
| void RenderStack.Graphics.Buffer.TexCoord | ( | Vector2 | value, |
| int | index | ||
| ) |
Definition at line 407 of file Buffer.cs.
References RenderStack.Graphics.VertexFormat.FindAttribute().
{
var attribute = VertexFormat.FindAttribute(VertexUsage.TexCoord, index);
Set(attribute, value);
}
| void RenderStack.Graphics.Buffer.Point | ( | UInt32 | index0 | ) |
Definition at line 455 of file Buffer.cs.
{
SetIndex(CurrentIndex, index0);
}
| void RenderStack.Graphics.Buffer.Line | ( | UInt32 | index0, |
| UInt32 | index1 | ||
| ) |
Definition at line 459 of file Buffer.cs.
{
SetIndex(CurrentIndex + 0, index0);
SetIndex(CurrentIndex + 1, index1);
}
| void RenderStack.Graphics.Buffer.Triangle | ( | UInt32 | index0, |
| UInt32 | index1, | ||
| UInt32 | index2 | ||
| ) |
Definition at line 464 of file Buffer.cs.
{
SetIndex(CurrentIndex + 0, index0);
SetIndex(CurrentIndex + 1, index1);
SetIndex(CurrentIndex + 2, index2);
}
| void RenderStack.Graphics.Buffer.Quad | ( | UInt32 | index0, |
| UInt32 | index1, | ||
| UInt32 | index2, | ||
| UInt32 | index3 | ||
| ) |
Definition at line 470 of file Buffer.cs.
Referenced by RenderStack.UI.NinePatch.NinePatch(), and RenderStack.UI.FontStyle.Print().
{
SetIndex(CurrentIndex + 0, index0);
SetIndex(CurrentIndex + 1, index1);
SetIndex(CurrentIndex + 2, index2);
SetIndex(CurrentIndex + 3, index0);
SetIndex(CurrentIndex + 4, index2);
SetIndex(CurrentIndex + 5, index3);
}
Definition at line 81 of file Buffer.cs.
Referenced by RenderStack.UI.NinePatch.NinePatch(), RenderStack.UI.NinePatch.Place(), and RenderStack.UI.FontStyle.Print().
VertexFormat RenderStack.Graphics.Buffer.VertexFormat [get] |
Definition at line 73 of file Buffer.cs.
Referenced by RenderStack.Graphics.AttributeMappings.BindAttributes(), RenderStack.UI.NinePatch.Place(), and RenderStack.UI.FontStyle.Print().
BufferTarget RenderStack.Graphics.Buffer.BufferTarget [get] |
Definition at line 74 of file Buffer.cs.
Referenced by RenderStack.Mesh.Mesh.FindOrCreateIndexBuffer().
DrawElementsType RenderStack.Graphics.Buffer.DrawElementsType [get] |
Definition at line 76 of file Buffer.cs.
Referenced by RenderStack.Mesh.Mesh.FindOrCreateIndexBuffer().
BeginMode RenderStack.Graphics.Buffer.BeginMode [get] |
Definition at line 78 of file Buffer.cs.
Referenced by RenderStack.Mesh.Mesh.FindOrCreateIndexBuffer().
1.7.4