Bläddra i källkod

culling both support (disable draw)

ncannasse 7 år sedan
förälder
incheckning
b2e4250e3a
1 ändrade filer med 7 tillägg och 1 borttagningar
  1. 7 1
      h3d/impl/DirectXDriver.hx

+ 7 - 1
h3d/impl/DirectXDriver.hx

@@ -90,6 +90,7 @@ class DirectXDriver extends h3d.impl.Driver {
 	var frame : Int;
 	var currentMaterialBits = -1;
 	var targetsCount = 1;
+	var allowDraw = false;
 
 	var depthStates : Map<Int,DepthStencilState> = new Map();
 	var blendStates : Map<Int,BlendState> = new Map();
@@ -486,12 +487,14 @@ class DirectXDriver extends h3d.impl.Driver {
 			var desc = new RasterizerDesc();
 			desc.fillMode = Solid;
 			desc.cullMode = CULL[Pass.getCulling(bits)];
-			if( pass.culling == Both ) throw "Culling:Both Not supported in DirectX";
 			desc.depthClipEnable = true;
 			desc.scissorEnable = bits & SCISSOR_BIT != 0;
 			raster = Driver.createRasterizerState(desc);
 			rasterStates.set(rasterBits, raster);
 		}
+
+		allowDraw = pass.culling != Both;
+
 		if( raster != currentRasterState ) {
 			currentRasterState = raster;
 			Driver.rsSetState(raster);
@@ -888,6 +891,8 @@ class DirectXDriver extends h3d.impl.Driver {
 	}
 
 	override function draw(ibuf:IndexBuffer, startIndex:Int, ntriangles:Int) {
+		if( !allowDraw )
+			return;
 		if( currentIndex != ibuf ) {
 			currentIndex = ibuf;
 			dx.Driver.iaSetIndexBuffer(ibuf.res,false,0);
@@ -910,6 +915,7 @@ class DirectXDriver extends h3d.impl.Driver {
 		None,
 		Back,
 		Front,
+		None,
 	];
 
 	static var BLEND : Array<Blend> = [