Esempio n. 1
0
        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();
            }
        }