OpenGL: Always restore all state

This commit is contained in:
UnknownShadow200 2025-06-02 19:29:28 +10:00
parent cdd32375c6
commit 03b17f565a
3 changed files with 34 additions and 10 deletions

View File

@ -378,8 +378,8 @@ void Gfx_BindTexture(GfxResourceID texId) {
*-----------------------------------------------------State management----------------------------------------------------* *-----------------------------------------------------State management----------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static PackedCol gfx_fogColor; static PackedCol gfx_fogColor;
static float gfx_fogEnd = -1.0f, gfx_fogDensity = -1.0f; static float gfx_fogEnd, gfx_fogDensity;
static int gfx_fogMode = -1; static int gfx_fogMode;
void Gfx_SetFog(cc_bool enabled) { void Gfx_SetFog(cc_bool enabled) {
gfx_fogEnabled = enabled; gfx_fogEnabled = enabled;
@ -477,7 +477,15 @@ static void Gfx_RestoreState(void) {
InitDefaultResources(); InitDefaultResources();
_glEnableClientState(GL_VERTEX_ARRAY); _glEnableClientState(GL_VERTEX_ARRAY);
_glEnableClientState(GL_COLOR_ARRAY); _glEnableClientState(GL_COLOR_ARRAY);
gfx_format = -1; gfx_format = -1;
lastMatrix = -1;
gfx_clearColor = 0;
gfx_fogColor = 0;
gfx_fogEnd = -1.0f;
gfx_fogDensity = -1.0f;
gfx_fogMode = -1;
_glHint(GL_FOG_HINT, GL_NICEST); _glHint(GL_FOG_HINT, GL_NICEST);
#if defined CC_BUILD_SYMBIAN #if defined CC_BUILD_SYMBIAN
@ -518,8 +526,16 @@ cc_bool Gfx_WarnIfNecessary(void) {
} }
return false; return false;
} }
cc_bool Gfx_GetUIOptions(struct MenuOptionsScreen* s) { return false; } cc_bool Gfx_GetUIOptions(struct MenuOptionsScreen* s) { return false; }
void Gfx_GetApiInfo(cc_string* info) {
int pointerSize = sizeof(void*) * 8;
String_Format1(info, "-- Using OpenGL (%i bit) --\n", &pointerSize);
GetGLApiInfo(info);
}
/*########################################################################################################################* /*########################################################################################################################*
*-------------------------------------------------------Compatibility-----------------------------------------------------* *-------------------------------------------------------Compatibility-----------------------------------------------------*

View File

@ -600,8 +600,15 @@ static void Gfx_RestoreState(void) {
InitDefaultResources(); InitDefaultResources();
glEnableVertexAttribArray(0); glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1); glEnableVertexAttribArray(1);
gfx_format = -1; gfx_format = -1;
gfx_clearColor = 0;
gfx_fogColor = 0;
gfx_fogEnd = -1.0f;
gfx_fogDensity = -1.0f;
gfx_fogMode = -1;
DirtyUniform(UNI_MASK_ALL); DirtyUniform(UNI_MASK_ALL);
GL_ClearColor(gfx_clearColor); GL_ClearColor(gfx_clearColor);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@ -639,6 +646,13 @@ cc_bool Gfx_GetUIOptions(struct MenuOptionsScreen* s) {
return false; return false;
} }
void Gfx_GetApiInfo(cc_string* info) {
int pointerSize = sizeof(void*) * 8;
String_Format1(info, "-- Using OpenGL Modern (%i bit) --\n", &pointerSize);
GetGLApiInfo(info);
}
/*########################################################################################################################* /*########################################################################################################################*
*----------------------------------------------------------Drawing--------------------------------------------------------* *----------------------------------------------------------Drawing--------------------------------------------------------*

View File

@ -352,16 +352,10 @@ static void AppendVRAMStats(cc_string* info) {
String_Format2(info, "Video memory: %f2 MB total, %f2 free\n", &total, &cur); String_Format2(info, "Video memory: %f2 MB total, %f2 free\n", &total, &cur);
} }
void Gfx_GetApiInfo(cc_string* info) { static void GetGLApiInfo(cc_string* info) {
GLint depthBits = 0; GLint depthBits = 0;
int pointerSize = sizeof(void*) * 8;
_glGetIntegerv(GL_DEPTH_BITS, &depthBits); _glGetIntegerv(GL_DEPTH_BITS, &depthBits);
#if CC_GFX_BACKEND == CC_GFX_BACKEND_GL2
String_Format1(info, "-- Using OpenGL Modern (%i bit) --\n", &pointerSize);
#else
String_Format1(info, "-- Using OpenGL (%i bit) --\n", &pointerSize);
#endif
String_Format1(info, "Vendor: %c\n", _glGetString(GL_VENDOR)); String_Format1(info, "Vendor: %c\n", _glGetString(GL_VENDOR));
String_Format1(info, "Renderer: %c\n", _glGetString(GL_RENDERER)); String_Format1(info, "Renderer: %c\n", _glGetString(GL_RENDERER));
String_Format1(info, "GL version: %c\n", _glGetString(GL_VERSION)); String_Format1(info, "GL version: %c\n", _glGetString(GL_VERSION));