Renderer::Renderer(Window &parent) : OGLRenderer(parent) { camera = new Camera(); heightMap = new HeightMap(TEXTUREDIR"terrain.raw"); quad = Mesh::GenerateQuad(); camera->SetPosition(Vector3(RAW_WIDTH * HEIGHTMAP_X / 2.0f, 500.0f, RAW_WIDTH * HEIGHTMAP_X)); light = new Light(Vector3((RAW_HEIGHT * HEIGHTMAP_X / 2.0f), 500.0f,( RAW_WIDTH * HEIGHTMAP_X / 2.0f)), Vector4(0.9f, 0.9f, 1.0f, 1), (RAW_WIDTH * HEIGHTMAP_X) / 2.0f); reflectShader = new Shader(SHADERDIR "PerPixelVertex.glsl", SHADERDIR "reflectFragment.glsl"); skyboxShader = new Shader(SHADERDIR "skyboxVertex.glsl", SHADERDIR "skyboxFragment.glsl"); lightShader = new Shader(SHADERDIR "PerPixelVertex.glsl", SHADERDIR "PerPixelFragment.glsl"); if(!reflectShader->LinkProgram() || !lightShader->LinkProgram() || !skyboxShader->LinkProgram()) { return; } //quad->SetTexture(SOIL_load_OGL_texture(TEXTUREDIR"water.TGA", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); quad->SetTexture(SOIL_load_OGL_texture(TEXTUREDIR"Barren RedsDOT3.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); heightMap->SetTexture(SOIL_load_OGL_texture(TEXTUREDIR"Barren Reds.JPG", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); heightMap->SetBumpMap(SOIL_load_OGL_texture(TEXTUREDIR"Barren RedsDOT3.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); cubeMap = SOIL_load_OGL_cubemap(TEXTUREDIR"rusted_west.jpg", TEXTUREDIR"rusted_east.jpg", TEXTUREDIR"rusted_up.jpg", TEXTUREDIR"rusted_down.jpg", TEXTUREDIR"rusted_south.jpg", TEXTUREDIR"rusted_north.jpg", SOIL_LOAD_RGB, SOIL_CREATE_NEW_ID, 0); if(!cubeMap || !quad->GetTexture() || !heightMap->GetTexture() || !heightMap->GetBumpMap()) { return; } SetTextureRepeating(quad->GetTexture(), true); SetTextureRepeating(heightMap->GetTexture(),true); SetTextureRepeating(heightMap->GetBumpMap(),true); init = true; waterRotate = 0.0f; projMatrix = Matrix4::Perspective(1.0f, 15000.0f, (float)width / (float)height, 45.0f); glEnable(GL_DEPTH_TEST); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS); }
Renderer :: Renderer ( Window & parent ) : OGLRenderer ( parent ) { camera = new Camera (0.0f ,0.0f , Vector3 ( RAW_WIDTH * HEIGHTMAP_X / 2.0f ,500 , RAW_HEIGHT * HEIGHTMAP_Z )); heightMap = new HeightMap ("../../Textures/world.raw"); currentShader = new Shader ("../../Shaders/bumpVertex.glsl", "../../Shaders/bumpFragment.glsl"); heightMap -> SetTexture ( SOIL_load_OGL_texture ("../../Textures/Barren Reds.JPG", SOIL_LOAD_AUTO , SOIL_CREATE_NEW_ID , SOIL_FLAG_MIPMAPS )); heightMap -> SetBumpMap ( SOIL_load_OGL_texture ("../../Textures/Barren RedsDOT3.jpg", SOIL_LOAD_AUTO , SOIL_CREATE_NEW_ID , SOIL_FLAG_MIPMAPS )); if (! currentShader -> LinkProgram () || ! heightMap -> GetTexture () || ! heightMap -> GetBumpMap () ) { return ; } SetTextureRepeating ( heightMap -> GetTexture () , true ); SetTextureRepeating ( heightMap -> GetBumpMap () , true ); light = new Light ( Vector3 (( RAW_HEIGHT * HEIGHTMAP_X / 2.0f ) ,500.0f ,( RAW_HEIGHT * HEIGHTMAP_Z / 2.0f )) ,Vector4 (1 ,1 ,1 ,1) , ( RAW_WIDTH * HEIGHTMAP_X ) / 2.0f ); projMatrix = Matrix4 :: Perspective (1.0f ,15000.0f ,( float ) width / ( float ) height , 45.0f ); glEnable ( GL_DEPTH_TEST ); init = true ; }
GameEntity* MyGame::BuildHeightmapEntity() { GameEntity*g = new GameEntity(new SceneNode(heightmap), new PhysMap(TEXTUREDIR"stage1.raw",heightmap)); g->ConnectToSystems(); float mass = 1.0f; SceneNode &test = g->GetRenderNode(); Vector3 temp; if(g->GetRenderNode().GetMesh()->GetTexture()) SetTextureRepeating( g->GetRenderNode().GetMesh()->GetTexture(), true); g->GetPhysicsNode().dynamic = false; g->GetPhysicsNode().SetInvInertia(temp); g->GetPhysicsNode().setInvMass(mass); g->GetPhysicsNode().SetPosition(Vector3(0,0,0)); g->GetPhysicsNode().UpdateTransform(); g->GetPhysicsNode().gravity = false; test.SetBoundingRadius(500000.0f); test.SetShader(bumpShader); return g; }
Renderer::Renderer(Window & parent) : OGLRenderer(parent) { heightMap = new HeightMap(TEXTUREDIR"terrain.raw"); CubeRobot::CreateCube(); camera = new Camera(); camera->SetPosition(Vector3(0.0f, 750.0f, 750.0f)); sceneShader=new Shader(SHADERDIR"SceneVertex.glsl", SHADERDIR"SceneFragment.glsl"); currentShader = new Shader(SHADERDIR"LandVertex.glsl", SHADERDIR"LandFragment.glsl"); if (!currentShader->LinkProgram()) { return; } if (!sceneShader->LinkProgram()) { return; } heightMap->SetTexture(SOIL_load_OGL_texture(TEXTUREDIR"BarrenReds.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); projMatrix = Matrix4::Perspective(1.0f, 10000.0f, (float)width / (float)height, 45.0f); if (!heightMap->GetTexture()) { return; } SetTextureRepeating(heightMap->GetTexture(), true); projMatrix = Matrix4::Perspective(1.0f, 10000.0f, (float)width / (float)height, 45.0f); root = new SceneNode(); /*for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { for (int k = 0; k < 9; k++) { CubeRobot * zaku = new CubeRobot(); zaku->SetTransform(Matrix4::Translation(Vector3((i - 4) * 100, (j - 4) * 100, (k - 4) * 100)) * Matrix4::Scale(Vector3(2, 2, 2)));*/ root->AddChild(/*zaku*/new CubeRobot()); /* } } } */ root->SetTransform(root->GetTransform() * Matrix4::Translation(Vector3(15.0f, 200.0f, 0.0f))); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE);
Renderer :: Renderer ( Window & parent ) : OGLRenderer ( parent ) { heightMap = new HeightMap ("../../Textures/terrain.raw"); camera = new Camera (); currentShader = new Shader ("../../Shaders/TexturedVertex.glsl","../../Shaders/TexturedFragment.glsl"); if (! currentShader -> LinkProgram ()) { return ; } heightMap -> SetTexture ( SOIL_load_OGL_texture ("../../Textures/Barren Reds.JPG", SOIL_LOAD_AUTO , SOIL_CREATE_NEW_ID , SOIL_FLAG_MIPMAPS )); if (! heightMap -> GetTexture ()) { return ; } SetTextureRepeating ( heightMap -> GetTexture () , true ); projMatrix = Matrix4 :: Perspective (1.0f ,10000.0f , ( float ) width /( float ) height ,45.0f ); glEnable ( GL_DEPTH_TEST ); glEnable ( GL_CULL_FACE ); glCullFace ( GL_BACK ); init = true ;
MyGame::MyGame() { //Init variables ammo = 0; force = 0; waveno=0; cube = new OBJMesh(MESHDIR"cube.obj"); cube->SetTexture(SOIL_load_OGL_texture( TEXTUREDIR"Barren Reds.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); if(!cube->GetTexture()) { cout << "barren reds is playing up" << endl; } quad = Mesh::GenerateQuad(); enemy = new OBJMesh(MESHDIR"ico2.obj"); enemy ->SetTexture(SOIL_load_OGL_texture( TEXTUREDIR"leo.png", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); if(!enemy->GetTexture()) { cout << "leopard skins f****d" << endl; } sphere = new OBJMesh(MESHDIR"ico2.obj"); sphere->SetTexture(SOIL_load_OGL_texture( TEXTUREDIR"swirl.tga", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); if(!sphere->GetTexture()) { cout << "swirl is BUM" << endl; } player = new OBJMesh(MESHDIR"ico2.obj"); player->SetTexture(SOIL_load_OGL_texture( TEXTUREDIR"cliff.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); if(!player->GetTexture()) { cout << "cliff is f****d" << endl; } CubeMap = SOIL_load_OGL_cubemap( TEXTUREDIR"interstellar_ft.tga", TEXTUREDIR"interstellar_bk.tga", TEXTUREDIR"interstellar_up.tga", TEXTUREDIR"interstellar_dn.tga", TEXTUREDIR"interstellar_rt.tga", TEXTUREDIR"interstellar_lf.tga", SOIL_LOAD_RGB, SOIL_CREATE_NEW_ID,0); enemy->SetCubeMap(CubeMap); if(!CubeMap) cout << "cube maps f*****g broken"; bumpShader = new Shader(SHADERDIR"bumpVertex.glsl",SHADERDIR"bumpFragment.glsl"); if(!bumpShader->LinkProgram()) { return; } enemyShader = new Shader(SHADERDIR"perPixelVertex.glsl",SHADERDIR"enemyFragment.glsl"); if(!enemyShader->LinkProgram()) { return; } heightmap = new HeightMap(TEXTUREDIR"stage1.raw"); heightmap->SetTexture(SOIL_load_OGL_texture( TEXTUREDIR"grass.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); heightmap->SetBumpMap(SOIL_load_OGL_texture( TEXTUREDIR"grassbump.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); SetTextureRepeating(heightmap->GetBumpMap(),true); if(!heightmap->GetTexture()){ cout << "height maps f*****g broken" << endl; } if(!heightmap->GetBumpMap()) { cout << "height map bump map f*****g broken" << endl; } for(int i = 0; i < NO_PROJECTILES; ++i) { projectiles[i] = BuildSphereEntity(25.0f); projectiles[i]->GetPhysicsNode().SetPosition(Vector3((51.0f* i) + 100.0f,500.0f,30.0f * i)); projectiles[i]->GetPhysicsNode().sleep = true; } for(int i = 0; i < NO_LASERS; ++i) { PhysicsSystem::GetPhysicsSystem().AddLaser(buildLaserEntity()); } PlanePos = Vector3(2048.0f,100.0f,2048.0f); // y = 450.0f playerEntity = buildPlayerEntity(); PhysicsSystem::GetPhysicsSystem().SetPlayer(playerEntity); allEntities.push_back(playerEntity); allEntities.push_back(BuildHeightmapEntity()); for(int i = 0; i < NO_PROJECTILES; ++i) { allEntities.push_back(projectiles[i]); } for(int i = 0; i < 10; ++i) { EnemyEntity* ee = buildEnemyEntity(Vector3(PlanePos.x + 150,PlanePos.y + 150, PlanePos.z + (i * 90) - 270)); ee->SetY(100.0f + (100.0f * i)); allEntities.push_back(ee); PhysicsSystem::GetPhysicsSystem().AddEnemy((ee)); } //gameCamera = new Camera(-2.0f,270.0f,Vector3(-360.0f,450.0f,3408.0f)); //gameCamera = new TPCamera(); gameCamera = new CameraMan(playerEntity->circleT); gameCamera->toggleLock(); Renderer::GetRenderer().SetCamera(gameCamera); ret = new Reticule(WIDTH,HEIGHT,FOV,ASPECT, gameCamera); //ret->c = gameCamera; Renderer::GetRenderer().SetReticule(ret); PhysicsSystem::GetPhysicsSystem().SetReticule(ret); //ret = new Reticule(); }
Renderer::Renderer(Window &parent) : OGLRenderer(parent) { camera = new Camera(-30.0f, 180.0f, Vector3(0.0f, -1500.0f, 0.0f)); quad = Mesh::GenerateQuad(); quad_corner = Mesh::GenerateQuad(); heightMap = new HeightMap(TEXTUREDIR"terrain.raw"); heightMap->SetTexture(SOIL_load_OGL_texture(TEXTUREDIR"BarrenReds.JPG", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); sceneShader = new Shader(SHADERDIR"Test_03_TexturedVertex.glsl", SHADERDIR"Test_03_TexturedFragment.glsl"); bool sceneFlag = sceneShader->LinkProgram(); combineShader = new Shader(SHADERDIR"Test_03_TexturedVertex.glsl", SHADERDIR"Test_10_ProcessFragment.glsl"); bool combFlag = combineShader->LinkProgram(); if (!combineShader->LinkProgram() || !sceneShader->LinkProgram() || !heightMap->GetTexture()) { return; } SetTextureRepeating(heightMap->GetTexture(), true); // scene depth texture glGenTextures(1, &bufferDepthTex); glBindTexture(GL_TEXTURE_2D, bufferDepthTex); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, width, height, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, NULL); // colour texture for (int i = 0; i < 2; ++i) { glGenTextures(1, &bufferColourTex[i]); glBindTexture(GL_TEXTURE_2D, bufferColourTex[i]); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); } glGenTextures(1, &debugColorTex); glBindTexture(GL_TEXTURE_2D, debugColorTex); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 800, 600, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); // set up buffer for scene rendering and post processing glGenFramebuffers(1, &bufferFBO); glGenFramebuffers(1, &processFBO); glGenFramebuffers(1, &debugbufferFBO); glBindFramebuffer(GL_FRAMEBUFFER, bufferFBO); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, bufferDepthTex, 0); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, bufferDepthTex, 0); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, bufferColourTex[0], 0); if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE || !bufferDepthTex || !bufferColourTex[0]) { return; } glBindFramebuffer(GL_FRAMEBUFFER, 0); glEnable(GL_DEPTH_TEST); init = true; }
Renderer::Renderer(Window &parent): OGLRenderer(parent) { camera = new Camera(-10.0f, 220.0f, Vector3(0,500,0)); quad = Mesh::GenerateQuad(); heightMap = new HeightMap("../../Textures/terrain.raw"); heightMap->SetTexture(SOIL_load_OGL_texture("../../Textures/Barren Reds.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS)); sceneShader = new Shader("../../Shaders/TexturedVertex2.glsl", "../../Shaders/TexturedFragment2.glsl"); processShader = new Shader("../../Shaders/TexturedVertex2.glsl", "../../Shaders/EdgeFragment.glsl"); if (!processShader->LinkProgram()) { return; } if (!sceneShader->LinkProgram()) { return; } if (!heightMap->GetTexture()) { return; } SetTextureRepeating(heightMap->GetTexture(), true); //Generate scene depth texture. glGenTextures(1, &bufferDepthTex); glBindTexture(GL_TEXTURE_2D, bufferDepthTex); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, width, height, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, NULL); //And colour texture. for (int i = 0; i < 2; ++i) { glGenTextures(1, &bufferColourTex[i]); glBindTexture(GL_TEXTURE_2D, bufferColourTex[i]); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); } glGenFramebuffers(1, &bufferFBO); //Render the scene into this. glGenFramebuffers(1, &processFBO); //Post-processing in this. glBindFramebuffer(GL_FRAMEBUFFER, bufferFBO); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, bufferDepthTex, 0); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, bufferDepthTex, 0); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, bufferColourTex[0], 0); //Check FBO attachment success with this command if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE || !bufferDepthTex || !bufferColourTex[0]) { return; } glBindFramebuffer(GL_FRAMEBUFFER, 0); glEnable(GL_DEPTH_TEST); init = true; }