コード例 #1
0
ファイル: GLShader.cpp プロジェクト: TimelessVisions/GLEngine
void GL2DShader::GetShaderLocations()
{
	uint* pCurrProgram = &ProgramID[0];

	do {
		//	Attribute locations
		GetAttribLocation(Vertex,		*pCurrProgram, "Position");		GLERROR();
		GetAttribLocation(TexCoords,	*pCurrProgram, "TexCoord");		GLERROR();

		//	Uniform locations
		GetUniformLocation(InTextures,	*pCurrProgram, "InTextures");	GLERROR();
		GetUniformLocation(OutTextures,	*pCurrProgram, "OutTextures");	GLERROR();
		GetUniformLocation(Texture[0],	*pCurrProgram, "Texture0");		GLERROR();
		GetUniformLocation(Texture[1],	*pCurrProgram, "Texture1");		GLERROR();
		GetUniformLocation(Texture[2],	*pCurrProgram, "Texture2");		GLERROR();
		GetUniformLocation(Texture[3],	*pCurrProgram, "Texture3");		GLERROR();
		GetUniformLocation(Texture[4],	*pCurrProgram, "Texture4");		GLERROR();
		GetUniformLocation(Texture[5],	*pCurrProgram, "Texture5");		GLERROR();
		GetUniformLocation(Texture[6],	*pCurrProgram, "Texture6");		GLERROR();
		GetUniformLocation(Texture[7],	*pCurrProgram, "Texture7");		GLERROR();

		//	Output locations
		glBindFragDataLocation(*pCurrProgram, 0, "Color0");				GLERROR();
		glBindFragDataLocation(*pCurrProgram, 1, "Color1");				GLERROR();
		glBindFragDataLocation(*pCurrProgram, 2, "Color2");				GLERROR();
		glBindFragDataLocation(*pCurrProgram, 3, "Color3");				GLERROR();
		glBindFragDataLocation(*pCurrProgram, 4, "Color4");				GLERROR();
		glBindFragDataLocation(*pCurrProgram, 5, "Color5");				GLERROR();
		glBindFragDataLocation(*pCurrProgram, 6, "Color6");				GLERROR();
		glBindFragDataLocation(*pCurrProgram, 7, "Color7");				GLERROR();

		glLinkProgram(*pCurrProgram);
		
	} while(*++pCurrProgram != 0);
}
コード例 #2
0
ファイル: GLShader.cpp プロジェクト: TimelessVisions/GLEngine
void GLMainShader::GetShaderLocations()
{
	uint* pCurrProgram = &ProgramID[0];

	do {

		//	Attribute locations
		GetAttribLocation(Vertex,						*pCurrProgram, "Position");
		GetAttribLocation(TexCoords,					*pCurrProgram, "TexCoord");
		GetAttribLocation(Normal,						*pCurrProgram, "Normal");
		GetAttribLocation(Colors,						*pCurrProgram, "Colors");
		GetAttribLocation(Tangent,						*pCurrProgram, "Tangent");
		GetAttribLocation(Bitangent,					*pCurrProgram, "Bitangent");
		GetAttribLocation(VertexJoint,					*pCurrProgram, "Joints");
		GetAttribLocation(VertexWeight,					*pCurrProgram, "Weights");
		GetAttribLocation(Light,						*pCurrProgram, "Light");

		//	Get a handle to the the matrix uniforms
		GetUniformLocation(MatMVP,						*pCurrProgram, "MVP");
		GetUniformLocation(MatMV,						*pCurrProgram, "MV");
		GetUniformLocation(MatN,						*pCurrProgram, "N");
		GetUniformLocation(MatP,						*pCurrProgram, "P");

		//	Get the Light uniform handles
		GetUniformLocation(Bones,						*pCurrProgram, "Bones");		
		GetUniformLocation(LightType,					*pCurrProgram, "LightType");
		GetUniformLocation(LightPosition_eyespace,		*pCurrProgram, "LightPosition_eyespace");
		GetUniformLocation(LightDiffuse,				*pCurrProgram, "LightDiffuse");
		GetUniformLocation(LightAmbient,				*pCurrProgram, "LightAmbient");
		GetUniformLocation(LightSpecular,				*pCurrProgram, "LightSpecular");
		GetUniformLocation(LightLinearAttenuation,		*pCurrProgram, "linearAttenuation");
		GetUniformLocation(LightConstantAttenuation,	*pCurrProgram, "constantAttenuation");
		GetUniformLocation(LightQuadraticAttenuation,	*pCurrProgram, "quadraticAttenuation");

		//	Materials
		GetUniformLocation(MaterialType,				*pCurrProgram, "MaterialType");
		GetUniformLocation(DiffuseTexture,				*pCurrProgram, "DiffuseMap");
		GetUniformLocation(BumpmapTexture,				*pCurrProgram, "NormalMap");
		GetUniformLocation(SpecularTexture,				*pCurrProgram, "SpecularMap");
		GetUniformLocation(RenderedTexture,				*pCurrProgram, "RenderedTexture");
		GetUniformLocation(DepthTexture,				*pCurrProgram, "DepthTexture");
		GetUniformLocation(DiffuseColor,				*pCurrProgram, "DiffuseColor");
		GetUniformLocation(AmbientColor,				*pCurrProgram, "AmbientColor");
		GetUniformLocation(SpecularColor,				*pCurrProgram, "SpecularColor");
		GetUniformLocation(Shininess,					*pCurrProgram, "Shininess");

		glBindFragDataLocation(*pCurrProgram, 0, "Color0");

		//	Relink for the output locations
		glLinkProgram(*pCurrProgram);
		
	} while(*++pCurrProgram != 0);
}
コード例 #3
0
//----------------------------------------------------------------------------------
static GLuint CreateVertexArray(const VertexArray::DeclarationList& declarations, boost::shared_ptr<IndexBuffer> indexBuffer)
{
	GLuint vao;
	glGenVertexArrays(1, &vao);
	glBindVertexArray(vao);

	if (indexBuffer) { indexBuffer->Enable(); }

	for (VertexArray::DeclarationList::const_iterator iter = declarations.cbegin(); iter != declarations.cend(); ++iter)
	{
		(*iter)->vertexBuffer->Enable();
		for (size_t i = 0; i < (*iter)->attributes.size(); ++i)
		{
			// The locations of attributes are fixed globally in the shader so they need to be found by attribute semantic...
			const GLuint attribIndex = GetAttribLocation((*iter)->attributes[i].semantic);

			// Now, enable and configure that particular location...
			LOG(
				"vertex array: %s - %d x %s @ %d\n",
				(*iter)->attributes[i].semantic.c_str(),
				(*iter)->attributes[i].size,
				GetAttribTypeName((*iter)->attributes[i].type),
				attribIndex
				);
			glEnableVertexAttribArray(attribIndex);
			glVertexAttribPointer(attribIndex, (*iter)->attributes[i].size, (*iter)->attributes[i].type, GL_FALSE, (*iter)->stride, (const void*)(*iter)->attributes[i].offset);
		}
	}

	glBindVertexArray(0);
	glBindBuffer(GL_ARRAY_BUFFER, 0);
	if (indexBuffer) { glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); }

	return vao;
}
コード例 #4
0
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//
bool GfxProgram::Create(GfxShader* vertex_shader, GfxShader* fragment_shader, const char *lpstrLocation )
{
	VertexShader = vertex_shader;
	FragmentShader = fragment_shader;

	m_Id = glCreateProgram();
	glAttachShader(m_Id, VertexShader->GetId());
	glAttachShader(m_Id, FragmentShader->GetId());
	glLinkProgram(m_Id);
	check_gl();
	printf("Created program id %d from vs %d and fs %d\n", m_Id, VertexShader->GetId(), FragmentShader->GetId());

	// Prints the information log for a program object
	char log[1024];
	glGetProgramInfoLog(m_Id,sizeof log,NULL,log);
	printf("%d:program:\n%s\n", m_Id, log);

	m_loc = 0;
	if (lpstrLocation != NULL)
		{
		GetAttribLocation( lpstrLocation );
		}

	return true;
}
コード例 #5
0
ファイル: GLShader.cpp プロジェクト: TimelessVisions/GLEngine
void GLShadowMapShader::GetShaderLocations()
{
	uint* pCurrProgram = &ProgramID[0];

	do {
		//	Attribute locations
		GetAttribLocation(Vertex,		*pCurrProgram, "Position");		GLERROR();
		GetAttribLocation(VertexJoint,	*pCurrProgram, "Joints");		GLERROR();
		GetAttribLocation(VertexWeight,	*pCurrProgram, "Weights");		GLERROR();

		//	Uniform locations
		GetUniformLocation(MatMVP,		*pCurrProgram, "MVP");			GLERROR();
		GetUniformLocation(Bones,		*pCurrProgram, "Bones");		GLERROR();

		//	Output locations
		glBindFragDataLocation(*pCurrProgram, 0, "Color0");				GLERROR();
		
		glLinkProgram(*pCurrProgram);
		
	} while(*++pCurrProgram != 0);
}
コード例 #6
0
ファイル: j7.cpp プロジェクト: YutaMatsumoto/airhocky
// Misc Functions
bool bind_shader_variables2(GLuint h_program)
{

  h_gWVP   = GetUniformLocation(h_program, "gWVP");
  // h_gWorld = GetUniformLocation(h_program, "gWorld");

  h_Position = GetAttribLocation( h_program, "Position");
  h_TexCoord = GetAttribLocation( h_program, "TexCoord");
  h_Normal   = GetAttribLocation( h_program, "Normal");

  h_AmbientProduct  = GetUniformLocation( h_program, "AmbientProduct");
  h_DiffuseProduct  = GetUniformLocation( h_program, "DiffuseProduct");
  h_SpecularProduct = GetUniformLocation( h_program, "SpecularProduct");
  h_LightPosition   = GetUniformLocation( h_program, "LightPosition");
  h_Shineness       = GetUniformLocation( h_program, "Shineness");
  h_gSampler        = GetUniformLocation( h_program, "gSampler");

  //enable depth testing
  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_LESS);

  return ( (h_gWorld && h_gWVP) ) ? true : false;

}
コード例 #7
0
ファイル: THRenderer.cpp プロジェクト: tthhkim/THwanEngine
void THDefProgram::Load()
{
	const GLchar* vs=
			"precision mediump float;"
			"uniform vec3 projMat[2];"
			"attribute vec2 aVert;"
			"attribute vec2 aRot;"
			"attribute vec2 aScale;"
			"attribute vec2 aPos;"
			"attribute vec2 aCenter;"
			"attribute vec4 aTex;"

			"varying vec2 vTex;"
			"void main(){"

			"vec2 svert=(aVert-aCenter)*aScale;"
			"vec2 rp=vec2( dot(vec2(aRot.x,-aRot.y),svert) , dot(vec2(aRot.y,aRot.x),svert) );"
			"vec3 rrp=vec3(rp + aPos , 1.0);"
			"gl_Position=vec4(dot(projMat[0],rrp),dot(projMat[1],rrp),0.0,1.0);"

			"vTex=aVert*aTex.zw + aTex.xy;"
			"}";

	const GLchar* fs=
			"precision mediump float;"
			"varying vec2 vTex;"
			"uniform sampler2D sTexture;"
			"uniform vec4 aColor;"
			"uniform vec4 mColor;"
			"void main(){"
			"gl_FragColor=texture2D(sTexture,vTex)*mColor + aColor;"
			"}";
	THProgram::Load(vs,fs);

	vertexHandler=GetAttribLocation("aVert");
	rotationHandler=GetAttribLocation("aRot");
	scaleHandler=GetAttribLocation("aScale");
	positionHandler=GetAttribLocation("aPos");
	textureHandler=GetAttribLocation("aTex");
	centerHandler=GetAttribLocation("aCenter");

	projectMatrixHandler=GetUniformLocation("projMat");
	colorAddHandler=GetUniformLocation("aColor");
	colorMultiplyHandler=GetUniformLocation("mColor");
}
コード例 #8
0
ファイル: gl3.cpp プロジェクト: arnochiu/OpenGLES-sim
GL_APICALL int GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name)
{
	CONTEXT_EXEC_RETURN(GetAttribLocation(program, name));
}