public VertexBuffer GetVertexAttributeBuffer(string bufferName, string varNameInShader) { if (bufferName == strPosition) { if (this.positionBuffer == null) { var array = new vec4[particleCount]; for (int i = 0; i < particleCount; i++) { array[i] = new vec4( (float)(random.NextDouble() - 0.5) * 20, (float)(random.NextDouble() - 0.5) * 20, (float)(random.NextDouble() - 0.5) * 20, (float)(random.NextDouble()) ); } VertexBuffer buffer = array.GenVertexBuffer(VBOConfig.Vec4, varNameInShader, BufferUsage.DynamicCopy); this.positionBuffer = buffer; } return(this.positionBuffer); } else if (bufferName == strVelocity) { if (this.velocityBuffer == null) { var array = new vec4[particleCount]; for (int i = 0; i < particleCount; i++) { array[i] = new vec4( (float)(random.NextDouble() - 0.5) * 0.2f, (float)(random.NextDouble() - 0.5) * 0.2f, (float)(random.NextDouble() - 0.5) * 0.2f, 0 ); } VertexBuffer buffer = array.GenVertexBuffer(VBOConfig.Vec4, varNameInShader, BufferUsage.StaticDraw); this.velocityBuffer = buffer; } return(this.velocityBuffer); } else { throw new ArgumentException(); } }