public VertexBuffer GetVertexAttributeBuffer(string bufferName, string varNameInShader)
{
if (bufferName == strPosition)
{
if (this.positionBuffer == null)
{
int length = 1;
VertexBuffer buffer = VertexBuffer.Create(typeof(CubeModel.CubePosition), length, VBOConfig.Vec3, varNameInShader, BufferUsage.StaticDraw);
unsafe
{
IntPtr pointer = buffer.MapBuffer(MapBufferAccess.ReadWrite);
{
var array = (CubeModel.CubePosition*)pointer;
array[0] = CubeModel.position;
}
{
var array = (vec3*)pointer;
for (int i = 0; i < 24; i++)
{
array[i] = array[i] / 2 * Lengths;
}
}
buffer.UnmapBuffer();
}
this.positionBuffer = buffer;
}
return this.positionBuffer;
}
else if (bufferName == strColor)
{
if (this.colorBuffer == null)
{
//int length = 1;
//VertexBuffer buffer = VertexBuffer.Create(typeof(CubeModel.CubeColor), length, VBOConfig.Vec3, varNameInShader, BufferUsage.StaticDraw);
//unsafe
//{
// IntPtr pointer = buffer.MapBuffer(MapBufferAccess.WriteOnly);
// var array = (CubeModel.CubeColor*)pointer;
// array[0] = CubeModel.color;
// buffer.UnmapBuffer();
//}
//this.colorBuffer = buffer;
// another way to do this:
this.colorBuffer = CubeModel.color.GenVertexBuffer(VBOConfig.Vec3, varNameInShader, BufferUsage.StaticDraw);
}
return this.colorBuffer;
}
else if (bufferName == strNormal)
{
if (this.normalBuffer == null)
{
//int length = 1;
//VertexBuffer buffer = VertexBuffer.Create(typeof(CubeModel.CubeNormal), length, VBOConfig.Vec3, varNameInShader, BufferUsage.StaticDraw);
//unsafe
//{
// IntPtr pointer = buffer.MapBuffer(MapBufferAccess.WriteOnly);
// var array = (CubeModel.CubeNormal*)pointer;
// array[0] = CubeModel.normal;
// buffer.UnmapBuffer();
//}
//this.normalBuffer = buffer;
// another way to do this:
this.normalBuffer = CubeModel.normal.GenVertexBuffer(VBOConfig.Vec3, varNameInShader, BufferUsage.StaticDraw);
}
return this.normalBuffer;
}
else
{
return null;
}
}