Exemplo n.º 1
0
gl4::Shader::Shader(const char *vertfilename, const char *fragfilename, const char *geofilename, const char *tesscontrolfilename, const char *tessevalfilename)
{
	_shaderProgram = 0;
	for (int i = 0; i < 16; ++i)
	{
		_uniformLocations[i] = -1;
	}

	init();
	attachVertexShader(vertfilename);
	attachFragmentShader(fragfilename);
	if (geofilename != 0)
	{
		attachGeometryShader(geofilename);
	}
	if (tesscontrolfilename != 0 && tessevalfilename != 0)
	{
		attachTessellationShader(tesscontrolfilename, tessevalfilename);
	}


	glBindAttribLocation(_shaderProgram, 0, "in_position");
	glBindAttribLocation(_shaderProgram, 1, "in_st");
	glBindAttribLocation(_shaderProgram, 2, "in_normal");
	glBindAttribLocation(_shaderProgram, 3, "in_color");
	glBindAttribLocation(_shaderProgram, 4, "in_attribute3f");
	glBindAttribLocation(_shaderProgram, 5, "in_attribute1f");

	link();
}
Exemplo n.º 2
0
void
ShaderProgram::attachGeometryShaderFromFile(PrimitiveType inputPrimitiveType,
                                            PrimitiveType outputPrimitiveType,
                                            int maxOutputVertices,
                                            const char *shaderPath)
{
	string source = loadShaderFromFile(shaderPath);
	attachGeometryShader(inputPrimitiveType, outputPrimitiveType, maxOutputVertices, source.c_str());
}