|
@@ -1620,21 +1620,24 @@ class GlDriver extends Driver {
|
|
size = 2;
|
|
size = 2;
|
|
}
|
|
}
|
|
#if !js
|
|
#if !js
|
|
- inline function unsafeCastTo<T,R>( v : T, c : Class<R> ) : R {
|
|
|
|
|
|
+ if( hasMultiIndirect && commands.data != null ) {
|
|
#if (haxe_ver < 5)
|
|
#if (haxe_ver < 5)
|
|
- var arr = new hl.NativeArray<T>(1);
|
|
|
|
- arr[0] = v;
|
|
|
|
- return (cast arr : hl.NativeArray<R>)[0];
|
|
|
|
|
|
+ var arr = new hl.NativeArray<Int>(1);
|
|
|
|
+ arr[0] = commands.offset * InstanceBuffer.ELEMENT_SIZE;
|
|
|
|
+ var commandOffset : hl.Bytes = (cast arr : hl.NativeArray<hl.Bytes>)[0];
|
|
#else
|
|
#else
|
|
- return hl.Api.unsafeCast(v);
|
|
|
|
|
|
+ var commandOffset : hl.Bytes = hl.Api.unsafeCast(commands.offset * InstanceBuffer.ELEMENT_SIZE);
|
|
#end
|
|
#end
|
|
- }
|
|
|
|
- if( hasMultiIndirect && commands.data != null ) {
|
|
|
|
- var commandOffset = unsafeCastTo(commands.offset * InstanceBuffer.ELEMENT_SIZE, hl.Bytes);
|
|
|
|
gl.bindBuffer(GL.DRAW_INDIRECT_BUFFER, commands.data);
|
|
gl.bindBuffer(GL.DRAW_INDIRECT_BUFFER, commands.data);
|
|
#if (hlsdl >= version("1.15.0"))
|
|
#if (hlsdl >= version("1.15.0"))
|
|
if ( commands.countBuffer != null && hasMultiIndirectCount ) {
|
|
if ( commands.countBuffer != null && hasMultiIndirectCount ) {
|
|
- var countOffset = unsafeCastTo(commands.countOffset * 4, hl.Bytes);
|
|
|
|
|
|
+ #if (haxe_ver < 5)
|
|
|
|
+ var arr = new hl.NativeArray<Int>(1);
|
|
|
|
+ arr[0] = commands.countOffset * 4;
|
|
|
|
+ var countOffset : hl.Bytes = (cast arr : hl.NativeArray<hl.Bytes>)[0];
|
|
|
|
+ #else
|
|
|
|
+ var countOffset : hl.Bytes = hl.Api.unsafeCast(commands.countOffset * 4);
|
|
|
|
+ #end
|
|
gl.bindBuffer(GL.PARAMETER_BUFFER, commands.countBuffer);
|
|
gl.bindBuffer(GL.PARAMETER_BUFFER, commands.countBuffer);
|
|
gl.multiDrawElementsIndirectCount(drawMode, kind, commandOffset, countOffset, commands.commandCount, 0);
|
|
gl.multiDrawElementsIndirectCount(drawMode, kind, commandOffset, countOffset, commands.commandCount, 0);
|
|
} else
|
|
} else
|