Class VertexBuffer

java.lang.Object
net.minecraft.client.gl.VertexBuffer
All Implemented Interfaces:
AutoCloseable

@Environment(CLIENT) public class VertexBuffer extends Object implements AutoCloseable
Stores vertex data on GPU.

If you don't need to change the geometry, you can upload data once and reuse it every frame. For example, star rendering uses this technique to save bandwidth.

Implementation Note:
This is mostly a wrapper around vertex buffer object (VBO), element buffer object (EBO), and vertex array object (VAO).
Mappings:
Namespace Name
official eat
intermediary net/minecraft/class_291
named net/minecraft/client/gl/VertexBuffer
  • Field Details

    • vertexBufferId

      private int vertexBufferId
      Mappings:
      Namespace Name Mixin selector
      official a Leat;a:I
      intermediary field_1594 Lnet/minecraft/class_291;field_1594:I
      named vertexBufferId Lnet/minecraft/client/gl/VertexBuffer;vertexBufferId:I
    • indexBufferId

      private int indexBufferId
      Mappings:
      Namespace Name Mixin selector
      official b Leat;b:I
      intermediary field_27366 Lnet/minecraft/class_291;field_27366:I
      named indexBufferId Lnet/minecraft/client/gl/VertexBuffer;indexBufferId:I
    • vertexArrayId

      private int vertexArrayId
      Mappings:
      Namespace Name Mixin selector
      official c Leat;c:I
      intermediary field_29338 Lnet/minecraft/class_291;field_29338:I
      named vertexArrayId Lnet/minecraft/client/gl/VertexBuffer;vertexArrayId:I
    • vertexFormat

      @Nullable private @Nullable VertexFormat vertexFormat
      Mappings:
      Namespace Name Mixin selector
      official d Leat;d:Leav;
      intermediary field_29339 Lnet/minecraft/class_291;field_29339:Lnet/minecraft/class_293;
      named vertexFormat Lnet/minecraft/client/gl/VertexBuffer;vertexFormat:Lnet/minecraft/client/render/VertexFormat;
    • indexBuffer

      @Nullable private RenderSystem.IndexBuffer indexBuffer
      Mappings:
      Namespace Name Mixin selector
      official e Leat;e:Lcom/mojang/blaze3d/systems/RenderSystem$a;
      intermediary field_38983 Lnet/minecraft/class_291;field_38983:Lcom/mojang/blaze3d/systems/RenderSystem$class_5590;
      named indexBuffer Lnet/minecraft/client/gl/VertexBuffer;indexBuffer:Lcom/mojang/blaze3d/systems/RenderSystem$IndexBuffer;
    • indexType

      private VertexFormat.IndexType indexType
      Mappings:
      Namespace Name Mixin selector
      official f Leat;f:Leav$a;
      intermediary field_27367 Lnet/minecraft/class_291;field_27367:Lnet/minecraft/class_293$class_5595;
      named indexType Lnet/minecraft/client/gl/VertexBuffer;indexType:Lnet/minecraft/client/render/VertexFormat$IndexType;
    • vertexCount

      private int vertexCount
      Mappings:
      Namespace Name Mixin selector
      official g Leat;g:I
      intermediary field_1593 Lnet/minecraft/class_291;field_1593:I
      named vertexCount Lnet/minecraft/client/gl/VertexBuffer;vertexCount:I
    • drawMode

      private VertexFormat.DrawMode drawMode
      Mappings:
      Namespace Name Mixin selector
      official h Leat;h:Leav$b;
      intermediary field_27368 Lnet/minecraft/class_291;field_27368:Lnet/minecraft/class_293$class_5596;
      named drawMode Lnet/minecraft/client/gl/VertexBuffer;drawMode:Lnet/minecraft/client/render/VertexFormat$DrawMode;
  • Constructor Details

    • VertexBuffer

      public VertexBuffer()
  • Method Details

    • upload

      public void upload(BufferBuilder.BuiltBuffer buffer)
      Uploads the contents of buffer to GPU, discarding previously uploaded data.

      The caller of this method must bind this vertex buffer before calling this method.

      Mappings:
      Namespace Name Mixin selector
      official a Leat;a(Leal$b;)V
      intermediary method_1352 Lnet/minecraft/class_291;method_1352(Lnet/minecraft/class_287$class_7433;)V
      named upload Lnet/minecraft/client/gl/VertexBuffer;upload(Lnet/minecraft/client/render/BufferBuilder$BuiltBuffer;)V
    • configureVertexFormat

      private VertexFormat configureVertexFormat(BufferBuilder.DrawArrayParameters parameters, ByteBuffer data)
      Mappings:
      Namespace Name Mixin selector
      official a Leat;a(Leal$a;Ljava/nio/ByteBuffer;)Leav;
      intermediary method_43442 Lnet/minecraft/class_291;method_43442(Lnet/minecraft/class_287$class_4574;Ljava/nio/ByteBuffer;)Lnet/minecraft/class_293;
      named configureVertexFormat Lnet/minecraft/client/gl/VertexBuffer;configureVertexFormat(Lnet/minecraft/client/render/BufferBuilder$DrawArrayParameters;Ljava/nio/ByteBuffer;)Lnet/minecraft/client/render/VertexFormat;
    • configureIndexBuffer

      @Nullable private RenderSystem.IndexBuffer configureIndexBuffer(BufferBuilder.DrawArrayParameters parameters, ByteBuffer data)
      Mappings:
      Namespace Name Mixin selector
      official b Leat;b(Leal$a;Ljava/nio/ByteBuffer;)Lcom/mojang/blaze3d/systems/RenderSystem$a;
      intermediary method_43443 Lnet/minecraft/class_291;method_43443(Lnet/minecraft/class_287$class_4574;Ljava/nio/ByteBuffer;)Lcom/mojang/blaze3d/systems/RenderSystem$class_5590;
      named configureIndexBuffer Lnet/minecraft/client/gl/VertexBuffer;configureIndexBuffer(Lnet/minecraft/client/render/BufferBuilder$DrawArrayParameters;Ljava/nio/ByteBuffer;)Lcom/mojang/blaze3d/systems/RenderSystem$IndexBuffer;
    • bind

      public void bind()
      Sets this vertex buffer as the current one.

      This method must be called before uploading or drawing data.

      Mappings:
      Namespace Name Mixin selector
      official a Leat;a()V
      intermediary method_1353 Lnet/minecraft/class_291;method_1353()V
      named bind Lnet/minecraft/client/gl/VertexBuffer;bind()V
    • unbind

      public static void unbind()
      Mappings:
      Namespace Name Mixin selector
      official b Leat;b()V
      intermediary method_1354 Lnet/minecraft/class_291;method_1354()V
      named unbind Lnet/minecraft/client/gl/VertexBuffer;unbind()V
    • drawElements

      public void drawElements()
      Draws the contents in this vertex buffer.

      The caller of this method must bind this vertex buffer before calling this method.

      Unlike draw(Matrix4f, Matrix4f, Shader), the caller of this method must manually bind a shader before calling this method.

      Mappings:
      Namespace Name Mixin selector
      official c Leat;c()V
      intermediary method_35665 Lnet/minecraft/class_291;method_35665()V
      named drawElements Lnet/minecraft/client/gl/VertexBuffer;drawElements()V
    • getIndexType

      private VertexFormat.IndexType getIndexType()
      Mappings:
      Namespace Name Mixin selector
      official f Leat;f()Leav$a;
      intermediary method_43445 Lnet/minecraft/class_291;method_43445()Lnet/minecraft/class_293$class_5595;
      named getIndexType Lnet/minecraft/client/gl/VertexBuffer;getIndexType()Lnet/minecraft/client/render/VertexFormat$IndexType;
    • draw

      public void draw(Matrix4f viewMatrix, Matrix4f projectionMatrix, Shader shader)
      Draws the contents in this vertex buffer with shader.

      The caller of this method must bind this vertex buffer before calling this method.

      Mappings:
      Namespace Name Mixin selector
      official a Leat;a(Ld;Ld;Lfad;)V
      intermediary method_34427 Lnet/minecraft/class_291;method_34427(Lnet/minecraft/class_1159;Lnet/minecraft/class_1159;Lnet/minecraft/class_5944;)V
      named draw Lnet/minecraft/client/gl/VertexBuffer;draw(Lnet/minecraft/util/math/Matrix4f;Lnet/minecraft/util/math/Matrix4f;Lnet/minecraft/client/render/Shader;)V
    • drawInternal

      private void drawInternal(Matrix4f viewMatrix, Matrix4f projectionMatrix, Shader shader)
      Mappings:
      Namespace Name Mixin selector
      official b Leat;b(Ld;Ld;Lfad;)V
      intermediary method_34431 Lnet/minecraft/class_291;method_34431(Lnet/minecraft/class_1159;Lnet/minecraft/class_1159;Lnet/minecraft/class_5944;)V
      named drawInternal Lnet/minecraft/client/gl/VertexBuffer;drawInternal(Lnet/minecraft/util/math/Matrix4f;Lnet/minecraft/util/math/Matrix4f;Lnet/minecraft/client/render/Shader;)V
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
    • getVertexFormat

      public VertexFormat getVertexFormat()
      Mappings:
      Namespace Name Mixin selector
      official d Leat;d()Leav;
      intermediary method_34435 Lnet/minecraft/class_291;method_34435()Lnet/minecraft/class_293;
      named getVertexFormat Lnet/minecraft/client/gl/VertexBuffer;getVertexFormat()Lnet/minecraft/client/render/VertexFormat;
    • isClosed

      public boolean isClosed()
      Mappings:
      Namespace Name Mixin selector
      official e Leat;e()Z
      intermediary method_43444 Lnet/minecraft/class_291;method_43444()Z
      named isClosed Lnet/minecraft/client/gl/VertexBuffer;isClosed()Z