//------------------------------------------------------------------------------
	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;
	}
Beispiel #2
0
void UnloadContext(RenderContext *context)
{
	DestroyShader(&context->diffuse);
	glDeleteVertexArrays(1, &context->vao);
	glDeleteBuffers(1, &context->vbo);
	glDeleteBuffers(1, &context->ebo);
	UnloadTexture(&context->font);
}
Beispiel #3
0
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();
	}