diff --git a/src/Game.c b/src/Game.c index 9d0119c7c..f20d460f4 100644 --- a/src/Game.c +++ b/src/Game.c @@ -481,7 +481,7 @@ static void Game_Load(void) { if (Gfx.Limitations & GFX_LIMIT_VERTEX_ONLY_FOG) EnvRenderer_SetMode(EnvRenderer_Minimal | ENV_LEGACY); - if (Gfx.BackendType == CC_GFX_BACKEND_SOFTGPU) + if (Gfx.Limitations & GFX_LIMIT_NO_FOG) EnvRenderer_SetMode(ENV_MINIMAL); Server.BeginConnect(); diff --git a/src/Graphics.h b/src/Graphics.h index d91413e3a..3f1966a3d 100644 --- a/src/Graphics.h +++ b/src/Graphics.h @@ -93,6 +93,8 @@ CC_VAR extern struct _GfxData { #define GFX_LIMIT_VERTEX_ONLY_FOG 0x02 /* Whether the graphics backend only supports a small maximum quad size */ #define GFX_LIMIT_MAX_VERTEX_SIZE 0x04 +/* Whether the graphics backend doesn't support fog at all */ +#define GFX_LIMIT_NO_FOG 0x08 extern const cc_string Gfx_LowPerfMessage; diff --git a/src/Graphics_GL11.c b/src/Graphics_GL11.c index 24d2114a5..67d29ec73 100644 --- a/src/Graphics_GL11.c +++ b/src/Graphics_GL11.c @@ -32,10 +32,8 @@ static GL_SetupVBRangeFunc gfx_setupVBRangeFunc; void Gfx_Create(void) { GLContext_Create(); - customMipmapsLevels = true; - Gfx.BackendType = CC_GFX_BACKEND_GL1; - GL_InitCommon(); + MakeIndices(gl_indices, GFX_MAX_INDICES, NULL); Gfx_RestoreState(); GLContext_SetVSync(gfx_vsync); @@ -137,27 +135,29 @@ void Gfx_SetDynamicVbData(GfxResourceID vb, void* vertices, int vCount) { #define VB_PTR ((cc_uint8*)dynamicListData) static void GL_SetupVbColoured(void) { - _glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_COLOURED, (GLpointer)(VB_PTR + 0)); - _glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_COLOURED, (GLpointer)(VB_PTR + 12)); + GLpointer ptr = (GLpointer)VB_PTR; + _glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_COLOURED, ptr + 0); + _glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_COLOURED, ptr + 12); } static void GL_SetupVbTextured(void) { - _glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + 0)); - _glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + 12)); - _glTexCoordPointer(2, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + 16)); + GLpointer ptr = (GLpointer)VB_PTR; + _glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, ptr + 0); + _glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_TEXTURED, ptr + 12); + _glTexCoordPointer(2, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, ptr + 16); } static void GL_SetupVbColoured_Range(int startVertex) { - cc_uint32 offset = startVertex * SIZEOF_VERTEX_COLOURED; - _glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_COLOURED, (GLpointer)(VB_PTR + offset + 0)); - _glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_COLOURED, (GLpointer)(VB_PTR + offset + 12)); + GLpointer ptr = (GLpointer)VB_PTR + startVertex * SIZEOF_VERTEX_COLOURED; + _glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_COLOURED, ptr + 0); + _glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_COLOURED, ptr + 12); } static void GL_SetupVbTextured_Range(int startVertex) { - cc_uint32 offset = startVertex * SIZEOF_VERTEX_TEXTURED; - _glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + offset + 0)); - _glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + offset + 12)); - _glTexCoordPointer(2, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (GLpointer)(VB_PTR + offset + 16)); + GLpointer ptr = (GLpointer)VB_PTR + startVertex * SIZEOF_VERTEX_TEXTURED; + _glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, ptr + 0); + _glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_TEXTURED, ptr + 12); + _glTexCoordPointer(2, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, ptr + 16); } void Gfx_SetVertexFormat(VertexFormat fmt) { diff --git a/src/Graphics_NDS.c b/src/Graphics_NDS.c index fdf583579..b681361f7 100644 --- a/src/Graphics_NDS.c +++ b/src/Graphics_NDS.c @@ -130,7 +130,8 @@ void Gfx_Create(void) { Gfx.MaxTexHeight = 256; //Gfx.MaxTexSize = 256 * 256; Gfx.Created = true; - Gfx.Limitations = GFX_LIMIT_VERTEX_ONLY_FOG; + //Gfx.Limitations = GFX_LIMIT_VERTEX_ONLY_FOG; + Gfx.Limitations = GFX_LIMIT_NO_FOG; ResetGPU(); Gfx_ClearColor(PackedCol_Make(0, 120, 80, 255)); diff --git a/src/Graphics_Saturn.c b/src/Graphics_Saturn.c index ca990f725..51580ffc7 100644 --- a/src/Graphics_Saturn.c +++ b/src/Graphics_Saturn.c @@ -117,7 +117,7 @@ void Gfx_Create(void) { Gfx.MaxTexWidth = 128; Gfx.MaxTexHeight = 16; // 128 Gfx.Created = true; - Gfx.Limitations = GFX_LIMIT_NO_UV_SUPPORT | GFX_LIMIT_MAX_VERTEX_SIZE; + Gfx.Limitations = GFX_LIMIT_NO_UV_SUPPORT | GFX_LIMIT_MAX_VERTEX_SIZE | GFX_LIMIT_NO_FOG; SetupHeaderCommands(); } diff --git a/src/Graphics_SoftGPU.c b/src/Graphics_SoftGPU.c index 07da2888e..ab6d73d81 100644 --- a/src/Graphics_SoftGPU.c +++ b/src/Graphics_SoftGPU.c @@ -49,6 +49,7 @@ void Gfx_Create(void) { Gfx.Created = true; Gfx.BackendType = CC_GFX_BACKEND_SOFTGPU; + Gfx.Limitations = GFX_LIMIT_NO_FOG; Gfx_RestoreState(); } diff --git a/src/ps1/Graphics_PS1.c b/src/ps1/Graphics_PS1.c index ac73191e4..9a7550c5d 100644 --- a/src/ps1/Graphics_PS1.c +++ b/src/ps1/Graphics_PS1.c @@ -173,7 +173,7 @@ void Gfx_Create(void) { Gfx.MaxTexWidth = 256; Gfx.MaxTexHeight = 256; Gfx.Created = true; - Gfx.Limitations = GFX_LIMIT_MAX_VERTEX_SIZE; + Gfx.Limitations = GFX_LIMIT_MAX_VERTEX_SIZE | GFX_LIMIT_NO_FOG; Gfx_RestoreState(); SetupContexts(Window_Main.Width, Window_Main.Height);