summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/renderer_opengl')
-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() {
RenderXFB(framebuffer_size, framebuffer_size);
// XFB->Window copy
- RenderFramebuffer();
+ DrawScreens();
// Swap buffers
render_window->PollEvents();
@@ -151,8 +151,16 @@ void RendererOpenGL::RenderXFB(const Common::Rect& src_rect, const Common::Rect&
// so this may need to be changed (pair for each screen).
}
-/// Initialize the FBO
-void RendererOpenGL::InitFramebuffer() {
+/**
+ * Initializes the OpenGL state and creates persistent objects.
+ */
+void RendererOpenGL::InitOpenGLObjects() {
+ glGenVertexArrays(1, &vertex_array_id);
+ glBindVertexArray(vertex_array_id);
+
+ glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
+ glDisable(GL_DEPTH_TEST);
+
program_id = ShaderUtil::LoadShaders(GLShaders::g_vertex_shader, GLShaders::g_fragment_shader);
sampler_id = glGetUniformLocation(program_id, "sampler");
attrib_position = glGetAttribLocation(program_id, "position");
@@ -190,7 +198,10 @@ void RendererOpenGL::InitFramebuffer() {
glBindTexture(GL_TEXTURE_2D, 0);
}
-void RendererOpenGL::RenderFramebuffer() {
+/**
+ * Draws the emulated screens to the emulator window.
+ */
+void RendererOpenGL::DrawScreens() {
glViewport(0, 0, resolution_width, resolution_height);
glClear(GL_COLOR_BUFFER_BIT);
@@ -253,20 +264,8 @@ void RendererOpenGL::Init() {
exit(-1);
}
- // Generate VAO
- glGenVertexArrays(1, &vertex_array_id);
- glBindVertexArray(vertex_array_id);
-
- glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
- glDisable(GL_DEPTH_TEST);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
-
- // Initialize everything else
- // --------------------------
- InitFramebuffer();
-
NOTICE_LOG(RENDER, "GL_VERSION: %s\n", glGetString(GL_VERSION));
+ InitOpenGLObjects();
}
/// 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:
void ShutDown();
private:
-
- /// Initialize the FBO
- void InitFramebuffer();
-
- // Blit the FBO to the OpenGL default framebuffer
- void RenderFramebuffer();
-
- /// Updates the framerate
+ void InitOpenGLObjects();
+ void DrawScreens();
void UpdateFramerate();
/// Structure used for storing information for rendering each 3DS screen