Top Description Constructors Methods
org.lwjgl.opengles

public Class OESDrawElementsBaseVertex

extends Object
Class Inheritance
Imports
java.nio.*, org.lwjgl.*, org.lwjgl.system.*

Native bindings to the OES_draw_elements_base_vertex extension.

This extension provides a method to specify a "base vertex offset" value which is effectively added to every vertex index that is transferred through DrawElements.

This mechanism can be used to decouple a set of indices from the actual vertex array that it is referencing. This is useful if an application stores multiple indexed models in a single vertex array. The same index array can be used to draw the model no matter where it ends up in a larger vertex array simply by changing the base vertex value. Without this functionality, it would be necessary to rebind all the vertex attributes every time geometry is switched and this can have larger performance penalty.

For example consider the (very contrived and simple) example of drawing two triangles to form a quad. In the typical example you have the following setup:


         vertices                indices
         ----------                -----
      0 | (-1,  1) |            0 |  0  |
      1 | (-1, -1) |            1 |  1  |
      2 | ( 1, -1) |            2 |  2  |
      3 | ( 1,  1) |            3 |  3  |
         ----------             4 |  0  |
                                5 |  2  |
                                   -----

which is normally rendered with the call


        DrawElements(TRIANGLES, 6, UNSIGNED_BYTE, &indices).

Now consider the case where the vertices you want to draw are not at the start of a vertex array but are instead located at offset 100 into a larger array:


           vertices2             indices2
           ----------             -----
              ....             0 | 100 |
      100 | (-1,  1) |         1 | 101 |
      101 | (-1, -1) |         2 | 102 |
      102 | ( 1, -1) |         3 | 103 |
      103 | ( 1,  1) |         4 | 100 |
              ....             5 | 102 |
           ----------             -----

The typical choices for rendering this are to rebind your vertex attributes with an additional offset of 100*stride, or to create an new array of indices (as indices2 in the example). However both rebinding vertex attributes and rebuilding index arrays can be quite costly activities.

With the new drawing commands introduced by this extension you can instead draw using vertices2 and the new draw call:


        DrawElementsBaseVertexOES(TRIANGLES, 6, UNSIGNED_BYTE, &indices, 100)

Requires GLES 2.0.

Constructor Summary

AccessConstructor and Description
protected

Method Summary

Modifier and TypeMethod and Description
public static void
glDrawElementsBaseVertexOES(int mode, int count, int type, long indices, int basevertex)

public static void
glDrawElementsBaseVertexOES(int mode, int type, ByteBuffer indices, int basevertex)

public static void
glDrawElementsBaseVertexOES(int mode, ByteBuffer indices, int basevertex)

public static void
glDrawElementsBaseVertexOES(int mode, ShortBuffer indices, int basevertex)

public static void
glDrawElementsBaseVertexOES(int mode, IntBuffer indices, int basevertex)

public static void
glDrawElementsInstancedBaseVertexOES(int mode, int count, int type, long indices, int instancecount, int basevertex)

public static void
glDrawElementsInstancedBaseVertexOES(int mode, int type, ByteBuffer indices, int instancecount, int basevertex)

public static void
glDrawElementsInstancedBaseVertexOES(int mode, ByteBuffer indices, int instancecount, int basevertex)

public static void
glDrawElementsInstancedBaseVertexOES(int mode, ShortBuffer indices, int instancecount, int basevertex)

public static void
glDrawElementsInstancedBaseVertexOES(int mode, IntBuffer indices, int instancecount, int basevertex)

public static void
glDrawRangeElementsBaseVertexOES(int mode, int start, int end, int count, int type, long indices, int basevertex)

public static void
glDrawRangeElementsBaseVertexOES(int mode, int start, int end, int type, ByteBuffer indices, int basevertex)

public static void
glDrawRangeElementsBaseVertexOES(int mode, int start, int end, ByteBuffer indices, int basevertex)

public static void
glDrawRangeElementsBaseVertexOES(int mode, int start, int end, ShortBuffer indices, int basevertex)

public static void
glDrawRangeElementsBaseVertexOES(int mode, int start, int end, IntBuffer indices, int basevertex)

public static void
glMultiDrawElementsBaseVertexOES(int mode, IntBuffer count, int type, PointerBuffer indices, IntBuffer basevertex)

public static void
glMultiDrawElementsBaseVertexOES(int mode, int[] count, int type, PointerBuffer indices, int[] basevertex)

