private static void initBuffers() { triangleVertexPositionBuffer = new PositionBuffer(); triangleVertexPositionBuffer.Buffer = gl.CreateBuffer(); gl.BindBuffer(gl.ArrayBuffer, triangleVertexPositionBuffer.Buffer); var vertices = new [] { 0.0, 1.0, 0.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0 }; gl.BufferData(gl.ArrayBuffer, Float32Array.Create(vertices), gl.StaticDraw); triangleVertexPositionBuffer.ItemSize = 3; triangleVertexPositionBuffer.NumItems = 3; squareVertexPositionBuffer = new PositionBuffer(); squareVertexPositionBuffer.Buffer = gl.CreateBuffer(); gl.BindBuffer(gl.ArrayBuffer, squareVertexPositionBuffer.Buffer); vertices = new [] { 1.0, 1.0, 0.0, -1.0, 1.0, 0.0, 1.0, -1.0, 0.0, -1.0, -1.0, 0.0 }; gl.BufferData(gl.ArrayBuffer, Float32Array.Create(vertices), gl.StaticDraw); squareVertexPositionBuffer.ItemSize = 3; squareVertexPositionBuffer.NumItems = 4; }
protected override void OnAfterRender() { WebGLContext context = this.canvasReference.CreateWebGL(new WebGLContextAttributes { PowerPreference = WebGLContextAttributes.POWER_PREFERENCE_HIGH_PERFORMANCE }); context.ClearColor(0, 0, 0, 1); context.Clear(BufferBits.COLOR_BUFFER_BIT); var program = this.InitProgram(context, VS_SOURCE, FS_SOURCE); var vertexBuffer = context.CreateBuffer(); context.BindBuffer(BufferType.ARRAY_BUFFER, vertexBuffer); var vertices = new[] { -0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f }; context.BufferData(BufferType.ARRAY_BUFFER, vertices, BufferUsageHint.STATIC_DRAW); context.VertexAttribPointer(0, 3, DataType.FLOAT, false, 6 * sizeof(float), 0); context.VertexAttribPointer(1, 3, DataType.FLOAT, false, 6 * sizeof(float), 3 * sizeof(float)); context.EnableVertexAttribArray(0); context.EnableVertexAttribArray(1); context.UseProgram(program); context.DrawArrays(Primitive.TRIANGLES, 0, 3); }
public void SetDataSize(int byteSize) { context.BufferData(this, byteSize); }