[Bf-blender-cvs] [0f3bc636c82] blender2.8: GWN: Allow drawing instances without batch_instancing

Clément Foucault noreply at git.blender.org
Wed Feb 14 19:02:35 CET 2018


Commit: 0f3bc636c828bcbaa79952375d86a222f4873ecb
Author: Clément Foucault
Date:   Wed Feb 14 17:52:19 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB0f3bc636c828bcbaa79952375d86a222f4873ecb

GWN: Allow drawing instances without batch_instancing

===================================================================

M	intern/gawain/src/gwn_batch.c

===================================================================

diff --git a/intern/gawain/src/gwn_batch.c b/intern/gawain/src/gwn_batch.c
index 677158e09df..9cd5400f144 100644
--- a/intern/gawain/src/gwn_batch.c
+++ b/intern/gawain/src/gwn_batch.c
@@ -202,7 +202,8 @@ static void Batch_update_program_bindings_instancing(Gwn_Batch* batch, Gwn_Batch
 		glDisableVertexAttribArray(a_idx);
 
 	create_bindings(batch, batch->interface, 0, false);
-	create_bindings(batch_instancing, batch->interface, instance_first, true);
+	if (batch_instancing)
+		create_bindings(batch_instancing, batch->interface, instance_first, true);
 
 	batch->program_dirty = false;
 	}
@@ -386,6 +387,10 @@ void GWN_batch_draw_stupid(Gwn_Batch* batch, int v_first, int v_count)
 
 void GWN_batch_draw_stupid_instanced(Gwn_Batch* batch_instanced, Gwn_Batch* batch_instancing, int instance_first, int instance_count)
 	{
+#if TRUST_NO_ONE
+	// batch_instancing can be null if the number of instances is specified.
+	assert(batch_instancing != NULL || instance_count != 0);
+#endif
 	if (batch_instanced->vao_id)
 		glBindVertexArray(batch_instanced->vao_id);
 	else
@@ -394,10 +399,8 @@ void GWN_batch_draw_stupid_instanced(Gwn_Batch* batch_instanced, Gwn_Batch* batc
 	if (batch_instanced->program_dirty)
 		Batch_update_program_bindings_instancing(batch_instanced, batch_instancing, instance_first);
 
-	Gwn_VertBuf* verts = batch_instancing->verts[0];
-
 	if (instance_count == 0)
-		instance_count = verts->vertex_ct;
+		instance_count = batch_instancing->verts[0]->vertex_ct;
 
 	if (batch_instanced->elem)
 		{



More information about the Bf-blender-cvs mailing list