mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-17 19:45:23 -04:00
Use face culling. (Breaks sprites though)
This commit is contained in:
parent
dabc5aa858
commit
5f05ed73e4
@ -54,6 +54,8 @@ namespace ClassicalSharp.GraphicsAPI {
|
|||||||
|
|
||||||
public abstract void SetFogStart( float value );
|
public abstract void SetFogStart( float value );
|
||||||
|
|
||||||
|
public abstract bool FaceCulling { set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary> Sets the alpha test function that is used when alpha testing is enabled. </summary>
|
/// <summary> Sets the alpha test function that is used when alpha testing is enabled. </summary>
|
||||||
public abstract void AlphaTestFunc( AlphaFunc func, float value );
|
public abstract void AlphaTestFunc( AlphaFunc func, float value );
|
||||||
|
@ -111,6 +111,10 @@ namespace ClassicalSharp.GraphicsAPI {
|
|||||||
GL.Fog( FogParameter.FogStart, value );
|
GL.Fog( FogParameter.FogStart, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool FaceCulling {
|
||||||
|
set { ToggleCap( EnableCap.CullFace, value ); }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#if TRACK_RESOURCES
|
#if TRACK_RESOURCES
|
||||||
Dictionary<int, string> textures = new Dictionary<int, string>();
|
Dictionary<int, string> textures = new Dictionary<int, string>();
|
||||||
|
@ -185,13 +185,13 @@ namespace ClassicalSharp {
|
|||||||
}
|
}
|
||||||
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z, rec.U1, rec.V1, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z, rec.U2, rec.V1, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z, rec.U2, rec.V1, col );
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z + 1, rec.U2, rec.V2, col );
|
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z + 1, rec.U2, rec.V2, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + 1, rec.U1, rec.V2, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z, rec.U1, rec.V1, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z, rec.U1, rec.V1, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + 1, rec.U1, rec.V2, col );
|
||||||
|
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + 1, rec.U1, rec.V2, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z + 1, rec.U2, rec.V2, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z, rec.U2, rec.V1, col );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void DrawBottomFace( int count ) {
|
protected override void DrawBottomFace( int count ) {
|
||||||
@ -209,13 +209,13 @@ namespace ClassicalSharp {
|
|||||||
}
|
}
|
||||||
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U1, rec.V1, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y, Z, rec.U2, rec.V1, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y, Z + 1, rec.U2, rec.V2, col );
|
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y, Z + 1, rec.U2, rec.V2, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y, Z + 1, rec.U2, rec.V2, col );
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z + 1, rec.U1, rec.V2, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z + 1, rec.U1, rec.V2, col );
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U1, rec.V1, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U1, rec.V1, col );
|
||||||
|
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U1, rec.V1, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y, Z, rec.U2, rec.V1, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y, Z + 1, rec.U2, rec.V2, col );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void DrawBackFace( int count ) {
|
protected override void DrawBackFace( int count ) {
|
||||||
@ -236,13 +236,13 @@ namespace ClassicalSharp {
|
|||||||
}
|
}
|
||||||
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z + 1, rec.U1, rec.V2, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z + 1, rec.U2, rec.V1, col );
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + 1, rec.U1, rec.V1, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + 1, rec.U1, rec.V1, col );
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z + 1, rec.U2, rec.V1, col );
|
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z + 1, rec.U2, rec.V1, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y, Z + 1, rec.U2, rec.V2, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z + 1, rec.U1, rec.V2, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z + 1, rec.U1, rec.V2, col );
|
||||||
|
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z + 1, rec.U1, rec.V2, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y, Z + 1, rec.U2, rec.V2, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z + 1, rec.U2, rec.V1, col );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void DrawFrontFace( int count ) {
|
protected override void DrawFrontFace( int count ) {
|
||||||
@ -263,13 +263,13 @@ namespace ClassicalSharp {
|
|||||||
}
|
}
|
||||||
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U2, rec.V2, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z, rec.U2, rec.V1, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z, rec.U1, rec.V1, col );
|
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z, rec.U1, rec.V1, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y, Z, rec.U1, rec.V2, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y, Z, rec.U1, rec.V2, col );
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U2, rec.V2, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U2, rec.V2, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z, rec.U2, rec.V1, col );
|
||||||
|
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z, rec.U2, rec.V1, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y + blockHeight, Z, rec.U1, rec.V1, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + count, Y, Z, rec.U1, rec.V2, col );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void DrawLeftFace( int count ) {
|
protected override void DrawLeftFace( int count ) {
|
||||||
@ -290,13 +290,13 @@ namespace ClassicalSharp {
|
|||||||
}
|
}
|
||||||
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U1, rec.V2, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + count, rec.U2, rec.V1, col );
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z, rec.U1, rec.V1, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z, rec.U1, rec.V1, col );
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + count, rec.U2, rec.V1, col );
|
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + count, rec.U2, rec.V1, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z + count, rec.U2, rec.V2, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U1, rec.V2, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U1, rec.V2, col );
|
||||||
|
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z, rec.U1, rec.V2, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y, Z + count, rec.U2, rec.V2, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X, Y + blockHeight, Z + count, rec.U2, rec.V1, col );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void DrawRightFace( int count ) {
|
protected override void DrawRightFace( int count ) {
|
||||||
@ -317,13 +317,13 @@ namespace ClassicalSharp {
|
|||||||
}
|
}
|
||||||
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
DrawInfo1D info = drawInfoBuffer[drawInfoIndex];
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y, Z, rec.U2, rec.V2, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y + blockHeight, Z, rec.U2, rec.V1, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y + blockHeight, Z, rec.U2, rec.V1, col );
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y + blockHeight, Z + count, rec.U1, rec.V1, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y + blockHeight, Z + count, rec.U1, rec.V1, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y, Z + count, rec.U1, rec.V2, col );
|
||||||
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y + blockHeight, Z + count, rec.U1, rec.V1, col );
|
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y, Z + count, rec.U1, rec.V2, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y, Z + count, rec.U1, rec.V2, col );
|
||||||
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y, Z, rec.U2, rec.V2, col );
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y, Z, rec.U2, rec.V2, col );
|
||||||
|
info.vertices[info.index++] = new VertexPos3fTex2fCol4b( X + 1, Y + blockHeight, Z, rec.U2, rec.V1, col );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void DrawSprite( int count ) {
|
protected override void DrawSprite( int count ) {
|
||||||
|
@ -228,12 +228,14 @@ namespace ClassicalSharp {
|
|||||||
builder.BeginRender();
|
builder.BeginRender();
|
||||||
Graphics.Texturing = true;
|
Graphics.Texturing = true;
|
||||||
Graphics.AlphaTest = true;
|
Graphics.AlphaTest = true;
|
||||||
|
Graphics.FaceCulling = true;
|
||||||
for( int batch = 0; batch < _1Dcount; batch++ ) {
|
for( int batch = 0; batch < _1Dcount; batch++ ) {
|
||||||
Graphics.Bind2DTexture( Window.TerrainAtlas1DTexIds[batch] );
|
Graphics.Bind2DTexture( Window.TerrainAtlas1DTexIds[batch] );
|
||||||
RenderBatch( batch );
|
RenderBatch( batch );
|
||||||
}
|
}
|
||||||
Graphics.AlphaTest = false;
|
Graphics.AlphaTest = false;
|
||||||
Graphics.Texturing = false;
|
Graphics.Texturing = false;
|
||||||
|
Graphics.FaceCulling = false;
|
||||||
builder.EndRender();
|
builder.EndRender();
|
||||||
Window.MapEnvRenderer.RenderMapSides( deltaTime );
|
Window.MapEnvRenderer.RenderMapSides( deltaTime );
|
||||||
Window.MapEnvRenderer.RenderMapEdges( deltaTime );
|
Window.MapEnvRenderer.RenderMapEdges( deltaTime );
|
||||||
@ -243,6 +245,7 @@ namespace ClassicalSharp {
|
|||||||
Graphics.AlphaTest = false;
|
Graphics.AlphaTest = false;
|
||||||
Graphics.Texturing = false;
|
Graphics.Texturing = false;
|
||||||
Graphics.AlphaBlending = false;
|
Graphics.AlphaBlending = false;
|
||||||
|
Graphics.FaceCulling = true;
|
||||||
|
|
||||||
// First fill depth buffer
|
// First fill depth buffer
|
||||||
Graphics.DepthTestFunc( DepthFunc.LessEqual );
|
Graphics.DepthTestFunc( DepthFunc.LessEqual );
|
||||||
@ -263,6 +266,7 @@ namespace ClassicalSharp {
|
|||||||
Graphics.AlphaTest = false;
|
Graphics.AlphaTest = false;
|
||||||
Graphics.AlphaBlending = false;
|
Graphics.AlphaBlending = false;
|
||||||
Graphics.Texturing = false;
|
Graphics.Texturing = false;
|
||||||
|
Graphics.FaceCulling = false;
|
||||||
builder.EndRender();
|
builder.EndRender();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user