コード例 #1
0
        public static WebGLBuffer CreateArrayBufferWithUsage(this WebGLRenderingContextBase gl, Array items, uint usage)
        {
            var arrayBuffer = gl.CreateBuffer();

            gl.BindBuffer(WebGLRenderingContextBase.ARRAY_BUFFER, arrayBuffer);
            gl.BufferData(WebGLRenderingContextBase.ARRAY_BUFFER, items, usage);

            return(arrayBuffer);
        }
コード例 #2
0
        public static WebGLBuffer CreateElementArrayBuffer(this WebGLRenderingContextBase gl, Array items)
        {
            var elementArrayBuffer = gl.CreateBuffer();

            gl.BindBuffer(WebGLRenderingContextBase.ELEMENT_ARRAY_BUFFER, elementArrayBuffer);
            gl.BufferData(WebGLRenderingContextBase.ELEMENT_ARRAY_BUFFER, items, WebGLRenderingContextBase.STATIC_DRAW);
            gl.BindBuffer(WebGLRenderingContextBase.ELEMENT_ARRAY_BUFFER, null);

            return(elementArrayBuffer);
        }
コード例 #3
0
        public static WebGLBuffer CreateArrayBuffer(this WebGLRenderingContextBase gl, Array items)
        {
            var arrayBuffer = gl.CreateBuffer();

            gl.BindBuffer(WebGLRenderingContextBase.ARRAY_BUFFER, arrayBuffer);
            gl.BufferData(WebGLRenderingContextBase.ARRAY_BUFFER, items, WebGLRenderingContextBase.STATIC_DRAW);
            gl.BindBuffer(WebGLRenderingContextBase.ARRAY_BUFFER, null);

            return(arrayBuffer);
        }
コード例 #4
0
        public static WebGLShader GetShader(this WebGLRenderingContextBase gl, string shaderSource, uint type)
        {
            var shader = gl.CreateShader(type);

            gl.ShaderSource(shader, shaderSource);
            gl.CompileShader(shader);

            var message = gl.GetShaderInfoLog(shader);

            if (message.Length > 0)
            {
                var msg = $"Shader Error: {message}";
                throw new Exception(msg);
            }

            return(shader);
        }
コード例 #5
0
        public static WebGLProgram InitializeShaders(
            this WebGLRenderingContextBase gl,
            string vertexShaderCode,
            string fragmentShaderCode)
        {
            var shaderProgram = gl.CreateProgram();

            var vertexShader   = GetShader(gl, vertexShaderCode, WebGLRenderingContextBase.VERTEX_SHADER);
            var fragmentShader = GetShader(gl, fragmentShaderCode, WebGLRenderingContextBase.FRAGMENT_SHADER);

            gl.AttachShader(shaderProgram, vertexShader);
            gl.AttachShader(shaderProgram, fragmentShader);

            gl.LinkProgram(shaderProgram);

            gl.UseProgram(shaderProgram);

            return(shaderProgram);
        }