uint MythRenderOpenGL2::CreateShaderObject(const QString &vertex, const QString &fragment) { if (!(m_exts_supported & kGLSL)) return 0; OpenGLLocker locker(this); uint result = 0; QString vert_shader = vertex.isEmpty() ? kDefaultVertexShader : vertex; QString frag_shader = fragment.isEmpty() ? kDefaultFragmentShader: fragment; vert_shader.detach(); frag_shader.detach(); OptimiseShaderSource(vert_shader); OptimiseShaderSource(frag_shader); result = m_glCreateProgram(); if (!result) return 0; MythGLShaderObject object(CreateShader(GL_VERTEX_SHADER, vert_shader), CreateShader(GL_FRAGMENT_SHADER, frag_shader)); m_shader_objects.insert(result, object); if (!ValidateShaderObject(result)) { DeleteShaderObject(result); return 0; } return result; }
void MythRenderOpenGL2::DeleteDefaultShaders(void) { for (int i = 0; i < kShaderCount; i++) { DeleteShaderObject(m_shaders[i]); m_shaders[i] = 0; } }
GLvoid CGLES3Context::ApiDeleteShader(GLuint shader) { DeleteShaderObject(shader); CTX_ANALYZER_FUNC1(DeleteShader, GLOutput, GL_OUT_BUF_SIZE, shader); }