Esempio n. 1
0
void CShaderObject::BindStateMatrix(const char* paramName, unsigned int matrix)
{
    // Check and validate bind status //
	if(!m_bIsBound)
		return;

    // Get and validate bind point //
	int bind_point = glGetUniformLocation(m_shaderObject, paramName);
	if(bind_point < 0)
		return;

	mat4 MV, P, F;
	mat4_load_identity(MV);
	mat4_load_identity(P);

	if(matrix & MATRIX_MODELVIEW)
		glGetFloatv(GL_MODELVIEW_MATRIX, MV);
	if(matrix & MATRIX_PROJECTION)
		glGetFloatv(GL_PROJECTION_MATRIX, P);

	mat4_mul_mat4(P, MV, F);

	if(matrix & MATRIX_TRANSPOSE)
		mat4_transpose(F);

	glUniformMatrix4fv(bind_point, 1, false, F);
}
Esempio n. 2
0
static void bldg_draw(const bldg_s *bldg)
{
    // Check if in view dist
    int hx = (bldg->pos[0]>>18);
    int hz = (bldg->pos[2]>>18);
    hx -= hmap_visx;
    hz -= hmap_visz;
    if(hx < 0) hx = -hx;
    if(hz < 0) hz = -hz;

    if(hx > VISRANGE || hz > VISRANGE) return;

    mat4_load_identity(&mat_obj);
    mat4_translate_vec3(&mat_obj, (vec3 *)&bldg->pos);
    //mat4_translate_imm3(&mat_obj, 0, hmap_get(bldg->pos[0], bldg->pos[2]), 0);
    mesh_draw(bldg->mesh, 0);
}