Răsfoiți Sursa

added DrawIndexedInstancedIndirect support
fixed PerInstanceData const

ncannasse 7 ani în urmă
părinte
comite
3463849fbf
2 a modificat fișierele cu 9 adăugiri și 1 ștergeri
  1. 5 0
      libs/directx/directx.cpp
  2. 4 1
      libs/directx/dx/Driver.hx

+ 5 - 0
libs/directx/directx.cpp

@@ -292,6 +292,10 @@ HL_PRIM void HL_NAME(draw_indexed)( int count, int start, int baseVertex ) {
 	driver->context->DrawIndexed(count,start,baseVertex);
 	driver->context->DrawIndexed(count,start,baseVertex);
 }
 }
 
 
+HL_PRIM void HL_NAME(draw_indexed_instanced_indirect)( dx_resource *r, int offset ) {
+	driver->context->DrawIndexedInstancedIndirect((ID3D11Buffer*)r, (UINT)offset);
+}
+
 HL_PRIM void HL_NAME(vs_set_shader)( dx_pointer *s ) {
 HL_PRIM void HL_NAME(vs_set_shader)( dx_pointer *s ) {
 	driver->context->VSSetShader((ID3D11VertexShader*)s,NULL,0);
 	driver->context->VSSetShader((ID3D11VertexShader*)s,NULL,0);
 }
 }
@@ -459,6 +463,7 @@ DEFINE_PRIM(_BYTES, disassemble_shader, _BYTES _I32 _I32 _BYTES _REF(_I32));
 DEFINE_PRIM(_POINTER, create_vertex_shader, _BYTES _I32);
 DEFINE_PRIM(_POINTER, create_vertex_shader, _BYTES _I32);
 DEFINE_PRIM(_POINTER, create_pixel_shader, _BYTES _I32);
 DEFINE_PRIM(_POINTER, create_pixel_shader, _BYTES _I32);
 DEFINE_PRIM(_VOID, draw_indexed, _I32 _I32 _I32);
 DEFINE_PRIM(_VOID, draw_indexed, _I32 _I32 _I32);
+DEFINE_PRIM(_VOID, draw_indexed_instanced_indirect, _RESOURCE _I32);
 DEFINE_PRIM(_VOID, vs_set_shader, _POINTER);
 DEFINE_PRIM(_VOID, vs_set_shader, _POINTER);
 DEFINE_PRIM(_VOID, vs_set_constant_buffers, _I32 _I32 _REF(_RESOURCE));
 DEFINE_PRIM(_VOID, vs_set_constant_buffers, _I32 _I32 _REF(_RESOURCE));
 DEFINE_PRIM(_VOID, ps_set_shader, _POINTER);
 DEFINE_PRIM(_VOID, ps_set_shader, _POINTER);

+ 4 - 1
libs/directx/dx/Driver.hx

@@ -183,7 +183,7 @@ abstract DxBool(Int) {
 
 
 @:enum abstract LayoutClassification(Int) {
 @:enum abstract LayoutClassification(Int) {
 	var PerVertexData = 0;
 	var PerVertexData = 0;
-	var PerInstanceData = 0;
+	var PerInstanceData = 1;
 }
 }
 
 
 @:keep
 @:keep
@@ -558,6 +558,9 @@ class Driver {
 	public static function drawIndexed( indexCount : Int, startIndex : Int, baseVertex : Int ) : Void {
 	public static function drawIndexed( indexCount : Int, startIndex : Int, baseVertex : Int ) : Void {
 	}
 	}
 
 
+	public static function drawIndexedInstancedIndirect( buffer : Resource, offset : Int ) : Void {
+	}
+
 	public static function vsSetShader( shader : Shader ) : Void {
 	public static function vsSetShader( shader : Shader ) : Void {
 	}
 	}