Add clear colour to GL state manager

This commit is contained in:
wheremyfoodat 2023-08-12 17:02:00 +03:00
parent 4107a84c0d
commit 0f5c41cd69
4 changed files with 138 additions and 128 deletions

View file

@ -10,6 +10,15 @@ void GLStateManager::resetBlend() {
OpenGL::setLogicOp(GL_COPY);
}
void GLStateManager::resetClearing() {
clearRed = 0.f;
clearBlue = 0.f;
clearGreen = 0.f;
clearAlpha = 1.f;
OpenGL::setClearColor(clearRed, clearBlue, clearGreen, clearAlpha);
}
void GLStateManager::resetClipping() {
// Disable all (supported) clip planes
enabledClipPlanes = 0;
@ -64,6 +73,7 @@ void GLStateManager::resetProgram() {
void GLStateManager::reset() {
resetBlend();
resetClearing();
resetClipping();
resetColourMask();
resetDepth();

View file

@ -141,7 +141,7 @@ void RendererGL::initGraphicsContext(SDL_Window* window) {
GLint oldViewport[4];
glGetIntegerv(GL_VIEWPORT, oldViewport);
OpenGL::setViewport(screenTextureWidth, screenTextureHeight);
OpenGL::setClearColor(0.0, 0.0, 0.0, 1.0);
gl.setClearColour(0.0, 0.0, 0.0, 1.0);
OpenGL::clearColor();
OpenGL::setViewport(oldViewport[0], oldViewport[1], oldViewport[2], oldViewport[3]);
@ -473,7 +473,7 @@ void RendererGL::display() {
auto bottomScreen = colourBufferCache.findFromAddress(bottomScreenAddr);
screenFramebuffer.bind(OpenGL::DrawFramebuffer);
OpenGL::setClearColor(0.f);
gl.setClearColour(0.f, 0.f, 0.f, 1.f);
OpenGL::clearColor();
if (topScreen) {
@ -504,8 +504,9 @@ void RendererGL::clearBuffer(u32 startAddress, u32 endAddress, u32 value, u32 co
const float b = getBits<8, 8>(value) / 255.0f;
const float a = (value & 0xff) / 255.0f;
color->get().fbo.bind(OpenGL::DrawFramebuffer);
gl.setColourMask(true, true, true, true);
OpenGL::setClearColor(r, g, b, a);
gl.setClearColour(r, g, b, a);
OpenGL::clearColor();
return;
}