22
33import com .mojang .blaze3d .systems .RenderSystem ;
44import com .mojang .blaze3d .vertex .*;
5+ import net .minecraft .client .renderer .MultiBufferSource ;
56import net .minecraft .client .renderer .RenderStateShard ;
67import net .minecraft .client .renderer .RenderType ;
78
1314import static net .covers1624 .quack .util .SneakyUtils .none ;
1415
1516/**
16- * A RenderType that is backed by a VertexBufferObject used for Instanced rendering.
17+ * A RenderType that is backed by a VertexBufferObject used for Cached rendering.
1718 * <p>
1819 * Created by covers1624 on 25/5/20.
1920 */
@@ -64,6 +65,23 @@ public WithCallbacks withState(RenderStateShard shard) {
6465 return new WithCallbacks ().withState (shard );
6566 }
6667
68+ /**
69+ * Called to draw a VBORenderType.
70+ *
71+ * @param buffers The buffers instance.
72+ */
73+ public void draw (MultiBufferSource buffers ) {
74+ draw (buffers , this );
75+ }
76+
77+ private static void draw (MultiBufferSource buffers , RenderType type ) {
78+ var cons = buffers .getBuffer (type );
79+ // Add some garbage so a mesh gets generated.
80+ for (int i = 0 ; i < type .mode ().primitiveLength ; i ++) {
81+ cons .addVertex (0F , 0F , 0F , 0 , 0F , 0F , 0 , 0 , 0F , 0F , 0F );
82+ }
83+ }
84+
6785 private void render () {
6886 rebuild ();
6987 vertexBuffer .bind ();
@@ -83,9 +101,11 @@ private void rebuild() {
83101
84102 @ Override
85103 public void draw (MeshData meshData ) {
86- setupRenderState ();
87- render ();
88- clearRenderState ();
104+ try (meshData ) {
105+ setupRenderState ();
106+ render ();
107+ clearRenderState ();
108+ }
89109 }
90110
91111 @ Override
@@ -137,9 +157,11 @@ public void setupRenderState() {
137157
138158 @ Override
139159 public void draw (MeshData meshData ) {
140- setupRenderState ();
141- render ();
142- clearRenderState ();
160+ try (meshData ) {
161+ setupRenderState ();
162+ render ();
163+ clearRenderState ();
164+ }
143165 }
144166
145167 @ Override
@@ -149,5 +171,9 @@ public void clearRenderState() {
149171 }
150172 super .clearRenderState ();
151173 }
174+
175+ public void draw (MultiBufferSource buffers ) {
176+ VBORenderType .draw (buffers , this );
177+ }
152178 }
153179}
0 commit comments