aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/com/jogamp/opengl/util
Commit message (Collapse)AuthorAgeFilesLines
* Fix ShaderProgram double destroy()Sven Gothel2011-05-171-2/+4
|
* Fix/Extend FBObject (API Change): plain init(GL), support multiple ↵Sven Gothel2011-05-171-116/+197
| | | | | | | | | | | | | attachTexture2D(..) (MRT) w/ tex units - plain initialization via init(GL) - dedicated texture2D color buffer attachement attachTexture2D(..) w/ tex units (<GL_MAX_TEXTURE_UNITS), which may happen up to max GL_MAX_COLOR_ATTACHMENTS to support MRT (multiple render targets) - more API doc - FBO/MRT/GLSL unit test w/ using 2 shader (decompose / compose)
* Fix: GLSLArrayHandler (data has no location); Fix ShaderState (switch ↵Sven Gothel2011-05-172-11/+17
| | | | program: set prev. !inUse)
* ShaderProgram: useProgram(..) -> publicSven Gothel2011-05-171-2/+2
|
* Fix ShaderState useProgram() case: on && program not linked (yet)Sven Gothel2011-05-161-3/+7
|
* JOGL/ShaderCode: Dump proper GLSL source w/ line numbers if GLSLCode debug ↵Sven Gothel2011-05-081-7/+21
| | | | prop is set
* Graph/JOGL: Avoid NPESven Gothel2011-05-081-1/+7
|
* ShaderState Switch Program: Only disable current program if no new one; ↵Sven Gothel2011-04-283-29/+36
| | | | Better toString formating
* ShaderState: Add 'ownUniform()/ownAttribute()'; rename glFunction -> ↵Sven Gothel2011-04-263-222/+308
| | | | | | | | | | | | | | function; switch program enh. ; Graph lifecycle Add 'ownUniform()/ownAttribute()' allowing to reset all bound uniforms/attributes, not just active ones plus handling the lifecycle of the owned attributes (destroy). This simplifies the lifecycle of all shader attributes. Rename glFunction -> function .. well, the GL attribute marks them GL related already Switch program enhancement. If switching to new program (unlinked), issue glBindAttributeLocation .. Graph lifecycle cleanup using the above ..
* ShaderState: 'Update' vertexAttribMap on enableSven Gothel2011-04-254-116/+145
| | | | | | | | | | | | | | | | | | ShaderProgram: - shaderCode's HashMap -> HashSet - adding HashSet for attached ShaderCode - link: allow relink, attachShader only if not yet attached - new add(gl, ShaderCode, ..) method, allowing compile/attach pre linkage - remove boxing of integer 'id', use generics style (warnings) - rename: glReplaceShader -> replaceShader, glUseProgram -> useProgram - fix: replaceShader - hashCode _is_ 'id' ShaderCode: - remove boxing of integer 'id', use generics style (warnings) - hashCode _is_ 'id' ShaderUtil: Use generics style (warnings), static names
* New FPSCounter, impl. by GLWindow and GLAnimatorControl (fps perf related ↵Sven Gothel2011-04-233-32/+45
| | | | | | | | | | | API change) - Don't fetch System.currentTimeMillis() by default and for every frame (performance) - Default behavior is FPSCounter switched off - Enable by frame interval, ie measure each 60 frames. - FPSCounterImpl is default impl. used by impl. FPSCounter class (reduce code/redundancy) - Might be promoted to GLAutoDrawable ?!
* Refactored graph: Reduce/remove data copy/recreation; Shader cleanupSven Gothel2011-04-231-10/+0
| | | | | | | | | | | | - Pass the current GL context object where it's required - Introduce RenderState (which has ShaderState) to acquire/change shader related data (Region) - Shader Cleanup: User import for common stuff; use req. version - Reduce/remove data copy/recreation in *Region implementation - UI/RIButton: Use defaults I like :)
* ShaderState: Validated impl./state-handling / Added commentsSven Gothel2011-04-221-221/+453
| | | | | | Capable of glBinAttribLocation(..) Proper state check (has program, linked program, ..) for attrib/uniform methods.
* FBObject: Add validation / API cleanupSven Gothel2011-04-221-42/+67
| | | | | | | | | Added validation of FB/render buffer creation using glGetError(), due to users trouble of determine the root cause of erroneous application behavior. This change shall help tackling bug: 492 and 495 https://jogamp.org/bugzilla/show_bug.cgi?id=492 https://jogamp.org/bugzilla/show_bug.cgi?id=495
* GLArrayData API and impl. changesSven Gothel2011-04-226-264/+292
| | | | | | | | | | | | | | | | | | | | | | +++ Remove GL parameter for - createFixed(..) - createGLSL(..) validation at client/server array data happens at 1st enableBuffer() call, no current context or profile required at creation time. Added ShaderState for createGLSL(..) clarifying dependency to the ShaderState, passing it down to the GLSLArrayHandler, which also removes the TLS GLContext.getCurrent() call. +++ Partially reverted ab48dac3f4419ceac51fdf059f310f0f0499c4d7 factory methods: removed added vboTarget parameter, since all createFixed and createGLSL are GL_ARRAY_BUFFER (VBO). Adding createData(..) factory method in GLArrayDataServer allowing diff vbo targets, ie GL_ELEMENT_ARRAY_BUFFER .. or none.
* reflect GLContext changes a5430cf16727fdc7bcfb17ef251018cc479d5f5dSven Gothel2011-04-221-7/+3
|
* Fix/Add: Locator (Handle JarURLConnection and ..)Sven Gothel2011-04-222-28/+76
| | | | | | | | | new: 'public static String getRelativeOf(URL baseLocation, String relativeFile)', capable of handling a JAR file/url. Using File based relative locator, allowing better utilization in code: old public static String getRelativeOf(String absoluteFileLocation, String relativeFile) new public static String getRelativeOf(File baseLocation, String relativeFile)
* Texture: Change method signatures: Pass GL context object if required ↵Sven Gothel2011-04-223-144/+121
| | | | | | | | | | | | | | (remove GLContext.getCurrentGL() usage. Using function signatures explicitly require the GL [current] instance clarifies that the context must be current. Removing GLContext.getCurrentGL() reduces TLS access of current thread and hence possible performance hits. The Texture class has been chosen for this conversion [not TextureIO yet], since the enable/bind methods maybe used within a rendering loop. User already 'complained' about lack of current GLContext clarity as well.
* Fix TAB: Replace all TAB with 4 spacesSven Gothel2011-04-088-92/+92
|
* Fix FBObject: Remove double stencil RB generation; Expose data (size, ..)Sven Gothel2011-04-081-13/+13
|
* FIX: Refactor GLArrayData and all it's implementations/sub-interfaces (VBO ↵Sven Gothel2011-04-088-154/+372
| | | | | | | | | | target, comments, names) VBO target: Allowing ELEMENT_VERTEX_ARRAY w/o corresponding GLSL/Fixed attribute Names: Clarified method named. Comments: Added and fixed comments
* ShaderProgram: Add 'init(GL2ES2)', allowing GL program object creation ↵Sven Gothel2011-04-051-0/+21
| | | | | | before link stage. This is required to allow proper usage of 'glBindAttribLocation()'.
* Make FBObject more generic, split FBO/tex and depth/stencil attachements. ↵Sven Gothel2011-04-051-67/+174
| | | | Allow parametrization of each component.
* ShaderCode: Remove redundant code (Use proper Locator variant)Sven Gothel2011-03-302-16/+5
|
* FPSAnimator: Poor attempt to wait for threads EOL after pause/stopSven Gothel2011-03-271-0/+6
|
* FPSAnimator: Avoid NPESven Gothel2011-03-251-6/+15
|
* Animator: Cleanup and better DEBUG infoSven Gothel2011-02-282-6/+9
|
* Remove CDCSven Gothel2011-02-096-2562/+0
|
* Move implementation private files from com.jogamp.<module>.impl. to ↵Sven Gothel2011-02-0913-13/+13
| | | | | | | | | | | | | | | jogamp.<module> (2/2) - edit files - com.jogamp.opengl.impl -> jogamp.opengl - com.jogamp.opengl.util.glsl.fixedfunc.impl -> jogamp.opengl.util.glsl.fixedfunc - com.jogamp.nativewindow.impl -> jogamp.nativewindow - com.jogamp.newt.impl -> jogamp.newt This sorts implementation details from the top level, ie skipping the public 'com', allowing a better seperation of public classes and implementation details and also reduces strings. This approach of public/private seperation is also used in the OpenJDK.
* Move implementation private files from com.jogamp.<module>.impl. to ↵Sven Gothel2011-02-0820-1207/+0
| | | | | | | | | | | | | | | jogamp.<module> (1/2) - rename task - com.jogamp.opengl.impl -> jogamp.opengl - com.jogamp.opengl.util.glsl.fixedfunc.impl -> jogamp.opengl.util.glsl.fixedfunc - com.jogamp.nativewindow.impl -> jogamp.nativewindow - com.jogamp.newt.impl -> jogamp.newt This sorts implementation details from the top level, ie skipping the public 'com', allowing a better seperation of public classes and implementation details and also reduces strings. This approach of public/private seperation is also used in the OpenJDK.
* Bugfix (Bug 464 - TextRenderer useVertexArray was ignored)Domokun2011-02-011-5/+5
|
* TextRenderer: Fix imports / Add jogamp licenseSven Gothel2011-02-012-5/+2
|
* Fixes the problem of high memory consumption in TextRenderer (single merged ↵Julien Gouesse2011-02-011-6/+39
| | | | w/o whitespace)
* JOGL AnimatorImpl: issue drawable.display() even if it's not realized yet, ↵Sven Gothel2010-11-292-9/+3
| | | | since the drawable may realize itself with the display() call. This situation appears with an AWT GLCanvas
* Animator: Run as non daemon like FPSAnimator. This seems to be the users ↵Sven Gothel2010-11-281-1/+6
| | | | desired behavior and is more compliant with other APIs
* Relax GLAnimatorControl, ie remove fail fast for start()/stop(), return ↵Sven Gothel2010-11-252-8/+13
| | | | (boolean)success instead.
* AnimatorBase: add()/remove() - decorate change of drawables with ↵Sven Gothel2010-11-231-30/+15
| | | | pause()/resume() so it becomes a non critical to multithreading, hence display() or state change needs to be synced
* GLAnimatorControl pause()/resume() don't fail fast, return a boolean instead ↵Sven Gothel2010-11-222-9/+13
| | | | to simplify usage.
* JOGL/NEWT: Animator fixesSven Gothel2010-11-215-202/+291
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider use cases with many drawables and no drawables at start, this had to be reflected all over this patch set, implementation, usage and test cases. - GLAnimatorControl - refine API doc / states - add 'void remove(GLAutoDrawable drawable);' - Animator*: - using RecursiveLock 'stateSync' for all actions out of the big synchronized (animator) block: - get status methods (thread, isPaused, ..), hence no more synchronized - display drawables change, utilizing synced ArrayList swap This removes the need for volatiles usage shouldPause/shouldStop within the display method. - added blocking wait for state change for add(GLAutoDrawable)/remove(GLAutoDrawable) method - remove flawed double checked locking in anim thread (pause/idle condition) - thread is now a daemon thread, hence it won't hinder the JVM from shutdown - - Animator use change: - Always resume after pause, except in case of final destroy -> NEWT invalidate / GLCanvas, this considers use cases with many drawables and no drawables at start. - GLDrawableHelper: Don't pause at implicit dispose()
* Adapt to GlueGen Version changes; Adding NativeWindowVersion, JoglVersion ↵Sven Gothel2010-11-121-85/+0
| | | | | | | | | and NewtVersion. Adapt to GlueGen Version changes: b735755815312b5fe2c003642de60711be1cd645 .. 556c7e70d3d57aa99b5787b1e4d8a7b1c299ed3f Show information of all subcomponenet.
* Use GlueGen VersionUtil to dump full Manifest versionSven Gothel2010-11-101-61/+9
|
* Adding simple static main test entry to provide standalone autobuild ↵Sven Gothel2010-11-091-0/+2
| | | | verification
* Added missing JogAmp copyrightSven Gothel2010-11-063-3/+82
|
* Added fast path to equals impl.Sven Gothel2010-11-061-3/+32
|
* Animator Fix/CleanupSven Gothel2010-10-284-45/+76
| | | | | | | | | | | | | | | | | | | | | | - Fix AnimatorBase: Finally using 'com.jogamp.opengl.util.AWTAnimatorImpl', wrong FQN lead to never use it, hence deadlock in case of AWT usage (AWT-EDT). - Animator - remove volatile for synced state isAnimated - new state isPaused, since shouldPause give the wrong answer for isPaused() - Cleanup wait condition for lifecycle tasks (start/stop/pause/resume) - 'AnimatorImpl' -> 'DefaultAnimatorImpl implements AnimatorBase.AnimatorImpl' - 'AWTAnimatorImpl implements AnimatorBase.AnimatorImpl', hence no derivation of a complete overwritten AnimatorImpl needed. - GLWindow.destroyActionPreLock() - Stop animator if unrecoverable, else pause only. Tests: - No explicit animator stop, hence tests implicit stop/pause by GLDrawableHelper and/or GLWindow.
* GLAnimatorControl/Animator: Allow stop() if paused()Sven Gothel2010-10-271-9/+5
|
* JOGL: Reenable Applet/Webstart/RCP support for JOGL + AWT + X11Sven Gothel2010-10-141-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changed GLProfile/NativeWindowFactory/.. initialization methodology: GLProfile: public static synchronized void initSingleton(final boolean firstUIActionOnProcess); NativeWindowFactory: public static synchronized void initSingleton(final boolean firstUIActionOnProcess); +++ Introducing NativeWindow ToolkitLock, implementations are NullToolkitLock JAWTToolkitLock X11JAWTToolkitLock X11ToolkitLock AbstractGraphicsDevice provides generic global toolkit locking methods, implemented by the ToolkitLock interface. ToolkitLock's are aggregated in NativeWindow's DefaultGraphicsDevice to implement it's superclass lock()/unlock() methods. This enables a device specific locking strategy, ie on X11/AWT utilizing JAWT && X11 locking, and maybe none for others (NEWT). No locking is required for X11 / AWT, in case the above mentioned initialization happened as a 'firstUIActionOnProcess'. The ToolkitLock factory is currently a hardcoded part of NativeWindowFactory. We may have to allow 3rd party NativeWindow implementations to register custom ones. +++ com.jogamp.opengl.impl.GLDrawableImpl cleanup: Dealing with all locking code, providing all public methods. Exceptions are commented. Specializations x11/windows/.. only contains platform code. Pulled down access qualifiers if possible public -> protected. com.jogamp.nativewindow.impl.x11.X11Util Wrapping all X11Lib method with the new locking code. com.jogamp.nativewindow.impl.jawt.JAWTUtil Utilize global SunToolkit.awtLock() is available, the fallback to global JAWT.lock(). The latter just invokes the first. javax.media.nativewindow.awt.AWTGraphicsDevice setHandle(long handle) -> setSubType(String type, long handle) which also resets the ToolkitLock respecting the new type. This ensures correct locking after the sub type has been determined, ie AWT using an X11 peer. +++ Misc Changes done on the way .. GLCanvas: Fixed inversed this.drawableHelper.isExternalAnimatorAnimating() condition, which disabled normal repaint. GLJPanel: Removed drawableHelper.isExternalAnimatorAnimating() condition, which disabled painting, since the animation thread just updates the source image. NEWT WindowImpl: When reparenting back to parent and 'refit' child if it's size exceeds it's parent. More 'Fix: Memory consumption' commit 6ced17f0325d5719e992b246ffd156e5b39694b4. NEWTEvent: Removed code to evaluate the 'system event' attribute, need to find a better approach.
* Add version info tool, to allow more precise bug reportsSven Gothel2010-10-141-0/+135
|
* Fix: Memory consumptionSven Gothel2010-10-143-40/+67
| | | | | | | | | | | | | | | | Observing memory consumption showed: 1 - 'traceLock' debug stack traces (GLContextLock) 2 - massive Iterator usage (1) is fixed, ie only enabled in DEBUG mode, like we have done in RecursiveLock before (2) Using an Iterator on ArrayLists with a low element count < 100, as it is usual in our use cases, is observed not to be faster than accessing the elements via an index (-> TestIteratorIndexCORE.java ). On the contrary, the index implementation was a bit faster. Further more, these Iterators were massively used on the fly during animation, hence their memory managment even impacts fluent processing/animation. Recoded all animation related (display, surfaceUpdated, ..) loops using an index.
* Harmonize all runtime properties, see doc/Implementation/runtime-properties.txtSven Gothel2010-10-111-1/+3
|