aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/com/jogamp/opengl/util
Commit message (Collapse)AuthorAgeFilesLines
* FloatUtil/PMVMatrix/GLUniformData: Move impl. of FloatBuffer matrix ↵Sven Gothel2012-10-101-53/+2
| | | | toString(..) from PMVMatrix to FloatUtil and make it more generic; GLUniformData toString() also dumps it's matrices.
* Fix regression of commit a644d779ab19cb1d200ae4ba567b9c042c34b337, cannot ↵Sven Gothel2012-10-041-6/+9
| | | | | | compile FixedFuncHook due to removed 'isDirty()' - getModifiedBits() -> getModifiedBits(boolean clear)
* ShaderState: Adding Class API doc and removing attached object w/ 'int' key, ↵Sven Gothel2012-10-041-22/+12
| | | | similar to GLContext change 6d241fc2a46413ee478985d676d2481c5a7ed119
* Update PMVMatrix/GLMatrixFunc API doc and refine PMVMatrix update / ↵Sven Gothel2012-10-041-198/+582
| | | | | | | | | | | | | | | | | | | | | | get-Mvi/Mvit-Matrix operation. (Minor API change) Using bitmask for requested Mvi and Mvit matrices, same as dirty-bits to ease matching and update operation. Update of Mvi and Mvit will be performed only if it's dirty-bit and request-bit set within update(). The individual dirty bit is cleared only if it's matrix update is performed. Update is also issued at get-Mvi/Mvit-Matrix operations to ensure proper values w/o update call w/o clearing the modified-bits. update() returns true if the Mvi or Mvit matrix got updated _or_ one of the modified bits is set. update() clears the modified-bits. Adding explicit getModifiedBits() to get and clear it's state. Adding unit test. Lots of API docs ..
* Texture: Clarifiy API doc of getTextureObject(GL)Sven Gothel2012-09-281-1/+6
|
* GLReadBufferUtil, ShaderUtil: Catch GLException (and dump if thrown), to ↵Sven Gothel2012-09-202-20/+31
| | | | increase robustness $ glReadPixels and Get NUM_SHADER_BINARY_FORMATS
* NativeWindowFactory.getNativeWindowType(..): Return canonical string ↵Sven Gothel2012-08-181-1/+1
| | | | | | representation allowing proper use of ref. comparison '==', instead of 'String.equals()' Also make NativeWindowFactory's instances of nativeWindowingTypePure and nativeWindowingTypeCustom static final.
* Robostness FBObject / GLReadBufferUtil: Ignore pre-existing GL errors - ↵Sven Gothel2012-08-171-0/+4
| | | | | | | | | | | remove GL error checking in FBObject bind/unbind. - User GL code caused errors shall not fail impl. - FBObject bind/unbind GL error checking is almost useless due to it's simple code, would only catch user GL code errors, which should be ignored here. - MultisampleDemoES2: Only enable GL_MULTISAMPLE if available, i.e. validate passed multisample flag
* Bug 599 - FBObject / Offscreen Support - Part 1Sven Gothel2012-07-1910-577/+168
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - New FBObject implementation handling FBO and it's attachments *** API CHANGE: Util -> Core *** while it's size and sample-count can be reconfigured on the fly. - com.jogamp.opengl.util.FBObject -> com.jogamp.opengl.FBObject - agnostic to texture unit - separate attachments using OO hierarchy reflecting FBO - handling MSAA and blitting - no FBO destruction for reconfig (attach/detach) - New GLFBODrawableImpl impl. an FBObject based GLDrawable - Instantiated by a dummy native surface (onscreen and invisible) hooked up to a dummy GLDrawable, which is the delegation for context creation. - Utilizies ProxySurface.UpstreamSurfaceHook for dummy surface avoiding specialization for native platforms. - TODO: Allow to utilize common surface interface as a dummy-surface to supporting API seperation of windowing/GL. The latter allows impl. of createGLDrawable(NativeSurface) with FBO. - New OffscreenAutoDrawable (extends GLAutoDrawableDelegate) for all offscreen drawables. Shall replace GLPbuffer. - New GLCapabilities*.isFBO() / setFBO(boolean) to request FBO offscreen, similar to isPBuffer(). Rule: if both are requested, FBO shall be favored. - GLContext adds raw FBO availability query (min. FBO avail), FBObject contains fine grained queries (TODO: Move parts to GLContext for efficiency). - Add framebuffer tracking, allowing fast querying: - GLBase/GLContext: public int getBoundFramebuffer(int target); public int getDefaultDrawFramebuffer(); public int getDefaultReadFramebuffer(); - GLContextImpl public final void setBoundFramebuffer(int target, int framebufferName) .. called by GL impl bind framebuffer - GL: getDefaultDrawFramebuffer(), getDefaultReadFramebuffer() Adding default framebuffer queries being issued by GL.glBindFramebuffer(target, 0) w/ a default framebuffer, o.e. zero. This allows a transparent use of a custom FBO even in case the applications attempts to reset FBO to zero. Value flow: GL <- GLContext <- GLDrawable, - GLCapabilities handle fbo/pbuffer seperate, don't disable the other - GLContext/GL track read/write framebuffer to be queried by FBObject to determine whether to bind/unbind a framebuffer - Test cases for multiple FBO w/ and w/o MSAA Other Features: - New interface ProxySurface.UpstreamSurfaceHook, allowing to hook an upstream surface of unknown type providing lifecycle and information (size, ..) callbacks. Used for all new dummy NativeSurface impl and SWT GLCanvas. - GLContext -> GLDrawable propagation context/drawable lifecycle via ProxySurface.UpstreamSurfaceHook allowing dynamic resources to react (create, init, ..) - contextRealized() - contextMadeCurrent() - SurfaceChangeable -> MutableSurface currently only contains setting the surface handle. TODO: May need to move ProxySurface.UpstreamSurfaceHook -> MutableSurface.UpstreamSurfaceHook, allowing other impl. classes (NEWT OffscreenWindow) to utilize the new upstream hookup mechanism - will allow FBO/Dummy window to work. - SWT GLCanvas using ProxySurface.UpstreamSurfaceHook for proper size propagation. - New GLAutoDrawable::getUpstreamWidget(), allowing GLEventListener to fetch the owning Java side UI element (NEWT, SWT, AWT, ..). - GLDrawableFactory: Removed createOffscreenSurface() - unused and not GL related - EGLDrawableFactory handles device/profile avail. mapping while actually creating context/drawable. This allows us to learn whether the ES context is software/hardware as well as FBO avail. - EGLDrawable: Removed secret buckets of EGL configs :) Employ native surface (X11, WGL, ..) to EGL 'mapping' in EGLDrawableFactory utilizing new EGLUpstreamSurfaceHook (implements ProxySurface.UpstreamSurfaceHook). Other Bugs: - Add CTX_OPTION_DEBUG to ctx/extension cache key since only a debug ctx may expose the ARB debug capability. This bug caused lack of ARB/AMD debug functionality. - Fix GLProfile deadlock (debug mode, w/ EGL/ES, no X11), dump availability information _after_ lock. - ImmModeSink draw(): Use GL's glDrawElements(..), don't cast for GL2ES1. Fixes use for GL2ES2. - Fix KeyEvent.getKeyChar() comment (-> only stable for keyTyped(..)) Misc: - Refined alot of API doc - New GLExtensions holds commonly used GL extension strings, allows better referencing and usage lookup. - Move GL (interface) decl. to GLBase - GLBuffers: Cleanup API doc (format, types) - TextureIO: Add PAM and PPM static suffix identifier - GLCapabilities getNumSamples() returns 0 if sampleBuffers is disabled, this seems to be more natural. - finalized a lot
* Misc cleanup: add @OverrideSven Gothel2012-06-271-1/+1
|
* TextureIO TGA/PNG: Use RGB[9] for 1-3 channel data; PNGImage(PNGJ) add 1 ↵Sven Gothel2012-06-184-35/+65
| | | | channel (Luminance) read/write
* Fix Bug 590: Wrong GL2 and GLES2 aliasing of ↵Sven Gothel2012-06-161-0/+2
| | | | | | | | | | | | | | | | GL_ARB_half_float_pixel/GL_ARB_half_float_vertex and GL_OES_texture_half_float extensions We mistakenly aliase the GL2 and GLES2 extensions: - GL_ARB_half_float_pixel - GL_HALF_FLOAT_ARB 0x140B - GL_ARB_half_float_vertex - GL_HALF_FLOAT 0x140B - GL_OES_texture_half_float extensions - GL_HALF_FLOAT_OES 0x8D61 This also leads to adding GL_HALF_FLOAT_OES to com.jogamp.opengl.util.GLBuffers.sizeof(..).
* Core/Animator: Force animator thread to be non-daemon.Sven Gothel2012-04-211-0/+5
| | | | | Even thought we didn't set the thread to be a daemon, if the [parent] thread instantiating the Animator the attribute would be passed along.
* GLMediaPlayer: Add Class / Package API doc incl. detailed info in the ↵Sven Gothel2012-04-182-0/+34
| | | | implementations.
* Adding initial Libav/FFMpeg GLMediaPlayer implementationSven Gothel2012-04-161-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Java classes already slipped through in commit 10935e1ec0d8ed677bc3fddfaa8cd73898a3bcbf - oops. Since we cannot provide a Libav binary (even though Google does in Android and Chrome) due to legal uncertainities .. we dynamically link to an existing Libav / FFmpeg library in a 'relaxed' manner. Ie. we allow certain recent functions to be absent to be able to run on a wider range of Libav versions. Currently tested on Debian Linux and Windows7 64bit/32bit Binaries for Win/OSX: - Windows http://ffmpeg.zeranoe.com/builds/ - OSX http://www.ffmpegx.com/ Features: - Dynamic relaxed linking to Libav (see above) - YUV420P texture lookup function shader stub (conversion to RGB) - 1-copy only (decoder buffer to texture) - simple - uses libavformat's network streaming - fixes some odd PTS values TODO: - Audio output (Should use OpenAL, duh) - Seek works poorly - Offthread multi-texture fetching for smoother animation - Maybe more pixelformat conversions
* TextureSequence Shader Support; GLMediaPlayer uses 'int' where possible; ↵Sven Gothel2012-04-162-19/+178
| | | | | | | | | | | | | General enhancments. For details about TextureSequence/GLMediaPlayer shader collaboration w/ your own shader source, see TextureSequence and TexCubeES2 / MovieSimple demo. TextureSequence allows implementations to provide their own texture lookup function which may provide color space conversion (YUV) .. or other runtime hw-accel features. Have a look at the next commit, which provides an Libav/FFMpeg implementation w/ YUV/RGB shader conversion. MovieCube adds keyboard control (Android: firm touch on display to launch keyboard, don't break it though :)
* ShaderCode: Adding 'replaceInShaderSource a -> b utility functionSven Gothel2012-04-161-1/+55
|
* API Change ShaderCode/ShaderUtil: Enable optional mutable shader source / ↵Sven Gothel2012-04-162-63/+214
| | | | | | | | | | | | | | | | | | | | | | generalize shader source storage type to CharSequence[] Benefits: - Allows code injection and general shader source editing (before compilation) - Uses mutable StringBuilder only if editing is intended, hence reduces memory footprint and String conversion at compilation in such case. - ShaderCode.create(..) factory methods add nw attribute 'mutableStringBuilder' if true method returns a mutable StringBuilder instance which can be edited later on at the costs of a String conversion when passing to 'glShaderSource(int, int, String[], IntBuffer)'. If <code>false</code> method returns an immutable <code>String</code> instance, which can be passed to {@link GL2ES2#glShaderSource(int, int, String[], IntBuffer)} at no additional costs. - New 'edit' methods in ShaderCode: ' - int insertShaderSource(int shaderIdx, String tag, int fromIndex, CharSequence data); - int insertShaderSource(int shaderIdx, int position, CharSequence data);
* StringBuffer -> StringBuilder (Local objects, no concurrency) ; Impacts: ↵Sven Gothel2012-04-164-6/+5
| | | | Capabilities/GLContext API 'toString(StringBuilder)'
* ShaderState: No exception in 'releaseAllAttributes()' if attribute is n/aSven Gothel2012-04-111-6/+2
|
* Refine GLMediaPlayer/TextureSequence, add MovieCube demo, fix minor bug in ↵Sven Gothel2012-04-116-92/+120
| | | | | | | | | | | | | | | | | | | | Texture - Add TextureSequence, base interface of GLMediaPlayer to genralize texture streams - TextureSequence / GLMediaPlayer: Use inner classes for event and texture data - getLastTexture() shall never return 'null', initialization of TextureSequence (initGLStream(..), etc) shall provide a TextureFrame w/ the stream's dimension. - GLMediaPlayerImpl.createTexImageImpl() y-flip defaults to 'false' impl. shall define y-flip, if required. - Added MovieCube demo - Fix Texture: initialize aspectRation for 'wrapping' ctor -
* GLArrayData: Fix 'growBuffer()' / clarify 'initialSize' -> 'initialElementCount'Sven Gothel2012-04-114-91/+104
| | | | | - growBuffer() was using '(osize+additional) * components' -> 'osize + (additional * components )' - added jogl.debug.GLArrayData - notifying growBuffer()
* Move com.jogamp.opengl.av -> com.jogamp.opengl.util.av (it's in the util ↵Sven Gothel2012-04-113-0/+305
| | | | atomic JAR and not core)
* Move ProjectFloat back to private, exposing basic math in FloatUtilSven Gothel2012-04-092-1249/+25
| | | | | | | | - Partially reverting commit de2b129a56335262a44a05541a3ab2e35668cc6e - ProjectFloat and FloatUtil must reside in core, not util - Moved slice2float -> GlueGen's Buffers
* ShaderUtil: Remove 'Impl' redirection, we already have GL OO hierarchy.Sven Gothel2012-04-091-356/+246
|
* ShaderUtil: isProgramValid() -> isProgramLinkStatusValid() + ↵Sven Gothel2012-04-092-42/+42
| | | | | | | | | | | isProgramExecStatusValid() isProgramValid() was testing whether the linkx status is valid and whether the executable environment is valid for the shader, see glValidateProgram(). glValidateProgram() may fail on some implementations in some circumstances (APX2500 and Tegra2) and indeed require all resources are set for execution of the shader program (glDraw*). This is not a requirement for issueing useProgram(), hence removed this test and made it available explicit for debugging purposes: isProgramExecStatusValid().
* TextureIO: PNGImage 1stSven Gothel2012-04-071-2/+2
|
* TextureIO: Add PNG TextureProvider and TextureWriter for RGB[A]/BGR[A] - ↵Sven Gothel2012-04-076-6/+277
| | | | incl. unit tests; Test/Demos: Use PNG snapshots.
* TextureIO/TGA: Only use current GLContext if available, allowing pre-GL ↵Sven Gothel2012-04-064-46/+54
| | | | usage; writeFile() restricted to GL2GL3, not GL2.
* PMVMatrix: Add convenient ProjectFloat calls of gluLookAt, gluProject, ↵Sven Gothel2012-04-062-52/+192
| | | | gluUnProject and gluPickMatrix
* GLArrayData*: toString(): Dump the vboOffset in decimalSven Gothel2012-04-032-2/+2
|
* Texture: Ignore enable/disable for GL_TEXTURE_EXTERNAL_OES; TextureCoords: ↵Sven Gothel2012-04-032-4/+53
| | | | Add convenience coord transfer method to buffer.
* ProjectFloat: Promote to public, exposing general matrix/vector math, custom ↵Sven Gothel2012-04-022-92/+1197
| | | | instancing using sliced nio-buffer/primitive-array
* Adapt to GlueGen IO resource changes URL -> URLConnection for effeciency; ↵Sven Gothel2012-03-173-75/+322
| | | | | | | | | | API doc enhancements; Minor edits - API doc added/enhanced: - ShaderCode - ShaderUtil - NewtBaseActivity: Clarify method / var names
* Adapt to gluegen Properties/Security commits ↵Sven Gothel2012-03-134-13/+10
| | | | f4ac27e177f6deb444280d3b375e7d343e38bd080 and eedb4b530fb83fc59a26962bcf7847a1404092a0
* ShaderState: Use a HashMap instead of a HashSet for enabled attribute ↵Sven Gothel2012-03-101-17/+19
| | | | states, reducing fluctuating memory.
* Stabilize open InputStream's / Closeable's: Decorate w/ try-finally and ↵Sven Gothel2012-03-101-30/+39
| | | | | | close within the latter See gluegen commit 24f8694a188b4a5255d4ac4f8b49982bd8ad3228
* Fix GLArrayDataServer.destroy(GL): vboName was cleared by super class before ↵Sven Gothel2012-03-051-3/+6
| | | | deletion
* TextureIO (TGA/NetPbm): Allow GL_BGR[A] and use GL_BGRA if available ; Fix ↵Sven Gothel2012-02-224-61/+76
| | | | | | | | | | | | | NetPbmTextureWriter ; Added unit tests - Allow GL_BGR[A] usage (TGA / NetPbm) - Use GL_BGRA if available (TGA), utilize GLContext.isTextureFormatBGRA8888Available() - Fix NetPbmTextureWriter - Maintain 'auto' magic mode for 'spi' role in TextureIO (was overwritten) - Use FileChannel for nio buffer streaming, instead of array copy
* Fix GLReadBufferUtil for ES platforms: RGB read format may not be supported. ↵Sven Gothel2012-02-221-13/+44
| | | | Use GL_IMPLEMENTATION_COLOR_READ_FORMAT/TYPE query
* FBObject: Meaningfull error message if TexImage2D fails.Sven Gothel2012-02-221-10/+17
|
* Minor GL/GLContext additions / cleanups (GL_BGRA, isNPOTTextureAvailable())Sven Gothel2012-02-222-4/+4
| | | | | | | | - Subsume GL_EXT_texture_format_BGRA8888 -> GL, Added GLContext.isTextureFormatBGRA8888Available() - Movied generic isNPOTTextureAvailable() from GL -> GLContext, used by GL (desktop), added simplified impl. in GLES1/GLES2 (false/true)
* Fix commit fb7165e690546359dee92dd60b04be69f141c87e; Clarify ↵Sven Gothel2012-02-201-29/+9
| | | | ShaderState.attachShaderProgram(..)
* Cleanup ShaderCode/Program/StateSven Gothel2012-02-193-32/+62
| | | | | | - Add multiple sources for create ShaderCode - Add Shaderstate attachShaderProgram w/ enable flag - Clarify doc
* OpenGL ES/EGL OverhaulSven Gothel2012-02-131-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - GLProfile properly detects native EGL/ES1/ES2 on the 'desktop' device factory. This allows usage of Mesa's EGL/ES or Imageon's PVR emulation, etc. - GLProfile drops getDefaultDesktopDevice() and getDefaultEGLDevice() since both are aligned by getDefaultDevice(). - Fix GL_ARB_ES2_compatibility detection and utilize resulting isGLES2Compatible() where possible. This allows ES2 compatible desktop profiles to use core ES2 functionality (glShaderBinary() .. etc) even with a GL2ES2 desktop implementation. - EGLDrawable: If createSurface(..) fails (BAD_NATIVE_WINDOW) w/ surfaceHandle it uses windowHandle if available and differs. This allows the ANGLE impl. to work. - Properly order of EGL/ES library lookup: ES2: libGLESv2.so.2, libGLESv2.so, GLES20, GLESv2_CM EGL: libEGL.so.1, libEGL.so, EGL - *DynamicLookupHelper reference will be null if it's library is not complete (all tool libs, all glue libs and a ProcAddressFunc lookup function - if named). - Enhance GL version string (incl. ES2 compatible, hw/sw, ..) - GLBase: Fix docs and remove redundancies - Prepared (disabled) DesktopES2DynamicLibraryBundleInfo to be used for a real EGL/ES2 implementation within the desktop GL lib (AMD). Sadly it currenly crashed within eglGetDisplay(EGL_DEFAULT_DISPLAY), hence it's disabled.
* javac - setup encoding to UTF-8Sven Gothel2012-01-231-4/+4
|
* Minor Edits: Add GL_RENDERER to JoglVersion dump; Fix typo in PMVMatrix.Sven Gothel2012-01-141-1/+1
|
* Animator*: Clarify debug outputSven Gothel2012-01-072-6/+8
|
* GLBuffer: Add NV_texture_shader HILO format and HILO16 typev2.0-rc5rc_fiveSven Gothel2011-12-191-8/+24
|
* Animator timeout/refinementSven Gothel2011-11-114-21/+22
| | | | | | | - AnimatorImpl: evaluate double negation if(!skipWaitForCompletion(Thread)) -> if(blockUntilDone(Thread)) - Simplify finishLifecycleAction() and reduce timeout