@@ -1789,7 +1789,7 @@ public class ShapePrimitive : RenderPrimitive, IDisposable
1789
1789
protected internal int PrimitiveOffset ;
1790
1790
protected internal PrimitiveType PrimitiveType ;
1791
1791
1792
- protected readonly VertexBufferBinding [ ] VertexBufferBindings ;
1792
+ protected internal readonly VertexBufferBinding [ ] VertexBufferBindings ;
1793
1793
1794
1794
public ShapePrimitive ( ) { }
1795
1795
@@ -1905,7 +1905,6 @@ public class ShapePrimitiveInstances : RenderPrimitive
1905
1905
public int SubObjectIndex { get ; protected set ; }
1906
1906
1907
1907
protected VertexBuffer VertexBuffer ;
1908
- protected VertexDeclaration VertexDeclaration ;
1909
1908
protected int VertexBufferStride ;
1910
1909
protected IndexBuffer IndexBuffer ;
1911
1910
protected int PrimitiveCount ;
@@ -1925,7 +1924,6 @@ internal ShapePrimitiveInstances(GraphicsDevice graphicsDevice, ShapePrimitive s
1925
1924
HierarchyIndex = shapePrimitive . HierarchyIndex ;
1926
1925
SubObjectIndex = subObjectIndex ;
1927
1926
VertexBuffer = shapePrimitive . VertexBuffer ;
1928
- VertexDeclaration = shapePrimitive . VertexBuffer . VertexDeclaration ;
1929
1927
IndexBuffer = shapePrimitive . IndexBuffer ;
1930
1928
PrimitiveCount = shapePrimitive . PrimitiveCount ;
1931
1929
PrimitiveOffset = shapePrimitive . PrimitiveOffset ;
@@ -1935,7 +1933,25 @@ internal ShapePrimitiveInstances(GraphicsDevice graphicsDevice, ShapePrimitive s
1935
1933
InstanceBuffer . SetData ( positions ) ;
1936
1934
InstanceCount = positions . Length ;
1937
1935
1938
- VertexBufferBindings = new [ ] { new VertexBufferBinding ( VertexBuffer ) , new VertexBufferBinding ( InstanceBuffer , 0 , 1 ) } ;
1936
+ var instanceBufferBinding = new VertexBufferBinding ( InstanceBuffer , 0 , 1 ) ;
1937
+
1938
+ if ( VertexBuffer != null )
1939
+ {
1940
+ VertexBufferBindings = new [ ] { new VertexBufferBinding ( VertexBuffer ) , instanceBufferBinding } ;
1941
+ }
1942
+ else
1943
+ {
1944
+ VertexBufferBindings = shapePrimitive . VertexBufferBindings . ToArray ( ) ;
1945
+ var dummyInstanceBuffer = RenderPrimitive . GetDummyVertexBuffer ( graphicsDevice ) ;
1946
+ var position = - 1 ;
1947
+ for ( var i = 0 ; i < VertexBufferBindings . Length ; i ++ )
1948
+ if ( VertexBufferBindings [ i ] . VertexBuffer == dummyInstanceBuffer )
1949
+ position = i ;
1950
+ if ( position == - 1 )
1951
+ VertexBufferBindings . Append ( instanceBufferBinding ) ;
1952
+ else
1953
+ VertexBufferBindings [ position ] = instanceBufferBinding ;
1954
+ }
1939
1955
}
1940
1956
1941
1957
public override void Draw ( GraphicsDevice graphicsDevice )
0 commit comments