Array version of: MultiDrawElementsBaseVertexOES

public static native void
nglDrawElementsBaseVertexOES(int mode, int count, int type, long indices, int basevertex)

public static native void
nglDrawElementsInstancedBaseVertexOES(int mode, int count, int type, long indices, int instancecount, int basevertex)

public static native void
nglDrawRangeElementsBaseVertexOES(int mode, int start, int end, int count, int type, long indices, int basevertex)

public static native void
nglMultiDrawElementsBaseVertexOES(int mode, long count, int type, long indices, int drawcount, long basevertex)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

OESDrawElementsBaseVertexback to summary
protected OESDrawElementsBaseVertex()

Method Detail

glDrawElementsBaseVertexOESback to summary
public static void glDrawElementsBaseVertexOES(int mode, int count, int type, long indices, int basevertex)
glDrawElementsBaseVertexOESback to summary
public static void glDrawElementsBaseVertexOES(int mode, int type, ByteBuffer indices, int basevertex)
glDrawElementsBaseVertexOESback to summary
public static void glDrawElementsBaseVertexOES(int mode, ByteBuffer indices, int basevertex)
glDrawElementsBaseVertexOESback to summary
public static void glDrawElementsBaseVertexOES(int mode, ShortBuffer indices, int basevertex)
glDrawElementsBaseVertexOESback to summary
public static void glDrawElementsBaseVertexOES(int mode, IntBuffer indices, int basevertex)
glDrawElementsInstancedBaseVertexOESback to summary
public static void glDrawElementsInstancedBaseVertexOES(int mode, int count, int type, long indices, int instancecount, int basevertex)
glDrawElementsInstancedBaseVertexOESback to summary
public static void glDrawElementsInstancedBaseVertexOES(int mode, int type, ByteBuffer indices, int instancecount, int basevertex)
glDrawElementsInstancedBaseVertexOESback to summary
public static void glDrawElementsInstancedBaseVertexOES(int mode, ByteBuffer indices, int instancecount, int basevertex)
glDrawElementsInstancedBaseVertexOESback to summary
public static void glDrawElementsInstancedBaseVertexOES(int mode, ShortBuffer indices, int instancecount, int basevertex)
glDrawElementsInstancedBaseVertexOESback to summary
public static void glDrawElementsInstancedBaseVertexOES(int mode, IntBuffer indices, int instancecount, int basevertex)
glDrawRangeElementsBaseVertexOESback to summary
public static void glDrawRangeElementsBaseVertexOES(int mode, int start, int end, int count, int type, long indices, int basevertex)
glDrawRangeElementsBaseVertexOESback to summary
public static void glDrawRangeElementsBaseVertexOES(int mode, int start, int end, int type, ByteBuffer indices, int basevertex)
glDrawRangeElementsBaseVertexOESback to summary
public static void glDrawRangeElementsBaseVertexOES(int mode, int start, int end, ByteBuffer indices, int basevertex)
glDrawRangeElementsBaseVertexOESback to summary
public static void glDrawRangeElementsBaseVertexOES(int mode, int start, int end, ShortBuffer indices, int basevertex)
glDrawRangeElementsBaseVertexOESback to summary
public static void glDrawRangeElementsBaseVertexOES(int mode, int start, int end, IntBuffer indices, int basevertex)
glMultiDrawElementsBaseVertexOESback to summary
public static void glMultiDrawElementsBaseVertexOES(int mode, IntBuffer count, int type, PointerBuffer indices, IntBuffer basevertex)
glMultiDrawElementsBaseVertexOESback to summary
public static void glMultiDrawElementsBaseVertexOES(int mode, int[] count, int type, PointerBuffer indices, int[] basevertex)

Array version of: MultiDrawElementsBaseVertexOES

nglDrawElementsBaseVertexOESback to summary
public static native void nglDrawElementsBaseVertexOES(int mode, int count, int type, long indices, int basevertex)
nglDrawElementsInstancedBaseVertexOESback to summary
public static native void nglDrawElementsInstancedBaseVertexOES(int mode, int count, int type, long indices, int instancecount, int basevertex)
nglDrawRangeElementsBaseVertexOESback to summary
public static native void nglDrawRangeElementsBaseVertexOES(int mode, int start, int end, int count, int type, long indices, int basevertex)
nglMultiDrawElementsBaseVertexOESback to summary
public static native void nglMultiDrawElementsBaseVertexOES(int mode, long count, int type, long indices, int drawcount, long basevertex)