|
Aviatrix3D 1.0 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.j3d.aviatrix3d.surface.StereoAWTSurface
Implementation of the most drawable surface, supporting stereo rendering capabilities.
This implementation of DrawableSurface renders to a normal GLCanvas instance and provides pBuffer support as needed. Stereo support is provided based on the underlying hardware capabilities in combination with the user requested features.
In implementing the alternate frame mode rendering, there's some odd artifacts/bugs in the rendering process. What seems to be happening is if we draw left and then right on the same canvas one after the other, the left one always gets drawn, and the right one is drawn, with the left cleared very quickly. The effect is that the right image is very prominent, but the left is almost not seen at all.
So, for now the implementation uses an internal flag to draw to alternate eyes on each alternate call to display() from the external rendering thread. This really slows the renderer down from a frame rate perspective, so make sure your rendering cycle time is halved if you are using that to control frame rate.
| Field Summary |
| Fields inherited from interface org.j3d.aviatrix3d.DrawableSurface |
ALTERNATE_FRAME_STEREO, NO_STEREO, QUAD_BUFFER_STEREO, TWO_CANVAS_STEREO |
| Constructor Summary | |
StereoAWTSurface(net.java.games.jogl.GLCapabilities caps)
Construct a surface that requires the given set of capabilities. |
|
| Method Summary | |
void |
checkForExtension(java.lang.String glExtensionString)
Add an extension string to check for at startup. |
void |
display(net.java.games.jogl.GLDrawable drawable)
Not used in this implementation |
void |
displayChanged(net.java.games.jogl.GLDrawable drawable,
boolean modeChanged,
boolean deviceChanged)
Not used in this implementation |
void |
dispose()
Instruct this surface that you have finished with the resources needed and to dispose all rendering resources. |
void |
draw()
Instruct the surface to draw the collected set of nodes now. |
void |
getCenterEyeInSurface(javax.vecmath.Point3f position)
Get the Center Eye position in surface coordinates. |
void |
getPixelLocationInSurface(float x,
float y,
javax.vecmath.Point3f position)
Convert a pixel location to surface coordinates. |
float |
getStereoEyeSeparation()
Get the current eye separation value - always returns 0. |
int |
getStereoRenderingPolicy()
Get the current stereo rendering policy in use. |
java.lang.Object |
getSurfaceObject()
Get the underlying object that this surface is rendered to. |
void |
getSurfaceToVWorld(javax.vecmath.Matrix4f matrix)
Get the surface to VWorld transformation matrix. |
void |
init(net.java.games.jogl.GLDrawable drawable)
Called by the drawable immediately after the OpenGL context is initialized; the GLContext has already been made current when this method is called. |
boolean |
isQuadStereoAvailable()
Check to see whether this surface supports Quad buffer stereo rendering. |
boolean |
isStereoAvailable()
Check to see whether this surface supports stereo rendering. |
void |
queueDeletedObject(DeletableSceneGraphObject obj)
An object has been detected as being deleted (no internal or external references to it left) and it needs to be cleaned up. |
void |
queueShaderRequests(ShaderSceneGraphObject[] initList,
int numInit,
ShaderSceneGraphObject[] logList,
int numLog)
Queue up a collection of shader objects for processing on the next frame. |
void |
reshape(net.java.games.jogl.GLDrawable drawable,
int x,
int y,
int width,
int height)
Not used in this implementation |
void |
resychronizeRenderTarget()
Resynchronise the stereo rendering to be the next frame as the left eye view. |
void |
setClearColor(float r,
float g,
float b,
float a)
Set the background colour that this surface should be cleared to before the drawing step. |
void |
setDrawableObjects(RenderInstructions[] commands,
int numValid)
Update the list of items to be rendered to the current list. |
void |
setRenderControlThread(java.lang.Thread th)
Tell the surface to use the given thread as the rendering control thread. |
void |
setStereoEyeSeparation(float sep)
Set the eye separation value when rendering stereo. |
void |
setStereoRenderingPolicy(int policy)
Set the rendering policy used when handling stereo. |
void |
swap()
Swap the buffers now if the surface supports multiple buffer drawing. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
public StereoAWTSurface(net.java.games.jogl.GLCapabilities caps)
caps - A set of required capabilities for this canvas.| Method Detail |
public boolean isStereoAvailable()
isStereoAvailable in interface DrawableSurfacepublic boolean isQuadStereoAvailable()
As this is not known until after initialisation, this method will return false until it can determine whether or not stereo is available.
isQuadStereoAvailable in interface DrawableSurfacepublic void setStereoEyeSeparation(float sep)
setStereoEyeSeparation in interface DrawableSurfacesep - The amount of eye separationpublic float getStereoEyeSeparation()
getStereoEyeSeparation in interface DrawableSurfacepublic void setStereoRenderingPolicy(int policy)
setStereoRenderingPolicy in interface DrawableSurfacepolicy - The policy to currently use
java.lang.IllegalArgumentException - The policy type is not one of the legal
selections.public int getStereoRenderingPolicy()
NO_STEREO.
getStereoRenderingPolicy in interface DrawableSurfacepublic void queueDeletedObject(DeletableSceneGraphObject obj)
cleanup() method called and then the
reference to it should be discarded.
queueDeletedObject in interface DrawableSurfaceobj - The instance to be queued for deletion
public void queueShaderRequests(ShaderSceneGraphObject[] initList,
int numInit,
ShaderSceneGraphObject[] logList,
int numLog)
queueShaderRequests in interface DrawableSurfaceinitList - The shaders needing initialisationnumInit - The number of shaders needing initialisationlogList - The shaders needing log fetchingnumLog - The number of shaders needing log fetching
public void setClearColor(float r,
float g,
float b,
float a)
setClearColor in interface DrawableSurfacer - The red component of the background clear colourg - The green component of the background clear colourb - The blue component of the background clear coloura - The alpha component of the background clear colour
public void setDrawableObjects(RenderInstructions[] commands,
int numValid)
setDrawableObjects in interface DrawableSurfacecommands - The list of drawable surfaces to rendernumValid - The number of valid items in the arraypublic void draw()
draw in interface DrawableSurfacepublic void swap()
swap in interface DrawableSurfacepublic java.lang.Object getSurfaceObject()
getSurfaceObject in interface DrawableSurfacepublic void getSurfaceToVWorld(javax.vecmath.Matrix4f matrix)
getSurfaceToVWorld in interface DrawableSurfacematrix - The matrix instance to copy into
public void getPixelLocationInSurface(float x,
float y,
javax.vecmath.Point3f position)
getPixelLocationInSurface in interface DrawableSurfacex - The X coordinatey - The Y coordinateposition - The converted position. It must be preallocated.public void getCenterEyeInSurface(javax.vecmath.Point3f position)
getCenterEyeInSurface in interface DrawableSurfaceposition - The current eye position. It must be preallocated.public void dispose()
dispose in interface DrawableSurfacepublic void setRenderControlThread(java.lang.Thread th)
setRenderControlThread in interface DrawableSurfaceth - The render control thread instance to use or nullpublic void init(net.java.games.jogl.GLDrawable drawable)
init in interface net.java.games.jogl.GLEventListenerdrawable - The display context to render to
public void reshape(net.java.games.jogl.GLDrawable drawable,
int x,
int y,
int width,
int height)
reshape in interface net.java.games.jogl.GLEventListenerdrawable - The display context to render to
public void displayChanged(net.java.games.jogl.GLDrawable drawable,
boolean modeChanged,
boolean deviceChanged)
displayChanged in interface net.java.games.jogl.GLEventListenerdrawable - The display context to render topublic void display(net.java.games.jogl.GLDrawable drawable)
display in interface net.java.games.jogl.GLEventListenerdrawable - The display context to render topublic void resychronizeRenderTarget()
public void checkForExtension(java.lang.String glExtensionString)
glExtensionString - String to check for being valid
|
Aviatrix3D 1.0 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||