Beispiel #1
0
// Public
bool Shader::LoadShader(const std::string& vertexShaderPath, const std::string& fragmentShaderPath)
{
    if (!m_program)
    {
        //uth::Graphics::DestroyShaderProgram(m_program);
        m_program = uth::Graphics::CreateShaderProgram();

    }

	FileReader fr;

	// Vertex Shader
	fr.OpenFile(vertexShaderPath);

#if defined(UTH_SYSTEM_OPENGLES)
	const std::string vertex = "#version 100\n#define UTH_ES\n" + fr.ReadText(); 
#elif defined(UTH_SYSTEM_OPENGL)
	const std::string vertex = "#version 100\n" + fr.ReadText();
#endif

	if(!uth::Graphics::CreateShader(VERTEX_SHADER, m_program, vertex.c_str()))
	{
		WriteError("Vertex shader failed");
		return false;
	}
    fr.CloseFile();

	// Fragment Shader
	fr.OpenFile(fragmentShaderPath);
	

#if defined(UTH_SYSTEM_OPENGLES)
	const std::string fragment = "#version 100\n#define UTH_ES\nprecision mediump float;\n" + fr.ReadText(); 
#elif defined(UTH_SYSTEM_OPENGL)
	const std::string fragment = "#version 100\nprecision mediump float;\n" + fr.ReadText();
#endif

	if(!uth::Graphics::CreateShader(FRAGMENT_SHADER, m_program, fragment.c_str()))
	{
		WriteError("Fragment shader failed");
		return false;
	}
    fr.CloseFile();
	
    return uth::Graphics::LinkShaderProgram(m_program);
}
TsStreamFileSource::~TsStreamFileSource() 
{
	LogDebug("ts:dtor:%x",this);  
	if (fDeleteFidOnClose && fFid != NULL) 
	{
		FileReader* reader = (FileReader*)fFid;
		reader->CloseFile();
		delete reader;
		fFid=NULL;
		m_buffer.Clear();
	}
}