de.javagl.simplerenderer
Class AbstractSimpleRenderer

java.lang.Object
  extended by de.javagl.simplerenderer.AbstractSimpleRenderer
All Implemented Interfaces:
SimpleRenderer
Direct Known Subclasses:
SimpleRendererJOGL, SimpleRendererLWJGL

public abstract class AbstractSimpleRenderer
extends java.lang.Object
implements SimpleRenderer

Abstract base implementation of a SimpleRenderer


Field Summary
protected static java.lang.String FRAGMENT_SHADER_SOURCE
          Fragment shader source code
protected static java.lang.String VERTEX_SHADER_SOURCE
          Vertex shader source code
 
Fields inherited from interface de.javagl.simplerenderer.SimpleRenderer
CL_CGL_SHAREGROUP_KHR, CL_EGL_DISPLAY_KHR, CL_GL_CONTEXT_KHR, CL_GLX_DISPLAY_KHR, CL_WGL_HDC_KHR
 
Constructor Summary
protected AbstractSimpleRenderer()
          Creates a new AbstractSimpleRenderer
 
Method Summary
 void addPostRenderCallback(java.lang.Runnable runnable)
          Add the given runnable to the rendering callbacks that will be called after each rendering pass.
 void addPreRenderCallback(java.lang.Runnable runnable)
          Add the given runnable to the rendering callbacks that will be called before each rendering pass.
 void addSimpleObject(SimpleObject simpleObject)
          Add a task to add the given object to this renderer.
protected abstract  SimpleObjectGL addSimpleObjectInternal(SimpleObject simpleObject)
          Will be called on the rendering thread to add the given SimpleObject.
 void clearSimpleObjects()
          Add a task to remove all objects before the next rendering pass.
protected  float[] getModelviewMatrix()
          Returns a reference to the current modelview matrix
protected  float[] getProjectionMatrix()
          Returns a reference to the current projection matrix
 java.util.concurrent.Semaphore getRenderingSemaphore()
          Returns the Semaphore that will be acquired before the rendering, and released after the rendering.
 SimpleObjectGL getSimpleObjectGL(SimpleObject simpleObject)
          Returns the internal representation of the given object.
 java.util.List<SimpleObject> getSimpleObjects()
          Returns an immutable list of all SimpleObjects.
protected  void internalInitialization()
          Internal initialization, to be called after the constructors of the subclasses have finished.
 void invokeLater(java.lang.Runnable runnable)
          Add the given runnable to be executed on the rendering thread before the next rendering pass.
protected  void postRender()
          Will be called immediately after rendering the objects
protected  void preRender()
          Will be called immediately before rendering the objects
protected  void processPostRenderCallbacks()
          Process all post-render callbacks
protected  void processPreRenderCallbacks()
          Process all pre-render callbacks
protected  void processTasks()
          Process all tasks that have been scheduled since the previous rendering pass
 void removePostRenderCallback(java.lang.Runnable runnable)
          Remove the given runnable from the rendering callbacks.
 void removePreRenderCallback(java.lang.Runnable runnable)
          Remove the given runnable from the rendering callbacks.
 void removeSimpleObject(SimpleObject simpleObject)
          Add a task to remove the given object.
protected abstract  SimpleObjectGL removeSimpleObjectInternal(SimpleObject simpleObject)
          Will be called on the rendering thread to release the given SimpleObject.
protected  void render()
          Performs the actual rendering
protected abstract  void render(SimpleObject simpleObject)
          Render the given object
protected abstract  void setupView()
          Set up the viewport depending on the size of the rendering component.
protected  void updateProjectionMatrix()
          Should be called after the view has changed (e.g. the size of the rendering component)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface de.javagl.simplerenderer.SimpleRenderer
acquireBuffer, getCLContextProperties, getRenderComponent, releaseBuffer
 

Field Detail

VERTEX_SHADER_SOURCE

protected static final java.lang.String VERTEX_SHADER_SOURCE
Vertex shader source code

See Also:
Constant Field Values

FRAGMENT_SHADER_SOURCE

protected static final java.lang.String FRAGMENT_SHADER_SOURCE
Fragment shader source code

See Also:
Constant Field Values
Constructor Detail

AbstractSimpleRenderer

protected AbstractSimpleRenderer()
Creates a new AbstractSimpleRenderer

Method Detail

internalInitialization

protected void internalInitialization()
Internal initialization, to be called after the constructors of the subclasses have finished.


updateProjectionMatrix

protected void updateProjectionMatrix()
Should be called after the view has changed (e.g. the size of the rendering component)


getModelviewMatrix

protected float[] getModelviewMatrix()
Returns a reference to the current modelview matrix

Returns:
The modelviewMatrix matrix

getProjectionMatrix

protected float[] getProjectionMatrix()
Returns a reference to the current projection matrix

Returns:
The projection matrix

