com.jogamp.opengl.impl
Class GLDrawableImpl

java.lang.Object
  extended by com.jogamp.opengl.impl.GLDrawableImpl
All Implemented Interfaces:
GLDrawable
Direct Known Subclasses:
EGLDrawable, MacOSXCGLDrawable, WindowsWGLDrawable, X11GLXDrawable

public abstract class GLDrawableImpl
extends Object
implements GLDrawable


Field Summary
protected static boolean DEBUG
           
protected  GLDrawableFactory factory
           
protected  boolean realized
           
protected  GLCapabilitiesImmutable requestedCapabilities
           
protected  NativeSurface surface
           
 
Constructor Summary
protected GLDrawableImpl(GLDrawableFactory factory, NativeSurface comp, boolean realized)
           
 
Method Summary
 void destroy()
          For offscreen GLDrawables (pbuffers and "pixmap" drawables), indicates that native resources should be reclaimed.
protected  void destroyHandle()
           
protected  void destroyImpl()
           
 GLCapabilitiesImmutable getChosenGLCapabilities()
          Fetches the GLCapabilitiesImmutable corresponding to the chosen OpenGL capabilities (pixel format / visual / GLProfile) for this drawable.
On some platforms, the pixel format is not directly associated with the drawable; a best attempt is made to return a reasonable value in this case.
 GLDrawableFactory getFactory()
           
 GLDrawableFactoryImpl getFactoryImpl()
           
abstract  GLDynamicLookupHelper getGLDynamicLookupHelper()
          Returns the DynamicLookupHelper
 GLProfile getGLProfile()
          Fetches the GLProfile for this drawable.
 long getHandle()
          This is the GL/Windowing drawable handle.
It is usually the NativeSurface.getSurfaceHandle(), ie the native surface handle of the underlying windowing toolkit.
However, on X11/GLX this reflects a GLXDrawable, which represents a GLXWindow, GLXPixmap, or GLXPbuffer.
On EGL, this represents the EGLSurface.
 int getHeight()
          Returns the current height of this GLDrawable.
 NativeSurface getNativeSurface()
           
 GLCapabilitiesImmutable getRequestedGLCapabilities()
           
 int getWidth()
          Returns the current width of this GLDrawable.
 boolean isRealized()
           
 boolean isSurfaceLocked()
           
 int lockSurface()
           
 void setRealized(boolean realizedArg)
          Indicates to on-screen GLDrawable implementations whether the underlying window has been created and can be drawn into.
protected abstract  void setRealizedImpl()
           
 void swapBuffers()
          Swaps the front and back buffers of this drawable.
protected abstract  void swapBuffersImpl()
           
static String toHexString(long hex)
           
 String toString()
           
 void unlockSurface()
           
protected  void updateHandle()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface javax.media.opengl.GLDrawable
createContext
 

Field Detail

DEBUG

protected static final boolean DEBUG

factory

protected GLDrawableFactory factory

surface

protected NativeSurface surface

requestedCapabilities

protected GLCapabilitiesImmutable requestedCapabilities

realized

protected boolean realized
Constructor Detail

GLDrawableImpl

protected GLDrawableImpl(GLDrawableFactory factory,
                         NativeSurface comp,
                         boolean realized)
Method Detail

getGLDynamicLookupHelper

public abstract GLDynamicLookupHelper getGLDynamicLookupHelper()
Returns the DynamicLookupHelper


getFactoryImpl

public GLDrawableFactoryImpl getFactoryImpl()

destroy

public void destroy()
For offscreen GLDrawables (pbuffers and "pixmap" drawables), indicates that native resources should be reclaimed.


destroyImpl

protected void destroyImpl()

swapBuffers

public final void swapBuffers()
                       throws GLException
Description copied from interface: GLDrawable
Swaps the front and back buffers of this drawable. For GLAutoDrawable implementations, when automatic buffer swapping is enabled (as is the default), this method is called automatically and should not be called by the end user.

Specified by:
swapBuffers in interface GLDrawable
Throws:
GLException

swapBuffersImpl

protected abstract void swapBuffersImpl()

toHexString

public static String toHexString(long hex)

getGLProfile

