Class JoglRenderer

java.lang.Object
com.ardor3d.renderer.AbstractRenderer
com.ardor3d.renderer.jogl.JoglRenderer
All Implemented Interfaces:
Renderer

public class JoglRenderer extends AbstractRenderer
JoglRenderer provides an implementation of the Renderer interface using the JOGL API.
See Also:
  • Constructor Details

    • JoglRenderer

      public JoglRenderer()
      Constructor instantiates a new JoglRenderer object.
  • Method Details

    • setBackgroundColor

      public void setBackgroundColor(ReadOnlyColorRGBA c)
      Description copied from interface: Renderer
      setBackgroundColor sets the color of window. This color will be shown for any pixel that is not set via typical rendering operations.
      Parameters:
      c - the color to set the background to.
    • renderBuckets

      public void renderBuckets()
      Description copied from interface: Renderer
      render queues - will first sort, then render, then finally clear the queue
    • renderBuckets

      public void renderBuckets(boolean doSort, boolean doClear)
      Description copied from interface: Renderer
      render queues
      Parameters:
      doSort - if true, the queues will be sorted prior to rendering.
      doClear - if true, the queues will be emptied after rendering.
    • clearQueue

      public void clearQueue()
      clear the render queue
    • clearBuffers

      public void clearBuffers(int buffers)
      Description copied from interface: Renderer
      clearBuffers clears the given buffers (specified as a bitwise &).
      Parameters:
      buffers - the buffers to clear.
      See Also:
    • clearBuffers

      public void clearBuffers(int buffers, boolean strict)
      Description copied from interface: Renderer
      clearBuffers clears the given buffers (specified as a bitwise &).
      Parameters:
      buffers - the buffers to clear.
      strict - if true, we'll limit the clearing to just the viewport area specified by the current camera.
      See Also:
    • flushFrame

      public void flushFrame(boolean doSwap)
      Description copied from interface: Renderer
      flushFrame handles rendering any items still remaining in the render buckets and optionally swaps the back buffer with the currently displayed buffer.
      Parameters:
      doSwap - if true, will ask the underlying implementation to blit the back buffer contents to the display buffer. Usually this will be true, unless you are in a windowing toolkit that handles doing this for you.
    • setOrtho

      public void setOrtho()
      Description copied from interface: Renderer
      setOrtho sets the display system to be in orthographic mode. If the system has already been set to orthographic mode a Ardor3dException is thrown. The origin (0,0) is the bottom left of the screen.
    • unsetOrtho

      public void unsetOrtho()
      Description copied from interface: Renderer
      unsetOrhto unsets the display system from orthographic mode back into regular projection mode. If the system is not in orthographic mode a Ardor3dException is thrown.
    • grabScreenContents

      public void grabScreenContents(ByteBuffer store, ImageDataFormat format, PixelDataType type, int x, int y, int w, int h)
    • getExpectedBufferSizeToGrabScreenContents

      public int getExpectedBufferSizeToGrabScreenContents(ImageDataFormat format, PixelDataType type, int w, int h)
      Description copied from interface: Renderer
      Gets the expected size (in bytes) of the buffer used to call grabScreenContents
      Specified by:
      getExpectedBufferSizeToGrabScreenContents in interface Renderer
      Overrides:
      getExpectedBufferSizeToGrabScreenContents in class AbstractRenderer
      Parameters:
      format - the format to read in data for.
      type - the format to read in data for.
      w - - width of block
      h - - height of block
      Returns:
      the expected size (in bytes) of the buffer used to call grabScreenContents
    • draw

      public void draw(Spatial s)
      Description copied from interface: Renderer
      draw renders a scene. As it receives a base class of Spatial the renderer hands off management of the scene to spatial for it to determine when a Geometry leaf is reached.
      Parameters:
      s - the scene to render.
    • checkAndAdd

      public boolean checkAndAdd(Spatial s)
      Description copied from interface: Renderer
      Check a given Spatial to see if it should be queued. return true if it was queued.
      Parameters:
      s - Spatial to check
      Returns:
      true if it was queued.
    • postdrawGeometry

      protected void postdrawGeometry(Mesh g)
      re-initializes the GL context for rendering of another piece of geometry.
      Parameters:
      g - the mesh
    • flushGraphics

      public void flushGraphics()
      Description copied from interface: Renderer
      flush tells the graphics hardware to send through all currently waiting commands in the buffer.
    • finishGraphics

      public void finishGraphics()
      Description copied from interface: Renderer
      finish is similar to flush, however it blocks until all waiting hardware graphics commands have been finished.
    • applyNormalsMode

      public void applyNormalsMode(NormalsMode normalsMode, ReadOnlyTransform worldTransform)
    • applyDefaultColor

      public void applyDefaultColor(ReadOnlyColorRGBA defaultColor)
    • deleteVBOs

      public void deleteVBOs(Collection<Integer> ids)
      Description copied from interface: Renderer
      Attempts to delete the VBOs with the given id. Ignores null ids or ids < 1.
      Parameters:
      ids - the identifiers
    • deleteDisplayLists

      public void deleteDisplayLists(Collection<Integer> ids)
      Description copied from interface: Renderer
      Removes the given display lists by id from the current OpenGL context.
      Parameters:
      ids - a list/set of ids to remove.
    • deleteVBOs

      public void deleteVBOs(AbstractBufferData<?> buffer)
      Description copied from interface: Renderer
      Attempts to delete any VBOs associated with this buffer that are relevant to the current RenderContext.
      Parameters:
      buffer - the buffer data
    • updateTexture1DSubImage

      public void updateTexture1DSubImage(Texture1D destination, int dstOffsetX, int dstWidth, ByteBuffer source, int srcOffsetX)
      Description copied from interface: Renderer
      Update all or a portion of an existing one dimensional texture object.
      Parameters:
      destination - the texture to update. Should already have been sent to the card (have a valid texture id.)
      dstOffsetX - the offset into the destination to start our update.
      dstWidth - the width of the region to update.
      source - the data to update from.
      srcOffsetX - the optional offset into our source data.
    • updateTexture2DSubImage

      public void updateTexture2DSubImage(Texture2D destination, int dstOffsetX, int dstOffsetY, int dstWidth, int dstHeight, ByteBuffer source, int srcOffsetX, int srcOffsetY, int srcTotalWidth)
      Description copied from interface: Renderer
      Update all or a portion of an existing two dimensional texture object.
      Parameters:
      destination - the texture to update. Should already have been sent to the card (have a valid texture id.)
      dstOffsetX - the x offset into the destination to start our update.
      dstOffsetY - the y offset into the destination to start our update.
      dstWidth - the width of the region to update.
      dstHeight - the height of the region to update.
      source - the data to update from.
      srcOffsetX - the optional X offset into our source data.
      srcOffsetY - the optional Y offset into our source data.
      srcTotalWidth - the total width of our source data, so we can properly walk through it.
    • updateTexture3DSubImage

      public void updateTexture3DSubImage(Texture3D destination, int dstOffsetX, int dstOffsetY, int dstOffsetZ, int dstWidth, int dstHeight, int dstDepth, ByteBuffer source, int srcOffsetX, int srcOffsetY, int srcOffsetZ, int srcTotalWidth, int srcTotalHeight)
      Description copied from interface: Renderer
      Update all or a portion of an existing one dimensional texture object.
      Parameters:
      destination - the texture to update. Should already have been sent to the card (have a valid texture id.)
      dstOffsetX - the x offset into the destination to start our update.
      dstOffsetY - the y offset into the destination to start our update.
      dstOffsetZ - the z offset into the destination to start our update.
      dstWidth - the width of the region to update.
      dstHeight - the height of the region to update.
      dstDepth - the depth of the region to update. eg. 1 == one slice
      source - the data to update from.
      srcOffsetX - the optional X offset into our source data.
      srcOffsetY - the optional Y offset into our source data.
      srcOffsetZ - the optional Z offset into our source data.
      srcTotalWidth - the total width of our source data, so we can properly walk through it.
      srcTotalHeight - the total height of our source data, so we can properly walk through it.
    • updateTextureCubeMapSubImage

      public void updateTextureCubeMapSubImage(TextureCubeMap destination, TextureCubeMap.Face dstFace, int dstOffsetX, int dstOffsetY, int dstWidth, int dstHeight, ByteBuffer source, int srcOffsetX, int srcOffsetY, int srcTotalWidth)
      Description copied from interface: Renderer
      Update all or a portion of a single two dimensional face on an existing cubemap texture object.
      Parameters:
      destination - the texture to update. Should already have been sent to the card (have a valid texture id.)
      dstFace - the face to update.
      dstOffsetX - the x offset into the destination to start our update.
      dstOffsetY - the y offset into the destination to start our update.
      dstWidth - the width of the region to update.
      dstHeight - the height of the region to update.
      source - the data to update from.
      srcOffsetX - the optional X offset into our source data.
      srcOffsetY - the optional Y offset into our source data.
      srcTotalWidth - the total width of our source data, so we can properly walk through it.
    • checkCardError

      public void checkCardError() throws Ardor3dException
      Description copied from interface: Renderer
      Check the underlying rendering system (opengl, etc.) for exceptions.
      Throws:
      Ardor3dException - if an error is found.
    • draw

      public void draw(Renderable renderable)
      Description copied from interface: Renderer
      draw renders the renderable to the back buffer.
      Parameters:
      renderable - the text object to be rendered.
    • doTransforms

      public boolean doTransforms(ReadOnlyTransform transform)
      Description copied from interface: Renderer
      doTransforms sets the current transform.
      Parameters:
      transform - transform to apply.
      Returns:
      true if the transform has been applied
    • undoTransforms

      public void undoTransforms(ReadOnlyTransform transform)
      Description copied from interface: Renderer
      undoTransforms reverts the latest transform.
      Parameters:
      transform - transform to revert.
    • setupVertexData

      public void setupVertexData(FloatBufferData vertexBufferData)
    • setupNormalData

      public void setupNormalData(FloatBufferData normalBufferData)
    • setupColorData

      public void setupColorData(FloatBufferData colorBufferData)
    • setupFogData

      public void setupFogData(FloatBufferData fogBufferData)
    • setupTextureData

      public void setupTextureData(List<FloatBufferData> textureCoords)
    • drawElements

      public void drawElements(IndexBufferData<?> indices, int[] indexLengths, IndexMode[] indexModes, int primcount)
    • setupVBO

      public static int setupVBO(AbstractBufferData<? extends Buffer> data, RenderContext context)
    • setupVertexDataVBO

      public void setupVertexDataVBO(FloatBufferData data)
    • setupNormalDataVBO

      public void setupNormalDataVBO(FloatBufferData data)
    • setupColorDataVBO

      public void setupColorDataVBO(FloatBufferData data)
    • setupFogDataVBO

      public void setupFogDataVBO(FloatBufferData data)
    • setupTextureDataVBO

      public void setupTextureDataVBO(List<FloatBufferData> textureCoords)
    • drawElementsVBO

      public void drawElementsVBO(IndexBufferData<?> indices, int[] indexLengths, IndexMode[] indexModes, int primcount)
    • drawArrays

      public void drawArrays(FloatBufferData vertexBuffer, int[] indexLengths, IndexMode[] indexModes, int primcount)
    • unbindVBO

      public void unbindVBO()
      Description copied from interface: Renderer
      Unbind the current VBO elements.
    • setModelViewMatrix

      public void setModelViewMatrix(FloatBuffer matrix)
    • setProjectionMatrix

      public void setProjectionMatrix(FloatBuffer matrix)
    • getModelViewMatrix

      public FloatBuffer getModelViewMatrix(FloatBuffer store)
      Description copied from interface: Renderer
      Gets the current model-view matrix in row major order
      Parameters:
      store - The buffer to store in. If null or remaining is < 16, a new FloatBuffer will be created and returned.
      Returns:
      the model-view matrix
    • getProjectionMatrix

      public FloatBuffer getProjectionMatrix(FloatBuffer store)
      Description copied from interface: Renderer
      Gets the current projection matrix in row major order
      Parameters:
      store - The buffer to store in. If null or remaining is < 16, a new FloatBuffer will be created and returned.
      Returns:
      the projection matrix
    • setViewport

      public void setViewport(int x, int y, int width, int height)
    • setDepthRange

      public void setDepthRange(double depthRangeNear, double depthRangeFar)
    • setDrawBuffer

      public void setDrawBuffer(DrawBufferTarget target)
      Description copied from interface: Renderer
      Specify which color buffers are to be drawn into.
      Parameters:
      target - the target
    • setupLineParameters

      public void setupLineParameters(float lineWidth, int stippleFactor, short stipplePattern, boolean antialiased)
      Description copied from interface: Renderer
      This is a workaround until we make shared Record classes, or open up lower level opengl calls abstracted from jogl.
      Parameters:
      lineWidth - the line width
      stippleFactor - the stipple factor
      stipplePattern - the stipple pattern
      antialiased - true if anti-aliased
    • setupPointParameters

      public void setupPointParameters(float pointSize, boolean antialiased, boolean isSprite, boolean useDistanceAttenuation, FloatBuffer attenuationCoefficients, float minPointSize, float maxPointSize)
      Description copied from interface: Renderer
      This is a workaround until we make shared Record classes, or open up lower level opengl calls abstracted from jogl.
      Parameters:
      pointSize - the point size
      antialiased - true if anti-aliased
      isSprite - true if it is a sprite
      useDistanceAttenuation - true if the distance attenuation is enabled
      attenuationCoefficients - the attenuation coefficients
      minPointSize - the points minimum size
      maxPointSize - the points maximum size
    • doApplyState

      protected void doApplyState(RenderState state)
      Specified by:
      doApplyState in class AbstractRenderer
    • deleteTexture

      public void deleteTexture(Texture texture)
      Description copied from interface: Renderer
      Explicitly remove this Texture from the graphics card. Note, the texture is only removed for the current context. If the texture is used in other contexts, those uses are not touched. If the texture is not used in this context, this is a no-op.
      Parameters:
      texture - the Texture object to remove.
    • loadTexture

      public void loadTexture(Texture texture, int unit)
      Description copied from interface: Renderer
      Loads a texture onto the card for the current OpenGL context.
      Parameters:
      texture - the texture object to load.
      unit - the texture unit to load into
    • deleteTextureIds

      public void deleteTextureIds(Collection<Integer> ids)
      Description copied from interface: Renderer
      Removes the given texture ids from the current OpenGL context.
      Parameters:
      ids - a list/set of ids to remove.
    • startDisplayList

      public int startDisplayList()
      Start a new display list. All further renderer commands that can be stored in a display list are part of this new list until endDisplayList() is called.
      Returns:
      id of new display list
    • endDisplayList

      public void endDisplayList()
      Ends a display list. Will likely cause an OpenGL exception is a display list is not currently being generated.
    • renderDisplayList

      public void renderDisplayList(int displayListID)
      Draw the given display list.
    • clearClips

      public void clearClips()
      Description copied from interface: Renderer
      Clear all rectangles from the clip stack and disable clipping.
    • popClip

      public void popClip()
      Description copied from interface: Renderer
      Pop the most recent rectangle from the stack and adjust the rendering area accordingly.
    • pushClip

      public void pushClip(ReadOnlyRectangle2 rectangle)
      Description copied from interface: Renderer
      Add the given rectangle to the clip stack, clipping the rendering area by the given rectangle intersected with any existing scissor entries. Enable clipping if this is the first rectangle in the stack.
      Parameters:
      rectangle - the rectangle
    • pushEmptyClip

      public void pushEmptyClip()
      Description copied from interface: Renderer
      Push a clip onto the stack indicating that future clips should not intersect with clips prior to this one. Basically this allows you to ignore prior clips for nested drawing. Make sure you pop this using Renderer.popClip().
    • setClipTestEnabled

      public void setClipTestEnabled(boolean enabled)
      Parameters:
      enabled - toggle clipping without effecting the current clip stack.
    • checkAndSetTextureArrayUnit

      public void checkAndSetTextureArrayUnit(int unit, com.jogamp.opengl.GL gl, RendererRecord record, ContextCapabilities caps)