|
|
@@ -92,23 +92,23 @@ static std::array<GLfloat, 3 * 2> MakeOrthographicMatrix(const float width, cons
|
|
|
return matrix;
|
|
|
}
|
|
|
|
|
|
-ScopeAcquireGLContext::ScopeAcquireGLContext() {
|
|
|
+ScopeAcquireGLContext::ScopeAcquireGLContext(EmuWindow& emu_window_) : emu_window{emu_window_} {
|
|
|
if (Settings::values.use_multi_core) {
|
|
|
- VideoCore::g_emu_window->MakeCurrent();
|
|
|
+ emu_window.MakeCurrent();
|
|
|
}
|
|
|
}
|
|
|
ScopeAcquireGLContext::~ScopeAcquireGLContext() {
|
|
|
if (Settings::values.use_multi_core) {
|
|
|
- VideoCore::g_emu_window->DoneCurrent();
|
|
|
+ emu_window.DoneCurrent();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-RendererOpenGL::RendererOpenGL() = default;
|
|
|
+RendererOpenGL::RendererOpenGL(EmuWindow& window) : RendererBase{window} {}
|
|
|
RendererOpenGL::~RendererOpenGL() = default;
|
|
|
|
|
|
/// Swap buffers (render frame)
|
|
|
void RendererOpenGL::SwapBuffers(boost::optional<const Tegra::FramebufferConfig&> framebuffer) {
|
|
|
- ScopeAcquireGLContext acquire_context;
|
|
|
+ ScopeAcquireGLContext acquire_context{render_window};
|
|
|
|
|
|
Core::System::GetInstance().perf_stats.EndSystemFrame();
|
|
|
|
|
|
@@ -130,10 +130,10 @@ void RendererOpenGL::SwapBuffers(boost::optional<const Tegra::FramebufferConfig&
|
|
|
// Load the framebuffer from memory, draw it to the screen, and swap buffers
|
|
|
LoadFBToScreenInfo(*framebuffer, screen_info);
|
|
|
DrawScreen();
|
|
|
- render_window->SwapBuffers();
|
|
|
+ render_window.SwapBuffers();
|
|
|
}
|
|
|
|
|
|
- render_window->PollEvents();
|
|
|
+ render_window.PollEvents();
|
|
|
|
|
|
Core::System::GetInstance().frame_limiter.DoFrameLimiting(CoreTiming::GetGlobalTimeUs());
|
|
|
Core::System::GetInstance().perf_stats.BeginSystemFrame();
|
|
|
@@ -356,7 +356,7 @@ void RendererOpenGL::DrawScreenTriangles(const ScreenInfo& screen_info, float x,
|
|
|
* Draws the emulated screens to the emulator window.
|
|
|
*/
|
|
|
void RendererOpenGL::DrawScreen() {
|
|
|
- const auto& layout = render_window->GetFramebufferLayout();
|
|
|
+ const auto& layout = render_window.GetFramebufferLayout();
|
|
|
const auto& screen = layout.screen;
|
|
|
|
|
|
glViewport(0, 0, layout.width, layout.height);
|
|
|
@@ -380,14 +380,6 @@ void RendererOpenGL::DrawScreen() {
|
|
|
/// Updates the framerate
|
|
|
void RendererOpenGL::UpdateFramerate() {}
|
|
|
|
|
|
-/**
|
|
|
- * Set the emulator window to use for renderer
|
|
|
- * @param window EmuWindow handle to emulator window to use for rendering
|
|
|
- */
|
|
|
-void RendererOpenGL::SetWindow(EmuWindow* window) {
|
|
|
- render_window = window;
|
|
|
-}
|
|
|
-
|
|
|
static const char* GetSource(GLenum source) {
|
|
|
#define RET(s) \
|
|
|
case GL_DEBUG_SOURCE_##s: \
|
|
|
@@ -445,7 +437,7 @@ static void APIENTRY DebugHandler(GLenum source, GLenum type, GLuint id, GLenum
|
|
|
|
|
|
/// Initialize the renderer
|
|
|
bool RendererOpenGL::Init() {
|
|
|
- ScopeAcquireGLContext acquire_context;
|
|
|
+ ScopeAcquireGLContext acquire_context{render_window};
|
|
|
|
|
|
if (GLAD_GL_KHR_debug) {
|
|
|
glEnable(GL_DEBUG_OUTPUT);
|