mirror of
https://github.com/OpenEmu/PPSSPP-Core.git
synced 2025-11-01 11:05:49 +00:00
68 lines
1.7 KiB
C++
68 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include "Common/GraphicsContext.h"
|
|
#include "thin3d_create.h"
|
|
#include "GLRenderManager.h"
|
|
|
|
#include "Core/System.h"
|
|
#include "GPU/GPUState.h"
|
|
|
|
#include "Common/GPU/OpenGL/GLCommon.h"
|
|
|
|
class OpenEmuGLContext : public GraphicsContext {
|
|
public:
|
|
OpenEmuGLContext();
|
|
|
|
~OpenEmuGLContext() override {Shutdown();};
|
|
|
|
bool Init();
|
|
bool Init(bool cache_context);
|
|
|
|
void CreateDrawContext();
|
|
void DestroyDrawContext();
|
|
void ContextReset();
|
|
void ContextDestroy();
|
|
void GotBackbuffer();
|
|
void LostBackbuffer();
|
|
|
|
void Shutdown() override {
|
|
DestroyDrawContext();
|
|
}
|
|
void SwapInterval(int interval) override;
|
|
void Resize() override {}
|
|
void SwapBuffers() override {}
|
|
|
|
void ThreadStart() override { renderManager_->ThreadStart(draw_); }
|
|
bool ThreadFrame() override { return renderManager_->ThreadFrame(); }
|
|
void ThreadEnd() override { renderManager_->ThreadEnd(); }
|
|
void StopThread() override {
|
|
renderManager_->WaitUntilQueueIdle();
|
|
renderManager_->StopThread();
|
|
}
|
|
|
|
void SetRenderTarget() {
|
|
extern GLuint g_defaultFBO;
|
|
g_defaultFBO = RenderFBO;
|
|
}
|
|
void SetRenderFBO(GLuint FBO) {
|
|
RenderFBO = FBO;
|
|
}
|
|
|
|
Draw::DrawContext *GetDrawContext() override { return draw_; }
|
|
GPUCore GetGPUCore() { return GPUCORE_GLES; }
|
|
const char *Ident() { return "OpenGL"; }
|
|
|
|
static OpenEmuGLContext *CreateGraphicsContext();
|
|
|
|
protected:
|
|
Draw::DrawContext *draw_ = nullptr;
|
|
|
|
private:
|
|
GLRenderManager *renderManager_ = nullptr;
|
|
GLuint RenderFBO = 0;
|
|
};
|
|
|
|
namespace OpenEmuCoreThread {
|
|
extern OpenEmuGLContext *ctx;
|
|
} // namespace OpenEmu
|