renderGL: setting to set settings to set stencil a

nd buffer size

it appears this may be the cause of visual glitches
This commit is contained in:
tildearrow 2025-03-30 15:13:39 -05:00
parent e9acf42f8a
commit f95336befe
4 changed files with 32 additions and 11 deletions

View file

@ -1996,6 +1996,7 @@ class FurnaceGUI {
int glBlueSize;
int glAlphaSize;
int glDepthSize;
int glSetBS;
int glStencilSize;
int glBufferSize;
int glDoubleBuffer;
@ -2248,6 +2249,7 @@ class FurnaceGUI {
glBlueSize(8),
glAlphaSize(0),
glDepthSize(24),
glSetBS(0),
glStencilSize(0),
glBufferSize(32),
glDoubleBuffer(1),

View file

@ -625,9 +625,11 @@ void FurnaceGUIRenderGL::preInit(const DivConfig& conf) {
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE,conf.getInt("glAlphaSize",0));
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,conf.getInt("glDoubleBuffer",1));
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE,conf.getInt("glDepthSize",24));
if (conf.getInt("glSetBS",0)) {
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE,conf.getInt("glStencilSize",0));
SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE,conf.getInt("glBufferSize",32));
}
}
#define LOAD_PROC_MANDATORY(_v,_t,_s) \
_v=(_t)SDL_GL_GetProcAddress(_s); \

View file

@ -279,9 +279,11 @@ void FurnaceGUIRenderGL1::preInit(const DivConfig& conf) {
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE,conf.getInt("glAlphaSize",0));
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,conf.getInt("glDoubleBuffer",1));
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE,conf.getInt("glDepthSize",24));
if (conf.getInt("glSetBS",0)) {
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE,conf.getInt("glStencilSize",0));
SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE,conf.getInt("glBufferSize",32));
}
}
#define LOAD_PROC_MANDATORY(_v,_t,_s) \
_v=(_t)SDL_GL_GetProcAddress(_s); \

View file

@ -705,6 +705,14 @@ void FurnaceGUI::drawSettings() {
if (settings.glDepthSize>128) settings.glDepthSize=128;
settingsChanged=true;
}
bool glSetBSB=settings.glSetBS;
if (ImGui::Checkbox(_("Set stencil and buffer sizes"),&glSetBSB)) {
settings.glSetBS=glSetBSB;
settingsChanged=true;
}
if (settings.glSetBS) {
if (ImGui::InputInt(_("Stencil buffer size"),&settings.glStencilSize)) {
if (settings.glStencilSize<0) settings.glStencilSize=0;
if (settings.glStencilSize>32) settings.glStencilSize=32;
@ -715,6 +723,8 @@ void FurnaceGUI::drawSettings() {
if (settings.glBufferSize>128) settings.glBufferSize=128;
settingsChanged=true;
}
}
bool glDoubleBufferB=settings.glDoubleBuffer;
if (ImGui::Checkbox(_("Double buffer"),&glDoubleBufferB)) {
settings.glDoubleBuffer=glDoubleBufferB;
@ -4841,6 +4851,7 @@ void FurnaceGUI::readConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
settings.glBlueSize=conf.getInt("glBlueSize",8);
settings.glAlphaSize=conf.getInt("glAlphaSize",0);
settings.glDepthSize=conf.getInt("glDepthSize",24);
settings.glSetBS=conf.getInt("glSetBS",0);
settings.glStencilSize=conf.getInt("glStencilSize",0);
settings.glBufferSize=conf.getInt("glBufferSize",32);
settings.glDoubleBuffer=conf.getInt("glDoubleBuffer",1);
@ -5395,7 +5406,9 @@ void FurnaceGUI::readConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
clampSetting(settings.glBlueSize,0,32);
clampSetting(settings.glAlphaSize,0,32);
clampSetting(settings.glDepthSize,0,128);
clampSetting(settings.glSetBS,0,1);
clampSetting(settings.glStencilSize,0,32);
clampSetting(settings.glBufferSize,0,128);
clampSetting(settings.glDoubleBuffer,0,1);
clampSetting(settings.backupEnable,0,1);
clampSetting(settings.backupInterval,10,86400);
@ -5432,7 +5445,9 @@ void FurnaceGUI::writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
conf.set("glBlueSize",settings.glBlueSize);
conf.set("glAlphaSize",settings.glAlphaSize);
conf.set("glDepthSize",settings.glDepthSize);
conf.set("glSetBS",settings.glSetBS);
conf.set("glStencilSize",settings.glStencilSize);
conf.set("glBufferSize",settings.glBufferSize);
conf.set("glDoubleBuffer",settings.glDoubleBuffer);
conf.set("vsync",settings.vsync);