void render() { fr.SetCameraPos(Camera.getPos()); glm::mat4 view = Camera.getView(); glm::mat4 projection = Camera.getProjection(); glClearColor( 0.f, 0.f, 0.0f, 0.f ); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); fr.render(view, projection); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); pr.render(view,projection); pr2.render(view,projection); pr3.render(view,projection); glDisable(GL_BLEND); GBuffer::BindForWriting(); glDepthMask(GL_TRUE); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearColor( 0.f, 0.f, 0.0f, 0.f ); Plane.render(view,projection); glDisable(GL_DEPTH_TEST); GBuffer::DefaultBuffer(); return; }
void render() { fr.SetCameraPos(Camera.getPos()); glm::mat4 view = Camera.getView(); glm::mat4 projection = Camera.getProjection(); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); glClearColor( 0.f, 0.f, 0.5f, 0.f ); fr.render(view, projection); GBuffer::BindForWriting(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glDepthMask(GL_TRUE); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); glEnable(GL_CULL_FACE); glCullFace(GL_FRONT); glClearColor( 0.f, 0.f, 0.5f, 0.f ); Terrain.render(view, projection); GBuffer::DefaultBuffer(); //glDisable(GL_CULL_FACE); //glDisable(GL_DEPTH_TEST); return; }
bool init() { //Initialization flag bool success = true; //Initialize SDL if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { printf( "SDL could not initialize! SDL Error: %s\n", SDL_GetError() ); success = false; } else { //Use OpenGL 3.3 -- Make sure you have a graphics card that supports 3.3 SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, 3 ); SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, 3 ); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 ); SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 ); SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 ); //Create window gWindow = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN ); if ( gWindow == NULL ) { printf( "Window could not be created! SDL Error: %s\n", SDL_GetError() ); success = false; } else { //Create context gContext = SDL_GL_CreateContext( gWindow ); if ( gContext == NULL ) { printf( "OpenGL context could not be created! SDL Error: %s\n", SDL_GetError() ); success = false; } else { auto t = glGetError(); cout << ErrorString(t) << endl; //Use Vsync if ( SDL_GL_SetSwapInterval( 1 ) < 0 ) { printf( "Warning: Unable to set VSync! SDL Error: %s\n", SDL_GetError() ); } t = glGetError(); cout << ErrorString(t) << endl; #if !defined(__APPLE__) && !defined(MACOSX) cout << glewGetString(GLEW_VERSION) << endl; glewExperimental = GL_TRUE; auto status = glewInit(); //Check for error if (status != GLEW_OK) { //std::cerr << "GLEW Error: " << glewGetErrorString(status) << "\n"; success = false; } #endif t = glGetError(); cout << ErrorString(t) << endl; //Initialize OpenGL if ( !initGL() ) { printf( "OUCH Unable to initialize OpenGL!\n" ); success = false; } //cout << glGetString(GL_VERSION) << endl; cout << "GUFFER SUCCESS: " << GBuffer::Init(SCREEN_WIDTH, SCREEN_HEIGHT) << endl; fr.setup(); fr.setScreenDims(SCREEN_WIDTH, SCREEN_HEIGHT); } } } GLuint vao; glGenVertexArrays(1, &vao); glBindVertexArray(vao); return success; }