// ugh this is all wrong, not going to be shader sorted, etc // but let's just do the stupid thing first // Also, shouldn't this be in a render class instead of scene? void Scene::RenderEverything(Camera* pCamera) { RenderGroundPlane(pCamera); RenderDynamicEntities(pCamera); RenderQuaxols(pCamera, m_pQuaxolShader); }
static void RenderGeometry() { g_pShaderInterface->SetStateMatrix("g_matWorldViewProj", MATRIX_MODELVIEW | MATRIX_PROJECTION); g_pShaderInterface->SetStateMatrix("g_matWorldView", MATRIX_MODELVIEW); RenderGroundPlane(); RenderCornellBox(10.0f); // glMatrixMode(GL_MODELVIEW); // glPushMatrix(); // glTranslatef( 0.0f, 1.0f, 0.0f ); // glScalef(0.01F, 0.01F, 0.01F); // g_pShaderInterface->SetStateMatrix("g_matWorldViewProj", MATRIX_MODELVIEW | MATRIX_PROJECTION); // g_pShaderInterface->SetStateMatrix("g_matWorldView", MATRIX_MODELVIEW); // g_model.Render(); // glPopMatrix(); }
void GraphicsInit() { int red_bits, green_bits, blue_bits; struct {GLint x, y, width, height;} viewport; glEnable(GL_DEPTH_TEST); /* turn on z-buffer */ glGetIntegerv(GL_RED_BITS, &red_bits); glGetIntegerv(GL_GREEN_BITS, &green_bits); glGetIntegerv(GL_BLUE_BITS, &blue_bits); glGetIntegerv(GL_VIEWPORT, &viewport.x); printf("OpenGL window has %d bits red, %d green, %d blue; viewport is %dx%d\n", red_bits, green_bits, blue_bits, viewport.width, viewport.height); /* setup perspective camera with OpenGL */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0,(double) viewport.width/viewport.height, 0.01, 200.0); /* from here on we're setting modeling transformations */ glMatrixMode(GL_MODELVIEW); //Move away from center glTranslatef(0.0, 0.0, -5.0); camera.zoom = 1; camera.tw = 0; camera.el = -15; camera.az = -25; camera.atx = 0; camera.aty = 0; camera.atz = 0; // two white lights GLfloat light_Ka[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat light_Kd[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat light_Ks[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat light0_pos[] = { 0.0, groundPlaneLightHeight, 0.0, 0.0 }; // GLfloat light0_pos[] = { -50.0, 50.0, 30.0, 0.0 }; GLfloat light1_pos[] = { 1.0, -1.0, 0.0, 0.0 }; // lights glLightfv(GL_LIGHT0, GL_AMBIENT, light_Ka); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_Kd); glLightfv(GL_LIGHT0, GL_SPECULAR, light_Ks); glLightfv(GL_LIGHT0, GL_POSITION, light0_pos); glLightfv(GL_LIGHT1, GL_AMBIENT, light_Ka); glLightfv(GL_LIGHT1, GL_DIFFUSE, light_Kd); glLightfv(GL_LIGHT1, GL_SPECULAR, light_Ks); glLightfv(GL_LIGHT1, GL_POSITION, light1_pos); glEnable(GL_LIGHT0); glEnable(GL_LIGHT1); glEnable(GL_NORMALIZE); glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, true); // screen buffer glClearDepth(1.0); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glShadeModel(GL_SMOOTH); glEnable(GL_POLYGON_SMOOTH); glEnable(GL_LINE_SMOOTH); glHint(GL_POLYGON_SMOOTH_HINT,GL_NICEST); glHint(GL_POINT_SMOOTH_HINT,GL_NICEST); glHint(GL_LINE_SMOOTH_HINT,GL_NICEST); glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); //&groundPlaneHeight, &groundPlaneLightHeight, &groundPlaneSize, &groundPlaneR, &groundPlaneG, &groundPlaneB, &groundPlaneAmbient, &groundPlaneDiffuse, &groundPlaneSpecular, &groundPlaneShininess; // 0.0,180.0,150.0,r0.81,g0.81,b0.55,a0.1,d0.4,s0.1,sh120.0 double groundPlaneHeight = 0.0; double groundPlaneSize = 200.0; double groundPlaneR = 0.81; double groundPlaneG = 0.81; double groundPlaneB = 0.55; double groundPlaneAmbient = 0.1; double groundPlaneDiffuse = 0.9; double groundPlaneSpecular = 0.1; double groundPlaneShininess = 120.0; displayListGround = glGenLists(1); glNewList(displayListGround, GL_COMPILE); RenderGroundPlane(groundPlaneSize, groundPlaneHeight, groundPlaneR, groundPlaneG, groundPlaneB, groundPlaneAmbient, groundPlaneDiffuse, groundPlaneSpecular, groundPlaneShininess); glEndList(); }