public VertexBuffer GetVertexAttributeBuffer(string bufferName, string varNameInShader)
{
if (bufferName == strPosition)
{
if (this.positionBuffer == null)
{
//int length = model.positions.Length;
//VertexBuffer buffer = VertexBuffer.Create(typeof(vec3), length, VBOConfig.Vec3, varNameInShader, BufferUsage.StaticDraw);
//unsafe
//{
// IntPtr pointer = buffer.MapBuffer(MapBufferAccess.WriteOnly);
// var array = (vec3*)pointer;
// for (int i = 0; i < model.positions.Length; i++)
// {
// array[i] = model.positions[i];
// }
// buffer.UnmapBuffer();
//}
//this.positionBuffer = buffer;
// another way to do this:
this.positionBuffer = this.model.positions.GenVertexBuffer(VBOConfig.Vec3, varNameInShader, BufferUsage.StaticDraw);
}
return this.positionBuffer;
}
else if (bufferName == strTexCoord)
{
if (this.uvBuffer == null)
{
//int length = model.texCoords.Length;
//VertexBuffer buffer = VertexBuffer.Create(typeof(vec2), length, VBOConfig.Vec2, varNameInShader, BufferUsage.StaticDraw);
//unsafe
//{
// IntPtr pointer = buffer.MapBuffer(MapBufferAccess.WriteOnly);
// var array = (vec2*)pointer;
// for (int i = 0; i < model.texCoords.Length; i++)
// {
// array[i] = model.texCoords[i];
// }
// buffer.UnmapBuffer();
//}
//this.uvBuffer = buffer;
// another way to do this:
this.uvBuffer = this.model.texCoords.GenVertexBuffer(VBOConfig.Vec2, varNameInShader, BufferUsage.StaticDraw);
}
return this.uvBuffer;
}
else
{
return null;
}
}