summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp33
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.h10
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/**
155void RendererOpenGL::InitFramebuffer() { 155 * Initializes the OpenGL state and creates persistent objects.
156 */
157void 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
193void RendererOpenGL::RenderFramebuffer() { 201/**
202 * Draws the emulated screens to the emulator window.
203 */
204void 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
44private: 44private:
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