예제 #1
0
파일: gl_rmain.c 프로젝트: DaneTheory/quake
/*
================
R_RenderScene

r_refdef must be set before the first call
================
*/
void R_RenderScene (void)
{
	R_SetupFrame ();

	R_SetFrustum ();

	R_SetupGL ();

	R_MarkLeaves ();	// done here so we know if we're in water

	R_DrawWorld ();		// adds static entities to the list

	S_ExtraUpdate ();	// don't let sound get messed up if going slow

	R_DrawEntitiesOnList ();

	GL_DisableMultitexture();

	R_RenderDlights ();

	R_DrawParticles ();

#ifdef GLTEST
	Test_Draw ();
#endif

}
예제 #2
0
/*
================
R_RenderScene

r_refdef must be set before the first call
================
*/
void R_RenderScene (void)
{
	R_SetupFrame ();

	R_SetFrustum ();

	R_SetupGL ();
	
	R_MarkLeaves ();	// done here so we know if we're in water

	/* Experimenting with lighting.
	glEnable(GL_LIGHTING);
	glShadeModel(GL_SMOOTH);
	glEnable(GL_LIGHT0);
	glEnable(GL_COLOR_MATERIAL);
	GLfloat specular[4] = {1, 1, 1, 1};
	glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular);
	int li = 0;
	
	for (; li < 8; li += 1)
	{
		if (cl_dlights[li].die >= cl.time && cl_dlights[li].radius)
		{
			GLfloat pos[4] = { cl_dlights[li].origin[0], cl_dlights[li].origin[1], cl_dlights[li].origin[2], 1.0};
			glLightfv(GL_LIGHT0+li, GL_POSITION, pos);
			glLightf(GL_LIGHT0+li, GL_CONSTANT_ATTENUATION, 0.1);
			glEnable(GL_LIGHT0+li);
		}
		else
		{
			break;
		}
	}
	*/
	R_DrawWorld ();		// adds static entities to the list

	S_ExtraUpdate ();	// don't let sound get messed up if going slow

	/*for (li -=1; li >= 0; li -= 1)
	{
		glDisable(GL_LIGHT0+li);
	}
	glDisable(GL_LIGHTING);*/
	
	R_DrawEntitiesOnList ();
	
	GL_DisableMultitexture();

	R_RenderDlights ();

	R_DrawParticles ();

#ifdef GLTEST
	Test_Draw ();
#endif

}