|
|
|
@ -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
|
|
|
|
|