Class ImmModeSink

java.lang.Object
com.jogamp.opengl.util.ImmModeSink

public class ImmModeSink extends Object

Immediate mode sink, implementing OpenGL fixed function subset of immediate mode operations, i.e.

   glBegin();
     glVertex3f(1f, 1f, 1f);
     glColor4f(1f, 1f, 1f, 1f);
     ...
   glEnd();
 
Implementation buffers all vertex, colors, normal and texture-coord elements in their respective buffers to be either rendered directly via glEnd(GL) or to be added to an internal display list via glEnd(gl, false) for deferred rendering via draw(GL, boolean).

Buffer storage and it's creation via createFixed(..) and createGLSL(..)

If unsure whether colors, normals and textures will be used, simply add them with an expected component count. This implementation will only render buffers which are being filled.
The buffer growing implementation will only grow the exceeded buffers, unused buffers are not resized.

Note: Optional types, i.e. color, must be either not used or used w/ the same element count as vertex, etc. This is a semantic constraint, same as in the original OpenGL spec.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
     
    static final int
     
    static final int
     
  • Method Summary

    Modifier and Type
    Method
    Description
    createFixed(int initialElementCount, int vComps, int vDataType, int cComps, int cDataType, int nComps, int nDataType, int tComps, int tDataType, int glBufferUsage)
    Uses a GL2ES1, or ES2 fixed function emulation immediate mode sink
    createGLSL(int initialElementCount, int vComps, int vDataType, int cComps, int cDataType, int nComps, int nDataType, int tComps, int tDataType, int glBufferUsage, int shaderProgram)
    Uses a GL2ES2 GLSL shader immediate mode sink, utilizing the given shader-program.
    createGLSL(int initialElementCount, int vComps, int vDataType, int cComps, int cDataType, int nComps, int nDataType, int tComps, int tDataType, int glBufferUsage, ShaderState st)
    Uses a GL2ES2 GLSL shader immediate mode sink, utilizing the given ShaderState.
    void
    destroy(GL gl)
     
    void
    draw(GL gl, boolean disableBufferAfterDraw)
     
    void
    draw(GL gl, Buffer indices, boolean disableBufferAfterDraw)
     
    int
    Returns the additional element count if buffer resize is required.
    boolean
     
    void
    glBegin(int mode)
     
    final void
    glColor3b(byte x, byte y, byte z)
     
    final void
    glColor3f(float x, float y, float z)
     
    final void
    glColor3s(short x, short y, short z)
     
    final void
    glColor3ub(byte x, byte y, byte z)
     
    final void
    glColor4b(byte x, byte y, byte z, byte a)
     
    final void
    glColor4f(float x, float y, float z, float a)
     
    final void
    glColor4s(short x, short y, short z, short a)
     
    final void
    glColor4ub(byte x, byte y, byte z, byte a)
     
    void
     
    final void
    glEnd(GL gl)
     
    void
    glEnd(GL gl, boolean immediateDraw)
     
    final void
    glEnd(GL gl, Buffer indices)
     
    final void
    glNormal3b(byte x, byte y, byte z)
     
    final void
    glNormal3f(float x, float y, float z)
     
    final void
    glNormal3s(short x, short y, short z)
     
    void
     
    final void
    glTexCoord2b(byte x, byte y)
     
    final void
    glTexCoord2f(float x, float y)
     
    final void
    glTexCoord2s(short x, short y)
     
    final void
    glTexCoord3b(byte x, byte y, byte z)
     
    final void
    glTexCoord3f(float x, float y, float z)
     
    final void
    glTexCoord3s(short x, short y, short z)
     
    void
     
    final void
    glVertex2b(byte x, byte y)
     
    final void
    glVertex2f(float x, float y)
     
    final void
    glVertex2s(short x, short y)
     
    final void
    glVertex3b(byte x, byte y, byte z)
     
    final void
    glVertex3f(float x, float y, float z)
     
    final void
    glVertex3s(short x, short y, short z)
     
    void
     
    void
     
    void
    reset(GL gl)
     
    void
    Sets the additional element count if buffer resize is required, defaults to initialElementCount of factory method.
     

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

  • Method Details

    • createFixed

      public static ImmModeSink createFixed(int initialElementCount, int vComps, int vDataType, int cComps, int cDataType, int nComps, int nDataType, int tComps, int tDataType, int glBufferUsage)
      Uses a GL2ES1, or ES2 fixed function emulation immediate mode sink

      See buffer storage details.

      Parameters:
      initialElementCount - initial buffer size, if subsequent mutable operations are about to exceed the buffer size, the buffer will grow about the initial size.
      vComps - mandatory vertex component count, should be 2, 3 or 4.
      vDataType - mandatory vertex data type, e.g. GL.GL_FLOAT
      cComps - optional color component count, may be 0, 3 or 4
      cDataType - optional color data type, e.g. GL.GL_FLOAT
      nComps - optional normal component count, may be 0, 3 or 4
      nDataType - optional normal data type, e.g. GL.GL_FLOAT
      tComps - optional texture-coordinate component count, may be 0, 2 or 3
      tDataType - optional texture-coordinate data type, e.g. GL.GL_FLOAT
      glBufferUsage - VBO usage parameter for GL.glBufferData(int, long, Buffer, int), e.g. GL.GL_STATIC_DRAW, set to 0 for no VBO usage
    • createGLSL

      public static ImmModeSink createGLSL(int initialElementCount, int vComps, int vDataType, int cComps, int cDataType, int nComps, int nDataType, int tComps, int tDataType, int glBufferUsage, ShaderState st)
      Uses a GL2ES2 GLSL shader immediate mode sink, utilizing the given ShaderState.

      See buffer storage details.

      Parameters:
      initialElementCount - initial buffer size, if subsequent mutable operations are about to exceed the buffer size, the buffer will grow about the initial size.
      vComps - mandatory vertex component count, should be 2, 3 or 4.
      vDataType - mandatory vertex data type, e.g. GL.GL_FLOAT
      cComps - optional color component count, may be 0, 3 or 4
      cDataType - optional color data type, e.g. GL.GL_FLOAT
      nComps - optional normal component count, may be 0, 3 or 4
      nDataType - optional normal data type, e.g. GL.GL_FLOAT
      tComps - optional texture-coordinate component count, may be 0, 2 or 3
      tDataType - optional texture-coordinate data type, e.g. GL.GL_FLOAT
      glBufferUsage - VBO usage parameter for GL.glBufferData(int, long, Buffer, int), e.g. GL.GL_STATIC_DRAW, set to 0 for no VBO usage
      st - ShaderState to locate the vertex attributes
      See Also:
    • createGLSL

      public static ImmModeSink createGLSL(int initialElementCount, int vComps, int vDataType, int cComps, int cDataType, int nComps, int nDataType, int tComps, int tDataType, int glBufferUsage, int shaderProgram)
      Uses a GL2ES2 GLSL shader immediate mode sink, utilizing the given shader-program.

      See buffer storage details.

      Parameters:
      initialElementCount - initial buffer size, if subsequent mutable operations are about to exceed the buffer size, the buffer will grow about the initial size.
      vComps - mandatory vertex component count, should be 2, 3 or 4.
      vDataType - mandatory vertex data type, e.g. GL.GL_FLOAT
      cComps - optional color component count, may be 0, 3 or 4
      cDataType - optional color data type, e.g. GL.GL_FLOAT
      nComps - optional normal component count, may be 0, 3 or 4
      nDataType - optional normal data type, e.g. GL.GL_FLOAT
      tComps - optional texture-coordinate component count, may be 0, 2 or 3
      tDataType - optional texture-coordinate data type, e.g. GL.GL_FLOAT
      glBufferUsage - VBO usage parameter for GL.glBufferData(int, long, Buffer, int), e.g. GL.GL_STATIC_DRAW, set to 0 for no VBO usage
      shaderProgram - shader-program name to locate the vertex attributes
      See Also:
    • destroy

      public void destroy(GL gl)
    • reset

      public void reset()
    • reset

      public void reset(GL gl)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • draw

      public void draw(GL gl, boolean disableBufferAfterDraw)
    • draw

      public void draw(GL gl, Buffer indices, boolean disableBufferAfterDraw)
    • glBegin

      public void glBegin(int mode)
    • glEnd

      public final void glEnd(GL gl)
    • glEnd

      public void glEnd(GL gl, boolean immediateDraw)
    • glEnd

      public final void glEnd(GL gl, Buffer indices)
    • glVertexv

      public void glVertexv(Buffer v)
    • glNormalv

      public void glNormalv(Buffer v)
    • glColorv

      public void glColorv(Buffer v)
    • glTexCoordv

      public void glTexCoordv(Buffer v)
    • glVertex2f

      public final void glVertex2f(float x, float y)
    • glVertex3f

      public final void glVertex3f(float x, float y, float z)
    • glNormal3f

      public final void glNormal3f(float x, float y, float z)
    • glColor3f

      public final void glColor3f(float x, float y, float z)
    • glColor4f

      public final void glColor4f(float x, float y, float z, float a)
    • glTexCoord2f

      public final void glTexCoord2f(float x, float y)
    • glTexCoord3f

      public final void glTexCoord3f(float x, float y, float z)
    • glVertex2s

      public final void glVertex2s(short x, short y)
    • glVertex3s

      public final void glVertex3s(short x, short y, short z)
    • glNormal3s

      public final void glNormal3s(short x, short y, short z)
    • glColor3s

      public final void glColor3s(short x, short y, short z)
    • glColor4s

      public final void glColor4s(short x, short y, short z, short a)
    • glTexCoord2s

      public final void glTexCoord2s(short x, short y)
    • glTexCoord3s

      public final void glTexCoord3s(short x, short y, short z)
    • glVertex2b

      public final void glVertex2b(byte x, byte y)
    • glVertex3b

      public final void glVertex3b(byte x, byte y, byte z)
    • glNormal3b

      public final void glNormal3b(byte x, byte y, byte z)
    • glColor3b

      public final void glColor3b(byte x, byte y, byte z)
    • glColor3ub

      public final void glColor3ub(byte x, byte y, byte z)
    • glColor4b

      public final void glColor4b(byte x, byte y, byte z, byte a)
    • glColor4ub

      public final void glColor4ub(byte x, byte y, byte z, byte a)
    • glTexCoord2b

      public final void glTexCoord2b(byte x, byte y)
    • glTexCoord3b

      public final void glTexCoord3b(byte x, byte y, byte z)
    • getUseVBO

      public boolean getUseVBO()
    • getResizeElementCount

      public int getResizeElementCount()
      Returns the additional element count if buffer resize is required.
      See Also:
    • setResizeElementCount

      public void setResizeElementCount(int v)
      Sets the additional element count if buffer resize is required, defaults to initialElementCount of factory method.
      See Also: