internal int GetShaderHandle() { // If the shader has already been created then return it. if (_shaderHandle != -1) { return(_shaderHandle); } // _shaderHandle = GL.CreateShader(Stage == ShaderStage.Vertex ? ShaderType.VertexShader : ShaderType.FragmentShader); GraphicsExtensions.CheckGLError(); GL.ShaderSource(_shaderHandle, _glslCode); GraphicsExtensions.CheckGLError(); GL.CompileShader(_shaderHandle); GraphicsExtensions.CheckGLError(); int compiled = 0; GL.GetShader(_shaderHandle, ShaderParameter.CompileStatus, out compiled); GraphicsExtensions.CheckGLError(); if (compiled != (int)Bool.True) { var log = GL.GetShaderInfoLog(_shaderHandle); Debug.WriteLine(log); GraphicsDevice.DisposeShader(_shaderHandle); _shaderHandle = -1; throw new InvalidOperationException("Shader Compilation Failed"); } return(_shaderHandle); }
internal WebGLShader GetShaderHandle() { // If the shader has already been created then return it. if (gl.isShader(_shaderHandle)) { return(_shaderHandle); } _shaderHandle = gl.createShader(Stage == ShaderStage.Vertex ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER); GraphicsExtensions.CheckGLError(); gl.shaderSource(_shaderHandle, _glslCode); GraphicsExtensions.CheckGLError(); gl.compileShader(_shaderHandle); GraphicsExtensions.CheckGLError(); var compiled = (bool)gl.getShaderParameter(_shaderHandle, gl.COMPILE_STATUS); GraphicsExtensions.CheckGLError(); if (!compiled) { var log = gl.getShaderInfoLog(_shaderHandle); Debug.WriteLine(log); GraphicsDevice.DisposeShader(_shaderHandle); throw new InvalidOperationException("Shader Compilation Failed"); } return(_shaderHandle); }
private void PlatformGraphicsDeviceResetting() { if (gl.isShader(_shaderHandle)) { GraphicsDevice.DisposeShader(_shaderHandle); } }
private void PlatformGraphicsDeviceResetting() { if (_shaderHandle != -1) { GraphicsDevice.DisposeShader(_shaderHandle); _shaderHandle = -1; } }
protected override void Dispose(bool disposing) { if (!IsDisposed && gl.isShader(_shaderHandle)) { GraphicsDevice.DisposeShader(_shaderHandle); } base.Dispose(disposing); }