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 els
intermediary net/minecraft/class_291
named net/minecraft/client/gl/VertexBuffer
  • Field Details

    • usage

      private final VertexBuffer.Usage usage
      Mappings:
      Namespace Name Mixin selector
      official a Lels;a:Lels$a;
      intermediary field_44792 Lnet/minecraft/class_291;field_44792:Lnet/minecraft/class_291$class_8555;
      named usage Lnet/minecraft/client/gl/VertexBuffer;usage:Lnet/minecraft/client/gl/VertexBuffer$Usage;
    • vertexBufferId

      private int vertexBufferId
      Mappings:
      Namespace Name Mixin selector
      official b Lels;b: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 c Lels;c: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 d Lels;d: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 e Lels;e:Lelu;
      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;
    • sharedSequentialIndexBuffer

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

      private VertexFormat.IndexType indexType
      Mappings:
      Namespace Name Mixin selector
      official g Lels;g:Lelu$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;
    • indexCount

      private int indexCount
      Mappings:
      Namespace Name Mixin selector
      official h Lels;h:I
      intermediary field_1593 Lnet/minecraft/class_291;field_1593:I
      named indexCount Lnet/minecraft/client/gl/VertexBuffer;indexCount:I
    • drawMode

      private VertexFormat.DrawMode drawMode
      Mappings:
      Namespace Name Mixin selector
      official i Lels;i:Lelu$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(VertexBuffer.Usage usage)
      Mappings:
      Namespace Name Mixin selector
      official <init> Lels;<init>(Lels$a;)V
      intermediary <init> Lnet/minecraft/class_291;<init>(Lnet/minecraft/class_291$class_8555;)V
      named <init> Lnet/minecraft/client/gl/VertexBuffer;<init>(Lnet/minecraft/client/gl/VertexBuffer$Usage;)V
  • 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 Lels;a(Lelk$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
    • uploadVertexBuffer

      private VertexFormat uploadVertexBuffer(BufferBuilder.DrawParameters parameters, ByteBuffer vertexBuffer)
      Mappings:
      Namespace Name Mixin selector
      official a Lels;a(Lelk$a;Ljava/nio/ByteBuffer;)Lelu;
      intermediary method_43442 Lnet/minecraft/class_291;method_43442(Lnet/minecraft/class_287$class_4574;Ljava/nio/ByteBuffer;)Lnet/minecraft/class_293;
      named uploadVertexBuffer Lnet/minecraft/client/gl/VertexBuffer;uploadVertexBuffer(Lnet/minecraft/client/render/BufferBuilder$DrawParameters;Ljava/nio/ByteBuffer;)Lnet/minecraft/client/render/VertexFormat;
    • uploadIndexBuffer

      @Nullable private RenderSystem.ShapeIndexBuffer uploadIndexBuffer(BufferBuilder.DrawParameters parameters, ByteBuffer indexBuffer)
      Mappings:
      Namespace Name Mixin selector
      official b Lels;b(Lelk$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 uploadIndexBuffer Lnet/minecraft/client/gl/VertexBuffer;uploadIndexBuffer(Lnet/minecraft/client/render/BufferBuilder$DrawParameters;Ljava/nio/ByteBuffer;)Lcom/mojang/blaze3d/systems/RenderSystem$ShapeIndexBuffer;
    • 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 Lels;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 Lels;b()V
      intermediary method_1354 Lnet/minecraft/class_291;method_1354()V
      named unbind Lnet/minecraft/client/gl/VertexBuffer;unbind()V
    • draw

      public void draw()
      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, ShaderProgram), the caller of this method must manually bind a shader program before calling this method.

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

      private VertexFormat.IndexType getIndexType()
      Mappings:
      Namespace Name Mixin selector
      official f Lels;f()Lelu$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, ShaderProgram program)
      Draws the contents in this vertex buffer with program.

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

      Mappings:
      Namespace Name Mixin selector
      official a Lels;a(Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Lfos;)V
      intermediary method_34427 Lnet/minecraft/class_291;method_34427(Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Lnet/minecraft/class_5944;)V
      named draw Lnet/minecraft/client/gl/VertexBuffer;draw(Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Lnet/minecraft/client/gl/ShaderProgram;)V
    • drawInternal

      private void drawInternal(Matrix4f viewMatrix, Matrix4f projectionMatrix, ShaderProgram program)
      Mappings:
      Namespace Name Mixin selector
      official b Lels;b(Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Lfos;)V
      intermediary method_34431 Lnet/minecraft/class_291;method_34431(Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Lnet/minecraft/class_5944;)V
      named drawInternal Lnet/minecraft/client/gl/VertexBuffer;drawInternal(Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Lnet/minecraft/client/gl/ShaderProgram;)V
    • close

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

      public VertexFormat getVertexFormat()
      Mappings:
      Namespace Name Mixin selector
      official d Lels;d()Lelu;
      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 Lels;e()Z
      intermediary method_43444 Lnet/minecraft/class_291;method_43444()Z
      named isClosed Lnet/minecraft/client/gl/VertexBuffer;isClosed()Z