diff options
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.cpp | 33 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.h | 10 |
2 files changed, 18 insertions, 25 deletions
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index bc1683cb5..cad278381 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp | |||
| @@ -81,7 +81,7 @@ void RendererOpenGL::SwapBuffers() { | |||
| 81 | RenderXFB(framebuffer_size, framebuffer_size); | 81 | RenderXFB(framebuffer_size, framebuffer_size); |
| 82 | 82 | ||
| 83 | // XFB->Window copy | 83 | // XFB->Window copy |
| 84 | RenderFramebuffer(); | 84 | DrawScreens(); |
| 85 | 85 | ||
| 86 | // Swap buffers | 86 | // Swap buffers |
| 87 | render_window->PollEvents(); | 87 | render_window->PollEvents(); |
| @@ -151,8 +151,16 @@ void RendererOpenGL::RenderXFB(const Common::Rect& src_rect, const Common::Rect& | |||
| 151 | // so this may need to be changed (pair for each screen). | 151 | // so this may need to be changed (pair for each screen). |
| 152 | } | 152 | } |
| 153 | 153 | ||
| 154 | /// Initialize the FBO | 154 | /** |
| 155 | void RendererOpenGL::InitFramebuffer() { | 155 | * Initializes the OpenGL state and creates persistent objects. |
| 156 | */ | ||
| 157 | void RendererOpenGL::InitOpenGLObjects() { | ||
| 158 | glGenVertexArrays(1, &vertex_array_id); | ||
| 159 | glBindVertexArray(vertex_array_id); | ||
| 160 | |||
| 161 | glClearColor(1.0f, 1.0f, 1.0f, 0.0f); | ||
| 162 | glDisable(GL_DEPTH_TEST); | ||
| 163 | |||
| 156 | program_id = ShaderUtil::LoadShaders(GLShaders::g_vertex_shader, GLShaders::g_fragment_shader); | 164 | program_id = ShaderUtil::LoadShaders(GLShaders::g_vertex_shader, GLShaders::g_fragment_shader); |
| 157 | sampler_id = glGetUniformLocation(program_id, "sampler"); | 165 | sampler_id = glGetUniformLocation(program_id, "sampler"); |
| 158 | attrib_position = glGetAttribLocation(program_id, "position"); | 166 | attrib_position = glGetAttribLocation(program_id, "position"); |
| @@ -190,7 +198,10 @@ void RendererOpenGL::InitFramebuffer() { | |||
| 190 | glBindTexture(GL_TEXTURE_2D, 0); | 198 | glBindTexture(GL_TEXTURE_2D, 0); |
| 191 | } | 199 | } |
| 192 | 200 | ||
| 193 | void RendererOpenGL::RenderFramebuffer() { | 201 | /** |
| 202 | * Draws the emulated screens to the emulator window. | ||
| 203 | */ | ||
| 204 | void RendererOpenGL::DrawScreens() { | ||
| 194 | glViewport(0, 0, resolution_width, resolution_height); | 205 | glViewport(0, 0, resolution_width, resolution_height); |
| 195 | glClear(GL_COLOR_BUFFER_BIT); | 206 | glClear(GL_COLOR_BUFFER_BIT); |
| 196 | 207 | ||
| @@ -253,20 +264,8 @@ void RendererOpenGL::Init() { | |||
| 253 | exit(-1); | 264 | exit(-1); |
| 254 | } | 265 | } |
| 255 | 266 | ||
| 256 | // Generate VAO | ||
| 257 | glGenVertexArrays(1, &vertex_array_id); | ||
| 258 | glBindVertexArray(vertex_array_id); | ||
| 259 | |||
| 260 | glClearColor(1.0f, 1.0f, 1.0f, 0.0f); | ||
| 261 | glDisable(GL_DEPTH_TEST); | ||
| 262 | |||
| 263 | glPixelStorei(GL_UNPACK_ALIGNMENT, 4); | ||
| 264 | |||
| 265 | // Initialize everything else | ||
| 266 | // -------------------------- | ||
| 267 | InitFramebuffer(); | ||
| 268 | |||
| 269 | NOTICE_LOG(RENDER, "GL_VERSION: %s\n", glGetString(GL_VERSION)); | 267 | NOTICE_LOG(RENDER, "GL_VERSION: %s\n", glGetString(GL_VERSION)); |
| 268 | InitOpenGLObjects(); | ||
| 270 | } | 269 | } |
| 271 | 270 | ||
| 272 | /// Shutdown the renderer | 271 | /// Shutdown the renderer |
diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h index 98ae7aa66..3dcb331be 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.h +++ b/src/video_core/renderer_opengl/renderer_opengl.h | |||
| @@ -42,14 +42,8 @@ public: | |||
| 42 | void ShutDown(); | 42 | void ShutDown(); |
| 43 | 43 | ||
| 44 | private: | 44 | private: |
| 45 | 45 | void InitOpenGLObjects(); | |
| 46 | /// Initialize the FBO | 46 | void DrawScreens(); |
| 47 | void InitFramebuffer(); | ||
| 48 | |||
| 49 | // Blit the FBO to the OpenGL default framebuffer | ||
| 50 | void RenderFramebuffer(); | ||
| 51 | |||
| 52 | /// Updates the framerate | ||
| 53 | void UpdateFramerate(); | 47 | void UpdateFramerate(); |
| 54 | 48 | ||
| 55 | /// Structure used for storing information for rendering each 3DS screen | 49 | /// Structure used for storing information for rendering each 3DS screen |