invokeLater

public void invokeLater(java.lang.Runnable runnable)
Description copied from interface: SimpleRenderer
Add the given runnable to be executed on the rendering thread before the next rendering pass.

Specified by:
invokeLater in interface SimpleRenderer
Parameters:
runnable - The runnable to add

addPreRenderCallback

public void addPreRenderCallback(java.lang.Runnable runnable)
Description copied from interface: SimpleRenderer
Add the given runnable to the rendering callbacks that will be called before each rendering pass.

Specified by:
addPreRenderCallback in interface SimpleRenderer
Parameters:
runnable - The runnable to add.

removePreRenderCallback

public void removePreRenderCallback(java.lang.Runnable runnable)
Description copied from interface: SimpleRenderer
Remove the given runnable from the rendering callbacks.

Specified by:
removePreRenderCallback in interface SimpleRenderer
Parameters:
runnable - The runnable to remove.

addPostRenderCallback

public void addPostRenderCallback(java.lang.Runnable runnable)
Description copied from interface: SimpleRenderer
Add the given runnable to the rendering callbacks that will be called after each rendering pass.

Specified by:
addPostRenderCallback in interface SimpleRenderer
Parameters:
runnable - The runnable to add.

removePostRenderCallback

public void removePostRenderCallback(java.lang.Runnable runnable)
Description copied from interface: SimpleRenderer
Remove the given runnable from the rendering callbacks.

Specified by:
removePostRenderCallback in interface SimpleRenderer
Parameters:
runnable - The runnable to remove.

render

protected void render()
Performs the actual rendering


setupView

protected abstract void setupView()
Set up the viewport depending on the size of the rendering component. Will be called at the beginning of the rendering pass.


preRender

protected void preRender()
Will be called immediately before rendering the objects


render

protected abstract void render(SimpleObject simpleObject)
Render the given object

Parameters:
simpleObject - The object to render

postRender

protected void postRender()
Will be called immediately after rendering the objects


processTasks

protected void processTasks()
Process all tasks that have been scheduled since the previous rendering pass


processPreRenderCallbacks

protected void processPreRenderCallbacks()
Process all pre-render callbacks


processPostRenderCallbacks

protected void processPostRenderCallbacks()
Process all post-render callbacks


addSimpleObject

public void addSimpleObject(SimpleObject simpleObject)
Description copied from interface: SimpleRenderer
Add a task to add the given object to this renderer. The object will be added before the next rendering pass.

Specified by:
addSimpleObject in interface SimpleRenderer
Parameters:
simpleObject - The object to add

addSimpleObjectInternal

protected abstract SimpleObjectGL addSimpleObjectInternal(SimpleObject simpleObject)
Will be called on the rendering thread to add the given SimpleObject.

Parameters:
simpleObject - The SimpleObject to add
Returns:
The SimpleObjectGL

removeSimpleObject

public void removeSimpleObject(SimpleObject simpleObject)
Description copied from interface: SimpleRenderer
Add a task to remove the given object. The object will be removed before the next rendering pass.

Specified by:
removeSimpleObject in interface SimpleRenderer
Parameters:
simpleObject - The object to remove.

removeSimpleObjectInternal

protected abstract SimpleObjectGL removeSimpleObjectInternal(SimpleObject simpleObject)
Will be called on the rendering thread to release the given SimpleObject.

Parameters:
simpleObject - The SimpleObject to remove
Returns:
The SimpleObjectGL

getSimpleObjects

public java.util.List<SimpleObject> getSimpleObjects()
Description copied from interface: SimpleRenderer
Returns an immutable list of all SimpleObjects. This list only contains the objects for which an internal representation has already been created. That is, it contains only the objects which have been added before the previous rendering pass.

Specified by:
getSimpleObjects in interface SimpleRenderer
Returns:
An immutable list of all SimpleObjects.

clearSimpleObjects

public void clearSimpleObjects()
Description copied from interface: SimpleRenderer
Add a task to remove all objects before the next rendering pass.

Specified by:
clearSimpleObjects in interface SimpleRenderer

getSimpleObjectGL

public SimpleObjectGL getSimpleObjectGL(SimpleObject simpleObject)
Description copied from interface: SimpleRenderer
Returns the internal representation of the given object. This internal representation only exists if the object had been added before the previous rendering pass.

Specified by:
getSimpleObjectGL in interface SimpleRenderer
Parameters:
simpleObject - The object whose internal representation should be obtained.
Returns:
The internal representation of the given object, or null if the given object is not handled by this renderer.

getRenderingSemaphore

public java.util.concurrent.Semaphore getRenderingSemaphore()
Description copied from interface: SimpleRenderer
Returns the Semaphore that will be acquired before the rendering, and released after the rendering.

Specified by:
getRenderingSemaphore in interface SimpleRenderer
Returns:
The rendering samaphore