public GLProfile getGLProfile()
Description copied from interface: GLDrawable
Fetches the GLProfile for this drawable. Returns the GLProfile object, no copy.

Specified by:
getGLProfile in interface GLDrawable

getChosenGLCapabilities

public GLCapabilitiesImmutable getChosenGLCapabilities()
Description copied from interface: GLDrawable
Fetches the GLCapabilitiesImmutable corresponding to the chosen OpenGL capabilities (pixel format / visual / GLProfile) for this drawable.
On some platforms, the pixel format is not directly associated with the drawable; a best attempt is made to return a reasonable value in this case.
This object shall be directly associated to the attached NativeSurface's AbstractGraphicsConfiguration, and if changes are necessary, they should reflect those as well.

Specified by:
getChosenGLCapabilities in interface GLDrawable
Returns:
A copy of the queried object.

getRequestedGLCapabilities

public GLCapabilitiesImmutable getRequestedGLCapabilities()

getNativeSurface

public NativeSurface getNativeSurface()
Specified by:
getNativeSurface in interface GLDrawable

destroyHandle

protected void destroyHandle()

updateHandle

protected void updateHandle()

getHandle

public long getHandle()
Description copied from interface: GLDrawable
This is the GL/Windowing drawable handle.
It is usually the NativeSurface.getSurfaceHandle(), ie the native surface handle of the underlying windowing toolkit.
However, on X11/GLX this reflects a GLXDrawable, which represents a GLXWindow, GLXPixmap, or GLXPbuffer.
On EGL, this represents the EGLSurface.

Specified by:
getHandle in interface GLDrawable

getFactory

public GLDrawableFactory getFactory()
Specified by:
getFactory in interface GLDrawable

setRealized

public final void setRealized(boolean realizedArg)
Description copied from interface: GLDrawable
Indicates to on-screen GLDrawable implementations whether the underlying window has been created and can be drawn into. End users do not need to call this method; it is not necessary to call setRealized on a GLCanvas, a GLJPanel, or a GLPbuffer, as these perform the appropriate calls on their underlying GLDrawables internally.

Developers implementing new OpenGL components for various window toolkits need to call this method against GLDrawables obtained from the GLDrawableFactory via the GLDrawableFactory.getGLDrawable() method. It must typically be called with an argument of true when the component associated with the GLDrawable is realized and with an argument of false just before the component is unrealized. For the AWT, this means calling setRealized(true) in the addNotify method and with an argument of false in the removeNotify method.

GLDrawable implementations should handle multiple cycles of setRealized(true) / setRealized(false) calls. Most, if not all, Java window toolkits have a persistent object associated with a given component, regardless of whether that component is currently realized. The GLDrawable object associated with a particular component is intended to be similarly persistent. A GLDrawable is intended to be created for a given component when it is constructed and live as long as that component. setRealized allows the GLDrawable to re-initialize and destroy any associated resources as the component becomes realized and unrealized, respectively.

With an argument of true, the minimum implementation shall call NativeSurface's lockSurface() and if successfull:


This is important since NativeSurface's lockSurface() ensures resolving the window/surface handles, and the drawable's GLCapabilities might have changed.

Calling this method has no other effects. For example, if removeNotify is called on a Canvas implementation for which a GLDrawable has been created, it is also necessary to destroy all OpenGL contexts associated with that GLDrawable. This is not done automatically by the implementation.

Specified by:
setRealized in interface GLDrawable

setRealizedImpl

protected abstract void setRealizedImpl()

isRealized

public boolean isRealized()
Specified by:
isRealized in interface GLDrawable
Returns:
true if this drawable is realized, otherwise false

getWidth

public int getWidth()
Description copied from interface: GLDrawable
Returns the current width of this GLDrawable.

Specified by:
getWidth in interface GLDrawable

getHeight

public int getHeight()
Description copied from interface: GLDrawable
Returns the current height of this GLDrawable.

Specified by:
getHeight in interface GLDrawable

lockSurface

public int lockSurface()
                throws GLException
Throws:
GLException

unlockSurface

public void unlockSurface()

isSurfaceLocked

public boolean isSurfaceLocked()

toString

public String toString()
Specified by:
toString in interface GLDrawable
Overrides:
toString in class Object


Copyright 2010 JogAmp Community.