Ejemplo n.º 1
0
        public async Task Initialize()
        {
            _context = await _canvasReference.CreateWebGLAsync(new WebGLContextAttributes
            {
                PowerPreference = WebGLContextAttributes.POWER_PREFERENCE_HIGH_PERFORMANCE
            });

            vertexBuffer = await _context.CreateBufferAsync();

            await _context.BindBufferAsync(BufferType.ARRAY_BUFFER, vertexBuffer);

            var program = await this.InitProgramAsync(this._context, VS_SOURCE, FS_SOURCE);

            var positionLocation = await _context.GetAttribLocationAsync(program, "aPos");

            var texcoordLocation = await _context.GetAttribLocationAsync(program, "aTex");

            await _context.VertexAttribPointerAsync((uint)positionLocation, 3, DataType.FLOAT, false, 6 *sizeof(float), 0);

            await _context.VertexAttribPointerAsync((uint)texcoordLocation, 2, DataType.FLOAT, false, 6 *sizeof(float), 3 *sizeof(float));

            await _context.EnableVertexAttribArrayAsync((uint)positionLocation);

            await _context.EnableVertexAttribArrayAsync((uint)texcoordLocation);

            await _context.UseProgramAsync(program);

            var texture = await _context.CreateTextureAsync();

            await _context.BindTextureAsync(TextureType.TEXTURE_2D, texture);
        }
Ejemplo n.º 2
0
        public async Task BindToAttributeAsync(uint attribute)
        {
            await _gl.BindBufferAsync(BufferType.ARRAY_BUFFER, _dataBuffer);

            await _gl.EnableVertexAttribArrayAsync(attribute);

            await _gl.VertexAttribPointerAsync(attribute, _size, DataType.FLOAT, false, 0, 0);
        }
        private static async void InitStaticBuffer(WebGLContext gl)
        {
            vertexBuffer = await gl.CreateBufferAsync();

            await gl.BindBufferAsync(BufferType.ARRAY_BUFFER, vertexBuffer);

            {
                var vertexArrayDef = new[] {
                    -0.5f, 0.5f,
                    0.5f, 0.5f,
                    0.5f, -0.5f,
                    -0.5f, -0.5f,
                };

                await gl.BufferDataAsync(BufferType.ARRAY_BUFFER, vertexArrayDef, BufferUsageHint.STATIC_DRAW);

                await gl.EnableVertexAttribArrayAsync(shader.PositionAttributeLocaltion);

                await gl.VertexAttribPointerAsync(shader.PositionAttributeLocaltion, 2, DataType.FLOAT, false, sizeof(float) * 2, 0);
            }

            texBuffer = await gl.CreateBufferAsync();

            await gl.BindBufferAsync(BufferType.ARRAY_BUFFER, texBuffer);

            {
                var texArrayDef = new[]
                {
                    0, 0,
                    1, 0,
                    1, 1,
                    0, 1
                };

                await gl.BufferDataAsync(BufferType.ARRAY_BUFFER, texArrayDef, BufferUsageHint.STATIC_DRAW);

                await gl.EnableVertexAttribArrayAsync(shader.TexturePositionAttributeLocaltion);

                await gl.VertexAttribPointerAsync(shader.TexturePositionAttributeLocaltion, 2, DataType.FLOAT, false, sizeof(float) * 2, 0);
            }
        }