Ejemplo n.º 1
0
ShaderProgram::ShaderProgram(FragmentShader *pFragmentShader, VertexShader *pVertexShader)
{
    Init();

    SetFragmentShader(pFragmentShader);
    SetVertexShader(pVertexShader);

    CreateProgram();
}
Ejemplo n.º 2
0
ShaderProgram::ShaderProgram(const char *pFragmentFile, const char *pVertexFile)
{
    Init();

    FragmentShader	*pFragmentShader	= new FragmentShader(pFragmentFile);
    VertexShader	*pVertexShader		= new VertexShader(pVertexFile);

    SetFragmentShader(pFragmentShader);
    SetVertexShader(pVertexShader);

    pFragmentShader->Release();
    pVertexShader->Release();

    CreateProgram();
}
Ejemplo n.º 3
0
void cShaderObject::CreateShaderProgram(cStringRef shader_source)
{
	// chop off leading newlines if possible: will make so that the source
	// file line numbers will match what the compiler sees
	cStringRef ss = shader_source;
	SetFragmentShader(ss.data());
	if(shader_source.find("{akj:use geometry}") != cStringRef::npos)
	{
		SetGeometryShader(ss.data());
	}
	SetVertexShader(ss.data());
	LinkShaderProgram();
	int is_linked;
	glGetProgramiv(mShaderProgram, GL_LINK_STATUS, &is_linked);
	if(!is_linked)
	{
		AKJ_THROW("Shader "+mObjectName + " Linking Failed.");
	}
}
Ejemplo n.º 4
0
ShaderProgram::~ShaderProgram()
{
    DeleteProgram();
    SetFragmentShader(0);
    SetVertexShader(0);
}