//------------------------------------------------------------------------------ int32 CGUIShader_opengl_base::LoadAndCompile(const CGUIString& rVertexShaderFileName, const CGUIString& rFragmentShaderFileName) { #if defined(GUIEX_RENDER_OPENGL) || defined(GUIEX_RENDER_OPENGL_ES2) DestroyShader(); //create shader m_uVertexShader = BuildShader(rVertexShaderFileName, GL_VERTEX_SHADER); m_uFragmentShader = BuildShader(rFragmentShaderFileName, GL_FRAGMENT_SHADER); m_uProgramId = glCreateProgram(); glAttachShader(m_uProgramId, m_uVertexShader); glAttachShader(m_uProgramId, m_uFragmentShader); glLinkProgram(m_uProgramId); GLint linkSuccess; glGetProgramiv(m_uProgramId, GL_LINK_STATUS, &linkSuccess); if (linkSuccess == GL_FALSE) { char messages[256]; glGetProgramInfoLog(m_uProgramId, sizeof(messages), 0, &messages[0]); GUI_THROW( GUI_FORMAT( "[CGUIShader_opengl_base::LoadAndCompile]: %s", messages )); return -1; } CacheAttributeLoc(); CacheUniformLoc(); #endif //#if defined(GUIEX_RENDER_OPENGL) || defined(GUIEX_RENDER_OPENGL_ES2) return 0; }
void UnloadContext(RenderContext *context) { DestroyShader(&context->diffuse); glDeleteVertexArrays(1, &context->vao); glDeleteBuffers(1, &context->vbo); glDeleteBuffers(1, &context->ebo); UnloadTexture(&context->font); }
void DestroyShaderManager() { ShaderProgram *oneProgram; if(!shader_hash) return; oneProgram = StartLoopHash(shader_hash); while(oneProgram) { DestroyShader(&oneProgram); oneProgram = GetNextHash(shader_hash); } DestroyHash(&shader_hash); }
void c_system_motionblur::ReleaseResources_Base() { // release the direct 3d resources DestroyShader(); DestroyEffect(); Validate(); m_members.status = Enums::pp_component_status_uninitialised; UpdateStatus(); }
void c_system_motionblur::Unload() { // release the direct3d resources of the shader DestroyShader(); DestroyEffect(); Validate(); m_members.status = Enums::pp_component_status_uninitialised; m_members.m_flags.is_unloaded = true; UpdateStatus(); }
//------------------------------------------------------------------------------ CGUIShader_opengl_base::~CGUIShader_opengl_base() { DestroyShader(); }