@@ -654,7 +654,7 @@ public void presentTexture(GpuTextureView gpuTexture) {
654654 protected <T > void executeDrawMultiple (
655655 VkRenderPass renderPass ,
656656 Collection <RenderPass .Draw <T >> collection ,
657- @ Nullable GpuBuffer gpuBuffer ,
657+ @ Nullable GpuBuffer indexBuffer ,
658658 @ Nullable VertexFormat .IndexType indexType ,
659659 Collection <String > collection2 ,
660660 T object
@@ -668,7 +668,7 @@ protected <T> void executeDrawMultiple(
668668
669669 for (RenderPass .Draw draw : collection ) {
670670 VertexFormat .IndexType indexType2 = draw .indexType () == null ? indexType : draw .indexType ();
671- renderPass .setIndexBuffer (draw .indexBuffer () == null ? gpuBuffer : draw .indexBuffer (), indexType2 );
671+ renderPass .setIndexBuffer (draw .indexBuffer () == null ? indexBuffer : draw .indexBuffer (), indexType2 );
672672 renderPass .setVertexBuffer (draw .slot (), draw .vertexBuffer ());
673673
674674 if (GlRenderPass .VALIDATION ) {
@@ -693,17 +693,20 @@ protected <T> void executeDrawMultiple(
693693 if (biConsumer != null ) {
694694 biConsumer .accept (object , (string , gpuBufferSlice ) -> {
695695 EGlProgram glProgram = ExtendedRenderPipeline .of (renderPass .pipeline ).getProgram ();
696- if (glProgram .getUniform (string ) instanceof Uniform .Ubo ubo ) {
696+ if (glProgram .getUniform (string ) instanceof Uniform .Ubo ubo1 ) {
697697
698698 int blockBinding ;
699699 try {
700- blockBinding = ubo .blockBinding ();
700+ blockBinding = ubo1 .blockBinding ();
701701 } catch (Throwable var7 ) {
702702 throw new MatchException (var7 .toString (), var7 );
703703 }
704704
705- // TODO
706- // GL32.glBindBufferRange(35345, blockBinding, ((GlBuffer)gpuBufferSlice.buffer()).handle, (long)gpuBufferSlice.offset(), (long)gpuBufferSlice.length());
705+ VkGpuBuffer gpuBuffer1 = (VkGpuBuffer ) gpuBufferSlice .buffer ();
706+
707+ UBO ubo = pipeline .getUBO (blockBinding );
708+ ubo .setUseGlobalBuffer (false );
709+ ubo .getBufferSlice ().set (gpuBuffer1 .buffer , gpuBufferSlice .offset (), (int ) gpuBufferSlice .length ());
707710 }
708711 });
709712
@@ -755,7 +758,8 @@ public void drawFromBuffers(VkRenderPass renderPass, int vertexOffset, int first
755758 VkGpuBuffer vertexBuffer = (VkGpuBuffer )renderPass .vertexBuffers [0 ];
756759 try (MemoryStack stack = stackPush ()) {
757760 if (vertexBuffer != null ) {
758- VK11 .vkCmdBindVertexBuffers (vkCommandBuffer , 0 , stack .longs (vertexBuffer .buffer .getId ()), stack .longs (0 ));
761+ // VK11.vkCmdBindVertexBuffers(vkCommandBuffer, 0, stack.longs(vertexBuffer.buffer.getId()), stack.longs(0));
762+ VK11 .vkCmdBindVertexBuffers (vkCommandBuffer , 0 , stack .longs (vertexBuffer .buffer .getId ()), stack .longs (vertexBuffer .offset ));
759763 }
760764
761765 if (renderPass .indexBuffer != null ) {
@@ -766,7 +770,8 @@ public void drawFromBuffers(VkRenderPass renderPass, int vertexOffset, int first
766770 case INT -> VK_INDEX_TYPE_UINT32 ;
767771 };
768772
769- VK11 .vkCmdBindIndexBuffer (vkCommandBuffer , indexBuffer .buffer .getId (), 0 , vkIndexType );
773+ // VK11.vkCmdBindIndexBuffer(vkCommandBuffer, indexBuffer.buffer.getId(), 0, vkIndexType);
774+ VK11 .vkCmdBindIndexBuffer (vkCommandBuffer , indexBuffer .buffer .getId (), indexBuffer .offset , vkIndexType );
770775 VK11 .vkCmdDrawIndexed (vkCommandBuffer , vertexCount , instanceCount , firstIndex , vertexOffset , 0 );
771776 }
772777 else {
0 commit comments