mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-17 03:25:14 -04:00
Don't set fog when context is lost, should fix crashing on some AMD gpus.
This commit is contained in:
parent
fbbea98edf
commit
108c69fc92
@ -87,15 +87,15 @@ namespace ClassicalSharp.Gui.Screens {
|
||||
int index = 0;
|
||||
idAtlas.tex.Y = (short)(yOffset + (tileSize - idAtlas.tex.Height));
|
||||
|
||||
for (int y = 1; y <= TerrainAtlas2D.RowsCount; y++) {
|
||||
for (int y = 0; y < TerrainAtlas2D.RowsCount; y++) {
|
||||
for (int x = 0; x < TerrainAtlas2D.TilesPerRow; x++) {
|
||||
idAtlas.curX = xOffset + tileSize * x + textOffset;
|
||||
int id = x + ((y - 1) * TerrainAtlas2D.TilesPerRow);
|
||||
int id = x + y * TerrainAtlas2D.TilesPerRow;
|
||||
idAtlas.AddInt(id, vertices, ref index);
|
||||
}
|
||||
idAtlas.tex.Y += (short)tileSize;
|
||||
|
||||
if ((y % 4) != 0) continue;
|
||||
if ((y % 4) != 3) continue;
|
||||
game.Graphics.BindTexture(idAtlas.tex.ID);
|
||||
game.Graphics.UpdateDynamicVb_IndexedTris(dynamicVb, vertices, index);
|
||||
index = 0;
|
||||
|
@ -112,34 +112,41 @@ namespace ClassicalSharp.GraphicsAPI {
|
||||
bool fogEnable;
|
||||
public override bool Fog {
|
||||
get { return fogEnable; }
|
||||
set { if (value == fogEnable) return;
|
||||
fogEnable = value; device.SetRenderState(RenderState.FogEnable, value);
|
||||
set {
|
||||
if (value == fogEnable) return;
|
||||
fogEnable = value;
|
||||
if (LostContext) return;
|
||||
device.SetRenderState(RenderState.FogEnable, value);
|
||||
}
|
||||
}
|
||||
|
||||
int fogCol, lastFogCol = FastColour.BlackPacked;
|
||||
public override void SetFogColour(FastColour col) {
|
||||
fogCol = col.Pack();
|
||||
if (fogCol == lastFogCol) return;
|
||||
|
||||
device.SetRenderState(RenderState.FogColor, fogCol);
|
||||
if (fogCol == lastFogCol) return;
|
||||
lastFogCol = fogCol;
|
||||
if (LostContext) return;
|
||||
device.SetRenderState(RenderState.FogColor, fogCol);
|
||||
}
|
||||
|
||||
float fogDensity = -1, fogStart = -1, fogEnd = -1;
|
||||
public override void SetFogDensity(float value) {
|
||||
if (value == fogDensity) return;
|
||||
if (value == fogDensity) return;
|
||||
fogDensity = value;
|
||||
if (LostContext) return;
|
||||
device.SetRenderState(RenderState.FogDensity, value);
|
||||
}
|
||||
|
||||
public override void SetFogStart(float value) {
|
||||
fogStart = value;
|
||||
if (LostContext) return;
|
||||
device.SetRenderState(RenderState.FogStart, value);
|
||||
}
|
||||
|
||||
public override void SetFogEnd(float value) {
|
||||
if (value == fogEnd) return;
|
||||
fogEnd = value;
|
||||
if (LostContext) return;
|
||||
device.SetRenderState(RenderState.FogEnd, value);
|
||||
}
|
||||
|
||||
@ -149,6 +156,7 @@ namespace ClassicalSharp.GraphicsAPI {
|
||||
FogMode newMode = modes[(int)fogMode];
|
||||
if (newMode == fogTableMode) return;
|
||||
fogTableMode = newMode;
|
||||
if (LostContext) return;
|
||||
device.SetRenderState(RenderState.FogTableMode, (int)fogTableMode);
|
||||
}
|
||||
|
||||
|
@ -289,24 +289,24 @@ bool d3d9_fogEnable = false;
|
||||
bool Gfx_GetFog(void) { return d3d9_fogEnable; }
|
||||
void Gfx_SetFog(bool enabled) {
|
||||
if (d3d9_fogEnable == enabled) return;
|
||||
|
||||
d3d9_fogEnable = enabled;
|
||||
if (Gfx_LostContext) return;
|
||||
D3D9_SetRenderState(D3DRS_FOGENABLE, (UInt32)enabled, "D3D9_SetFog");
|
||||
}
|
||||
|
||||
UInt32 d3d9_fogCol = 0xFF000000; /* black */
|
||||
void Gfx_SetFogColour(PackedCol col) {
|
||||
if (col.Packed == d3d9_fogCol) return;
|
||||
|
||||
d3d9_fogCol = col.Packed;
|
||||
if (Gfx_LostContext) return;
|
||||
D3D9_SetRenderState(D3DRS_FOGCOLOR, col.Packed, "D3D9_SetFogColour");
|
||||
}
|
||||
|
||||
Real32 d3d9_fogDensity = -1.0f;
|
||||
void Gfx_SetFogDensity(Real32 value) {
|
||||
if (value == d3d9_fogDensity) return;
|
||||
|
||||
d3d9_fogDensity = value;
|
||||
if (Gfx_LostContext) return;
|
||||
IntAndFloat raw; raw.fVal = value;
|
||||
D3D9_SetRenderState(D3DRS_FOGDENSITY, raw.uVal, "D3D9_SetFogDensity");
|
||||
}
|
||||
@ -314,6 +314,7 @@ void Gfx_SetFogDensity(Real32 value) {
|
||||
Real32 d3d9_fogStart = -1.0f;
|
||||
void Gfx_SetFogStart(Real32 value) {
|
||||
d3d9_fogStart = value;
|
||||
if (Gfx_LostContext) return;
|
||||
IntAndFloat raw; raw.fVal = value;
|
||||
D3D9_SetRenderState(D3DRS_FOGSTART, raw.uVal, "D3D9_SetFogStart");
|
||||
}
|
||||
@ -321,8 +322,8 @@ void Gfx_SetFogStart(Real32 value) {
|
||||
Real32 d3d9_fogEnd = -1.0f;
|
||||
void Gfx_SetFogEnd(Real32 value) {
|
||||
if (value == d3d9_fogEnd) return;
|
||||
|
||||
d3d9_fogEnd = value;
|
||||
if (Gfx_LostContext) return;
|
||||
IntAndFloat raw; raw.fVal = value;
|
||||
D3D9_SetRenderState(D3DRS_FOGEND, raw.uVal, "D3D9_SetFogEnd");
|
||||
}
|
||||
@ -331,8 +332,8 @@ D3DFOGMODE d3d9_fogTableMode = D3DFOG_NONE;
|
||||
void Gfx_SetFogMode(Int32 fogMode) {
|
||||
D3DFOGMODE mode = d3d9_modes[fogMode];
|
||||
if (mode == d3d9_fogTableMode) return;
|
||||
|
||||
d3d9_fogTableMode = mode;
|
||||
if (Gfx_LostContext) return;
|
||||
D3D9_SetRenderState(D3DRS_FOGTABLEMODE, mode, "D3D9_SetFogMode");
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
#ifndef CC_GAME_H
|
||||
#define CC_GAME_H
|
||||
#include "String.h"
|
||||
#include "Picking.h"
|
||||
#include "Options.h"
|
||||
/* Represents the game.
|
||||
|
@ -58,7 +58,7 @@ typedef struct FontDesc_ { void* Handle; UInt16 Size, Style; } FontDesc;
|
||||
#define Int32_MaxValue ((Int32)2147483647L)
|
||||
#define UInt32_MaxValue ((UInt32)4294967295UL)
|
||||
|
||||
#define USE_DX false
|
||||
#define USE_DX true
|
||||
|
||||
#if USE_DX
|
||||
typedef void* GfxResourceID;
|
||||
|
Loading…
x
Reference in New Issue
Block a user