Robert Osfield | 19 Dec 17:41 2014
Picon

OpenSceneGraph-3.3.3 developer release

Hi All,

I have just tagged the 3.3.3 developer release.  A quick copy and paste of what I've just written up on the website:

OpenSceneGraph-3.3.3, released on 19th December 2014, key deliverables in this dev release are:

  • New osgTerrain::DisplacementMappingTechnique that uses sharing of geometry tiles and height field textures to render the terrain, reducing main memory and GPU memory usage to less than 40% of previous usage, and reduces GPU costs to around 60% of previous requirements for a terrain.
  • New LAS plugin (depends upon libLAS and Boost)
  • New GStreamer plugin for cross platform video
  • New OpenGL extension set-up architecture that reduces both the code footprint, library size and runtime memory footprint, as well as make it easier to extend.
  • Support for glVertexAttribDivisor via new osg::VertexAttribDivisor StateAttribute
  • Support for glBlendEquationi, glBendFunci, glColorMaski and glEnable/glDisablei iva new BlendEquationi, BlendFunci, ColorMaski, and Enablei/Disablei StateAttributes to better support Multiple Render Target usage.
  • New osg::ShaderStorageBufferObject class and osgssbo example.
  • New osggpucull example that demonstrates culling on the GPU.
  • Threading safety and performance improvements to the DatabasePager
  • Refactor of osg::Drawable so that it is no subclassed from osg::Node allow it to be directly placed in the scene graph without the need for a Geode parent.
  • Standardization of callbacks in Node, Drawable, StateSet and StateAttributes
  • Improved Android toolchain build
  • Improvements to QT4 and QT5 support in osgQt
  • Improvements to the new osgUI NodeKit  and Lua Scripting support
  • Bug and build fixes

source package : OpenSceneGraph-3.3.3.zip

svn tag: svn co http://svn.openscenegraph.org/osg/OpenSceneGraph/tags/OpenSceneGraph-3.3.3 OpenSceneGraph


Many thanks to all that have contributed with code, testing and bug fixing over the past year. 

Robert.


-- ChangeLog since 3.3.2:

2014-12-19 08:27  robert

    * CMakeModules/FindGLIB.cmake: Added if () block to avoid script
      variables set to NOT-Found being used in searching

2014-12-19 08:25  robert

    * CMakeModules/FindLIBLAS.cmake: Fixed script warnings

2014-12-18 17:47  robert

    * CMakeLists.txt, CMakeModules/FindLIBLAS.cmake,
      src/osgPlugins/CMakeLists.txt, src/osgPlugins/las,
      src/osgPlugins/las/CMakeLists.txt,
      src/osgPlugins/las/ReaderWriterLAS.cpp: From Aitor Moreno, LAS
      plugin - depends upon boost and liblas and liblas-c

2014-12-18 16:52  robert

    * PlatformSpecifics/Android/Application.mk.master.in: From Adrian
      Clark, build fix for recent Android NDK using the old Android
      build approach.

2014-12-18 15:59  robert

    * CMakeLists.txt: From Mattias Helsing, "CMake have release 3.0 and
      3.1 and we have some bad checks for cmake
      major version when settings cmake policies in CMakeLists.txt.
      This fixes it"

2014-12-18 11:36  robert

    * AUTHORS.txt, applications/osgversion/Contributors.cpp: Updated
      AUTHORS

2014-12-18 11:19  robert

    * ChangeLog: Updated ChangeLog in prep for dev release

2014-12-18 11:09  robert

    * examples/osgmovie/CMakeLists.txt: Fixed warning

2014-12-18 10:59  robert

    * include/osg/DisplaySettings, src/osg/DisplaySettings.cpp: Added
      DisplaySettings::s/getNvOptimusEnablement() and
      OSG_NvOptimusEnablement env var control to control the setting of
      the NvOptimusEnablement variable

2014-12-18 09:24  robert

    * src/osgPlugins/fbx/ReaderWriterFBX.cpp: From Sukender, "Added
      options to the FBX writer: an ascii/binary switch, and the
      ability to select FBX version as the SDK handles it (Ex:
      "FBX201300").
     
      This allows the user to achieve backward compatibility, and debug
      format issues using text output."

2014-12-18 09:03  robert

    * CMakeModules/FindGStreamer.cmake: From Mattias Helsing, "The
      addition of the GStreamer cmake find script broke my build
      because
      cmake vars weren't passed correctly to find_package_handler_args,
      so
      while the find script didn't find a single required GStreamer lib
      or
      include path it still reported GSTREAMER_FOUND=TRUE (and then
      tried to
      compile the new plugin). This fixes it and correctly reports
      missing
      components."

2014-12-17 19:21  robert

    * CMakeLists.txt, CMakeModules/FindSDL2.cmake,
      examples/osgmovie/CMakeLists.txt, examples/osgmovie/osgmovie.cpp:
      Added support for using SDL2 to the osgmovie to enable it to
      handle floating point audio formats

2014-12-17 19:20  robert

    * CMakeModules/FindFFmpeg.cmake,
      src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp: From Javier Taibo,
      " I have found that since version 1.1, FFMPEG changed the way
      audio streams are retrieved, from packed to planar format. SDL
      interprets packed audio, as is used in the osgmovie example. To
      make the audio work when the OSGffmpeg plug-in is compiled
      against recent FFMPEG versions, FFmpegDecoderAudio must check for
      planar formats and in these cases request the samples as packed.
      This way all works as before. It can be checked with osgmovie
      example application.
     
      $ osgmovie --audio movie.avi.ffmpeg
      FFmpegImageStream::open audio failed, audio stream will be
      disabled: unknown audio format
     
      With the attached FFmpegDecoderAudio.cpp, audio sounds correctly.
     
      I am also attaching a modified version of FindFFmpeg.cmake that
      allows to set as FFMPEG_DIR the ffmpeg compiled in the source
      directory structure. It should not break anything as it only adds
      some additional search paths.
     
      "
     
      Note from Robert Osfield, I have found in testing that audio
      quality is not good for planar floating point formats, even with
      adding support for SDL2 to the osgmovie example. I haven't yet
      tracked down the cause of these audio problems or a solution.

2014-12-17 10:19  robert

    * src/osgPlugins/fbx/ReaderWriterFBX.cpp: From Sukender, "FBX
      writer was writing an empty file when the scene had a root node
      being a Geode.
      This was caused be the change in Drawable (now derived from Node)
      and Geode (now derived from Group).
      This fix simply sticks with previous behaviour. Another change
      could be to adapt WriterNodeVisitor.
      "

2014-12-16 17:37  robert

    * src/osgPlugins/gstreamer/GStreamerImageStream.cpp: Fixed warnings
      and memmory leaks

2014-12-16 17:15  robert

    * src/osgPlugins/gstreamer/CMakeLists.txt,
      src/osgPlugins/gstreamer/GStreamerImageStream.cpp: Fixed warnings

2014-12-16 17:08  robert

    * src/osgPlugins/gstreamer/GStreamerImageStream.cpp,
      src/osgPlugins/gstreamer/GStreamerImageStream.hpp: Improved
      handling of invalid/unhandled files
      Added support for ImageStream::LoopigMode variable
      Fixed memory leak associtied with restarting videos
      Changed Image::setData() to Image::dirty() to avoid resetting
      data

2014-12-16 11:20  robert

    * CMakeLists.txt, CMakeModules/FindGLIB.cmake,
      CMakeModules/FindGStreamer.cmake, src/osgPlugins/CMakeLists.txt,
      src/osgPlugins/gstreamer,
      src/osgPlugins/gstreamer/CMakeLists.txt,
      src/osgPlugins/gstreamer/GStreamerImageStream.cpp,
      src/osgPlugins/gstreamer/GStreamerImageStream.hpp,
      src/osgPlugins/gstreamer/ReaderWriterGStreamer.cpp: From Julen
      Garcia, "Here there is a small plugin I use to play video files.
      It is based on GStreamer http://gstreamer.freedesktop.org and I
      have used the FFmpeg plugin as inspiration."
     
      From Robert Osfield, fixed handled of row widths so that they are
      padded to a 4 byte boundary as certain row widths were being
      rendered incorrectly.

2014-12-16 09:34  robert

    * include/osg/TriangleLinePointIndexFunctor,
      include/osgUtil/MeshOptimizers, src/osgUtil/MeshOptimizers.cpp:
      From Marc Helbling, "please find enclosed a submission that
      should improve the VertexAccessOrderVisitor (pre-transform)
      optimizer:
      * it sorts primitives to keep "more complex" primitives first;
      maybe you'll prefer to have this as an option (but usually it
      should make more sense to pre-transform triangles before e.g.
      lines)
      * currently, the visitor rely on TriangleIndexFunctor and does
      not take care of points and lines (see
      https://github.com/openscenegraph/osg/blob/master/include/osg/TriangleIndexFunctor#L124-130).
      This can lead to issues e.g. if you store the wireframe lines
      along with some triangles: the triangles will be reindexed but
      not the line. I've therefore added
      osg/include/TriangleLinePointIndexFunctor to index triangles,
      lines and points and derived VertexReorder from this class.
      * to avoid issues, shared arrays are duplicated. However, in some
      cases (e.g. an UV channel shared in the geometry only) this is
      not required. I'm adding a SharedArrayOptimizer to optimize this:
      it looks for duplicated UVs before the array duplication and
      deduplicate arrays after.
      "

2014-12-15 17:15  robert

    * include/osgUtil/TriStripVisitor, src/osgUtil/TriStripVisitor.cpp:
      From Marc Helbling, "please find the mergeTriangleStrip code
      merged in osgUtil::TriStripVisitor.
      I've removed the references to DrawArrays as we should no longer
      produce any.
     
      Note that:
      * as the name suggest, it only works for triangle strips but
      could probably be easily extended to quads
      * the resulting primitive is not highly optimized; we could
      probably sort the strips in order to minimize the number of
      primitive restart
      * as we may merge DrawElementsUInt and DrawElementUShort, the
      code will only generate DrawElementsUInt"

2014-12-10 18:23  robert

    * examples/osgSSBO/osgSSBO.cpp: Build fix

2014-12-10 13:05  robert

    * include/osg/GLExtensions, src/osg/GLExtensions.cpp: Added OpenGL
      Transform Feedback extensions.

2014-12-10 12:23  robert

    * examples/CMakeLists.txt, examples/osgSSBO,
      examples/osgSSBO/CMakeLists.txt, examples/osgSSBO/osgSSBO.cpp,
      include/osg/BufferIndexBinding, include/osg/BufferObject,
      include/osg/StateAttribute, src/osg/BufferIndexBinding.cpp,
      src/osg/BufferObject.cpp: From Marcus Hein, Added support for
      OpenGL SSBO and SSBB via osg::ShaderStorageBufferObject and
      osg::ShaderStorageBufferBinding to core OSG library, and added
      new osgSSBO example

2014-12-10 11:44  robert

    * include/osg/GLDefines: Added GLDefines header

2014-12-10 11:29  robert

    * src/osgPlugins/dae/daeRMaterials.cpp: From Farshid Lashkari, "The
      Collada loader would crash while processing textures on certain
      files. I've attached the fix."

2014-12-10 10:44  robert

    * examples/osgshaderterrain/osgshaderterrain.cpp,
      include/osg/GL2Extensions, src/osg/CMakeLists.txt,
      src/osg/GL2Extensions.cpp, src/osgAnimation/RigGeometry.cpp,
      src/osgDB/ObjectWrapper.cpp: Removed old GL2Extensions class,
      replacing it with a typedef to GL2Extensions
      Removed old includes to include/osg/GL2Extensions

2014-12-10 10:38  robert

    * examples/osgfpdepth/osgfpdepth.cpp,
      examples/osgmultitexture/osgmultitexture.cpp,
      examples/osgoit/DepthPeeling.cpp,
      examples/osgscreencapture/osgscreencapture.cpp,
      examples/osgvertexprogram/osgvertexprogram.cpp,
      include/osg/BufferObject, include/osg/FrameBufferObject,
      include/osg/GL2Extensions, include/osg/GLExtensions,
      include/osg/PatchParameter, include/osg/PrimitiveSet,
      include/osg/Program, include/osg/Shader, include/osg/State,
      include/osg/Texture, include/osg/TextureBuffer,
      include/osg/Uniform, include/osgViewer/Renderer,
      src/osg/ArrayDispatchers.cpp, src/osg/BlendColor.cpp,
      src/osg/BlendEquation.cpp, src/osg/BlendEquationi.cpp,
      src/osg/BlendFunc.cpp, src/osg/BlendFunci.cpp,
      src/osg/BufferObject.cpp, src/osg/CMakeLists.txt,
      src/osg/Capability.cpp, src/osg/ClampColor.cpp,
      src/osg/ColorMaski.cpp, src/osg/FragmentProgram.cpp,
      src/osg/FrameBufferObject.cpp, src/osg/GLExtensions.cpp,
      src/osg/Geometry.cpp, src/osg/GraphicsContext.cpp,
      src/osg/Image.cpp, src/osg/Multisample.cpp,
      src/osg/OcclusionQueryNode.cpp, src/osg/PatchParameter.cpp,
      src/osg/Point.cpp, src/osg/PointSprite.cpp,
      src/osg/PrimitiveRestartIndex.cpp, src/osg/Program.cpp,
      src/osg/SampleMaski.cpp, src/osg/Shader.cpp, src/osg/State.cpp,
      src/osg/Stencil.cpp, src/osg/StencilTwoSided.cpp,
      src/osg/Texture.cpp, src/osg/Texture1D.cpp,
      src/osg/Texture2DArray.cpp, src/osg/Texture2DMultisample.cpp,
      src/osg/Texture3D.cpp, src/osg/TextureBuffer.cpp,
      src/osg/TextureCubeMap.cpp, src/osg/TextureRectangle.cpp,
      src/osg/Uniform.cpp, src/osg/VertexAttribDivisor.cpp,
      src/osg/VertexProgram.cpp, src/osgFX/SpecularHighlights.cpp,
      src/osgParticle/PrecipitationEffect.cpp, src/osgText/Glyph.cpp,
      src/osgUtil/GLObjectsVisitor.cpp, src/osgUtil/RenderStage.cpp,
      src/osgViewer/Renderer.cpp,
      src/osgViewer/ScreenCaptureHandler.cpp,
      src/osgViewer/StatsHandler.cpp: Moved GL2Extensions functionality
      into the include/osg/GLExtensions header and new GLExtensions
      object.
      Moved the #defines into new include/osg/GLDefines
      Converted all GL2Extensions usage to GLExtensions usage

2014-12-10 09:11  robert

    * include/osg/GLExtensions: Streamlined the extension functions

2014-12-09 21:33  robert

    * include/osg/GL2Extensions: Added #ifdef's around GLsync typedef

2014-12-09 20:09  robert

    * include/osg/GL2Extensions, include/osg/GraphicsContext,
      include/osg/Texture, include/osg/Texture3D, src/osg/Texture.cpp:
      Windows build fixes

2014-12-09 19:31  robert

    * runexamples.bat: Added new examples to runexamples.bat script

2014-12-09 19:22  robert

    * src/osg/Capability.cpp: Quietened down debug messages

2014-12-09 19:20  robert

    * examples/CMakeLists.txt, examples/osgblenddrawbuffers,
      examples/osgblenddrawbuffers/CMakeLists.txt,
      examples/osgblenddrawbuffers/osgblenddrawbuffers.cpp: From Wand
      Rui, "I've rewritten the osgblenddrawbuffers example to use the
      new BlendFunci and Capability classes. Hope it will tell others
      how to make use of the new functionality and why they are
      important in modern MRT-based applications."

2014-12-09 18:30  robert

    * examples/osgfpdepth/osgfpdepth.cpp,
      examples/osgoit/DepthPeeling.cpp, include/osg/FrameBufferObject,
      include/osg/GL2Extensions, include/osg/GraphicsContext,
      src/osg/BufferObject.cpp, src/osg/FrameBufferObject.cpp,
      src/osg/GL2Extensions.cpp, src/osg/GraphicsContext.cpp,
      src/osg/OcclusionQueryNode.cpp, src/osg/Texture.cpp,
      src/osg/Texture3D.cpp, src/osg/TextureRectangle.cpp,
      src/osgUtil/RenderStage.cpp: Moved FBO Extensions into
      GL2Extensions.

2014-12-09 14:58  robert

    * include/osg/PrimitiveRestartIndex: Removed no longer used
      Extension definition

2014-12-09 14:57  robert

    * include/osg/ClampColor, include/osg/ColorMaski,
      include/osg/GL2Extensions, include/osg/Multisample,
      include/osg/Point, include/osg/PointSprite,
      include/osg/PrimitiveRestartIndex, include/osg/Stencil,
      src/osg/ClampColor.cpp, src/osg/ColorMaski.cpp,
      src/osg/GL2Extensions.cpp, src/osg/Multisample.cpp,
      src/osg/Point.cpp, src/osg/PointSprite.cpp,
      src/osg/PrimitiveRestartIndex.cpp: Moved local Extensions structs
      into GL2Extensions

2014-12-09 11:14  robert

    * include/osg/GL2Extensions, include/osg/Stencil,
      include/osg/StencilTwoSided, src/osg/GL2Extensions.cpp,
      src/osg/Stencil.cpp, src/osg/StencilTwoSided.cpp: Moveved
      Stencil/StencilTwoSided::Extensions into GL2Extensions

2014-12-09 10:37  robert

    * include/osg/BlendColor, include/osg/BlendEquation,
      include/osg/Capability, include/osg/GL2Extensions,
      src/osg/BlendColor.cpp, src/osg/BlendEquation.cpp,
      src/osg/BlendEquationi.cpp, src/osg/Capability.cpp,
      src/osg/GL2Extensions.cpp: Moved local Extensions objects to
      GL2Extensions

2014-12-09 10:05  robert

    * examples/osgmultitexture/osgmultitexture.cpp,
      include/osg/GL2Extensions, include/osg/Texture,
      include/osg/Texture2DArray, include/osg/Texture3D,
      src/osg/GL2Extensions.cpp, src/osg/Image.cpp,
      src/osg/Texture.cpp, src/osg/Texture1D.cpp,
      src/osg/Texture2DArray.cpp, src/osg/Texture2DMultisample.cpp,
      src/osg/Texture3D.cpp, src/osg/TextureBuffer.cpp,
      src/osg/TextureRectangle.cpp, src/osgText/Glyph.cpp: Moved
      Texture*::Extensions functionality into GL2Extensions

2014-12-08 16:08  robert

    * examples/osgvertexprogram/osgvertexprogram.cpp,
      include/osg/FragmentProgram, include/osg/GL2Extensions,
      include/osg/VertexProgram, src/osg/FragmentProgram.cpp,
      src/osg/GL2Extensions.cpp, src/osg/VertexProgram.cpp: MOved
      VertexProgram and FragmentProgram::Extensions into GL2Extensions.

2014-12-08 11:08  robert

    * src/osgUtil/CullVisitor.cpp: Fixed memory leak in
      RenderStageCache.

2014-12-07 17:31  robert

    * examples/osgcubemap/osgcubemap.cpp, include/osg/GL2Extensions,
      include/osg/SampleMaski, src/osg/GL2Extensions.cpp,
      src/osg/SampleMaski.cpp: MOved SampleMaski::Extensions into
      osg::GL2Extensions

2014-12-05 20:05  robert

    * include/osg/GL2Extensions, include/osg/TextureCubeMap,
      src/osg/GL2Extensions.cpp, src/osg/TextureCubeMap.cpp,
      src/osgFX/SpecularHighlights.cpp: Moved TextureCubeMap::Extension
      functionality into GL2Extensions

2014-12-05 17:26  robert

    * include/osg/Drawable, include/osg/GL2Extensions,
      include/osg/State, include/osgViewer/Renderer,
      src/osg/ArrayDispatchers.cpp, src/osg/Drawable.cpp,
      src/osg/GL2Extensions.cpp, src/osg/OcclusionQueryNode.cpp,
      src/osg/State.cpp, src/osg/TextureRectangle.cpp,
      src/osgParticle/PrecipitationEffect.cpp,
      src/osgViewer/Renderer.cpp, src/osgViewer/StatsHandler.cpp: Moved
      osg::Drawable::Extensions into osg::GL2Extensions

2014-12-05 10:37  robert

    * examples/osgshaderterrain/osgshaderterrain.cpp,
      examples/osgtransferfunction/TransferFunctionWidget.h,
      src/osgPlugins/lua/LuaScriptEngine.cpp,
      src/osgPlugins/lua/lua-5.2.3/src/lauxlib.c,
      src/osgPlugins/lua/lua-5.2.3/src/lcode.c: Fixed windows build
      warnings

2014-12-05 09:52  robert

    * src/osg/BufferObject.cpp: Windows build fix

2014-12-05 08:58  robert

    * include/osg/BufferObject, include/osg/Drawable,
      include/osg/GL2Extensions, src/osg/Drawable.cpp: From the
      GLintptr + GLsizeiptr defintions to GL2Extensions header

2014-12-04 19:03  robert

    * include/osg/BlendFunc, include/osg/GL2Extensions,
      src/osg/BlendFunc.cpp, src/osg/BlendFunci.cpp,
      src/osg/GL2Extensions.cpp: Moved osg::BlenFunc::Extensions into
      osg::GL2Extensions

2014-12-04 18:13  robert

    * examples/osgscreencapture/osgscreencapture.cpp,
      include/osg/BufferObject, include/osg/GL2Extensions,
      include/osg/TextureBuffer, src/osg/BufferIndexBinding.cpp,
      src/osg/BufferObject.cpp, src/osg/GL2Extensions.cpp,
      src/osg/Geometry.cpp, src/osgViewer/ScreenCaptureHandler.cpp:
      Moved GLBufferObject::Extensions structure into
      osg::GL2Extensions

2014-12-04 18:12  robert

    * examples/osgscreencapture/osgscreencapture.cpp: Removed redundent
      spaces

2014-12-04 17:12  robert

    * include/osg/GL2Extensions, src/osg/GL2Extensions.cpp: Added
      glMemoryBarrier, glMapBufferRange and glBindBufferBase to
      GL2Extensions

2014-12-04 16:28  robert

    * src/osg/VertexAttribDivisor.cpp,
      src/osgUtil/GLObjectsVisitor.cpp: Moved old
      GL2Extensions::Get(..) usage across to new
      osg::State::get<GL2Extensions>() usage

2014-12-04 16:22  robert

    * examples/osgshaderterrain/osgshaderterrain.cpp,
      include/osg/GL2Extensions, include/osg/State,
      src/osg/FrameBufferObject.cpp, src/osg/GL2Extensions.cpp,
      src/osg/PatchParameter.cpp, src/osg/Program.cpp,
      src/osg/Shader.cpp, src/osg/State.cpp: Ported GL2Extentions
      across to using the new GL extensions approach - cutting code
      count by 3000 lines!

2014-12-04 15:10  robert

    * src/osgDB/DatabasePager.cpp,
      src/osgUtil/IncrementalCompileOperation.cpp: Build fix for when
      ref_ptr<> auto conversion is disabled

2014-12-03 17:31  robert

    * examples/osgmultiplerendertargets/osgmultiplerendertargets.cpp,
      include/osg/Capability, include/osg/StateAttribute,
      src/osg/CMakeLists.txt, src/osg/Capability.cpp: Added
      osg::Capability and Cabibilityi base classes to wrap up
      glEnable/glDisable + glEnablei/glDisablei functionality, with
      osg::Enablei and osg::Disablei concrete implementations.

2014-12-02 17:12  robert

    * include/osg/BlendEquation, include/osg/BlendEquationi,
      include/osg/BlendFunc, include/osg/BlendFunci,
      include/osg/ColorMaski, src/osg/BlendEquation.cpp,
      src/osg/BlendEquationi.cpp, src/osg/BlendFunc.cpp,
      src/osg/BlendFunci.cpp, src/osg/CMakeLists.txt,
      src/osg/ColorMaski.cpp,
      src/osgWrappers/serializers/osg/BlendEquationi.cpp,
      src/osgWrappers/serializers/osg/BlendFunci.cpp,
      src/osgWrappers/serializers/osg/ColorMaski.cpp: Added
      osg::BlendFunci, osg::BlendEquationi and osg::ColorMaski
      StateAttrirbutes that wrap the glBlendFunci, glBlendEquationi and
      glColorMaski functions

2014-12-02 15:37  robert

    * include/osg/BlendEquation, include/osg/BlendFunc,
      src/osg/BlendEquation.cpp, src/osg/BlendFunc.cpp: Moved
      BlendEquation across to using the new GL extension setup
      approach.

2014-12-02 15:21  robert

    * examples/osgblendequation/osgblendequation.cpp: Fixed typo

2014-12-02 11:10  robert

    * include/osg/BlendFunc, include/osg/State, src/osg/BlendFunc.cpp:
      Added a template get and get_exisiting method into osg::State
      that implements a new mechanism for managing OpenGL extensions.
     
      Refactored the BendFunc::Extensions usage to simplify it
      utilizing the new osg::State extension mechanism.

2014-11-28 16:20  robert

    * PlatformSpecifics/Android/android.toolchain.cmake: From Rafa
      Gaitan, "I'm attaching also a new version of the toolchain with
      support for the r10c ndk. This fixes some CMake Warnings and
      allows to use the toolchain in macosx."

2014-11-28 16:10  robert

    * CMakeLists.txt, include/OpenThreads/Version, include/osg/Version,
      src/OpenThreads/CMakeLists.txt, src/osg/CMakeLists.txt: Removed
      include/osg/Version and include/OpenThreads/Version headers as
      these are autogenerated.
     
      Changed the paths for the OpenThreads/osg Version headers to be
      placed in the PROJECT_BINARY_DIR.

2014-11-28 10:54  robert

    * include/osg/BufferObject, include/osgDB/ConvertUTF,
      src/OpenThreads/pthreads/PThread.cpp, src/osg/GLExtensions.cpp:
      Standardized on defined(__ANDROID__)

2014-11-28 10:52  robert

    * src/osgPlugins/lua/lua-5.2.3/src/llex.c,
      src/osgPlugins/lua/lua-5.2.3/src/luaconf.h: Added
      getlocaledecpoint() workaround for Android build of lua plugin

2014-11-27 15:54  robert

    * src/osgTerrain/GeometryPool.cpp, src/osgTerrain/shaders,
      src/osgTerrain/shaders/terrain_displacement_mapping_frag.cpp,
      src/osgTerrain/shaders/terrain_displacement_mapping_vert.cpp:
      Added in source shaders

2014-11-27 15:39  robert

    * src/osgTerrain/GeometryPool.cpp: Changed the name of shader files

2014-11-26 20:40  robert

    * src/osg/CMakeLists.txt: From Jason Beverage, "It looks like the
      Callback header got accidentally removed from the CMakeLists.txt
      in the submission yesterday for the geometry instancing example."

2014-11-26 19:05  robert

    * include/osgTerrain/DisplacementMappingTechnique,
      include/osgTerrain/GeometryPool: Windows build fix

2014-11-26 17:08  robert

    * applications/present3D/deprecated/Cluster.h: Fixed warnings

2014-11-26 17:04  robert

    * src/osgQt/GraphicsWindowQt.cpp: Fixed warnings

2014-11-26 16:29  robert

    * src/osgPlugins/ffmpeg/CMakeLists.txt: Fixed deprecated warnings

2014-11-26 16:15  robert

    * src/osgPlugins/pdf/CMakeLists.txt: Fixed warning

2014-11-26 16:04  robert

    * examples/osgcluster/osgcluster.cpp: Fixed warnings.

2014-11-26 16:00  robert

    * src/osgPlugins/lwo/Object.cpp: Fixed warning

2014-11-26 15:59  robert

    * src/osgWrappers/deprecated-dotosg/osg/StateSet.cpp: Fixed warning

2014-11-26 14:06  robert

    * src/osgWrappers/serializers/osgTerrain/DisplacementMappingTechnique.cpp:
      Added osgTerrain::DisplacementMappingTechnique serializer

2014-11-26 14:04  robert

    * examples/osgterrain/CMakeLists.txt,
      examples/osgterrain/ShaderTerrain.cpp,
      examples/osgterrain/ShaderTerrain.h,
      examples/osgterrain/osgterrain.cpp,
      include/osgTerrain/DisplacementMappingTechnique,
      include/osgTerrain/GeometryPool, src/osgTerrain/CMakeLists.txt,
      src/osgTerrain/DisplacementMappingTechnique.cpp,
      src/osgTerrain/GeometryPool.cpp: Renamed ShaderTerrain to
      DisplacementMappingTechnique and moved it from the osgterrain
      example testbed into the osgTerrain NodeKit

2014-11-26 13:36  robert

    * examples/osgterrain/ShaderTerrain.cpp,
      examples/osgterrain/ShaderTerrain.h,
      include/osgTerrain/GeometryPool, src/osgTerrain/CMakeLists.txt,
      src/osgTerrain/GeometryPool.cpp: Moved osgTerrain::GeometryPool
      from osgterrain example into osgTerrain NodeKit

2014-11-25 14:37  robert

    * src/osg/CMakeLists.txt: Removed GL header as it's already
      included via the ${OPENSCENEGRAPH_OPENGL_HEADER} entry.

2014-11-25 10:58  robert

    * examples/CMakeLists.txt, examples/osggpucull,
      examples/osggpucull/AggregateGeometryVisitor.cpp,
      examples/osggpucull/AggregateGeometryVisitor.h,
      examples/osggpucull/CMakeLists.txt,
      examples/osggpucull/DrawIndirectPrimitiveSet.cpp,
      examples/osggpucull/DrawIndirectPrimitiveSet.h,
      examples/osggpucull/GpuCullShaders.h,
      examples/osggpucull/ShapeToGeometry.cpp,
      examples/osggpucull/ShapeToGeometry.h,
      examples/osggpucull/osggpucull.cpp, include/osg/BufferTemplate,
      src/osg/CMakeLists.txt: From PawelKsiezopolski, "This submission
      contains a new example for OSG : a geometry instancing rendering
      algorithm consisting of two consequent phases :
     
      - first phase is a GLSL shader performing object culling and LOD
      picking ( a culling shader ).
      Every culled object is represented as GL_POINT in the input
      osg::Geometry.
      The output of the culling shader is a set of object LODs that
      need to be rendered.
      The output is stored in texture buffer objects. No pixel is drawn
      to the screen
      because GL_RASTERIZER_DISCARD mode is used.
     
      - second phase draws osg::Geometry containing merged LODs using
      glDrawArraysIndirect()
      function. Information about quantity of instances to render, its
      positions and other
      parameters is sourced from texture buffer objects filled in the
      first phase.
     
      The example uses various OpenGL 4.2 features such as texture
      buffer objects,
      atomic counters, image units and functions defined in
      GL_ARB_shader_image_load_store
      extension to achieve its goal and thus will not work on graphic
      cards with older OpenGL
      versions.
     
      The example was tested on Linux and Windows with NVidia 570 and
      580 cards.
      The tests on AMD cards were not conducted ( due to lack of it ).
      The tests were performed using OSG revision 14088.
     
      The main advantages of this rendering method :
      - instanced rendering capable of drawing thousands of different
      objects with
      almost no CPU intervention ( cull and draw times are close to 0
      ms ).
      - input objects may be sourced from any OSG graph ( for example -
      information about
      object points may be stored in a PagedLOD graph. This way we may
      cover the whole
      countries with trees, buildings and other objects ).
      Furthermore if we create osgDB plugins that generate data on the
      fly, we may
      generate information for every grass blade for that country.
      - every object may have its own parameters and thus may be
      distinct from other objects
      of the same type.
      - relatively low memory footprint ( single object information is
      stored in a few
      vertex attributes ).
      - no GPU->CPU roundtrip typical for such methods ( method uses
      atomic counters
      and glDrawArraysIndirect() function instead of OpenGL queries.
      This way
      information about quantity of rendered objects never goes back to
      CPU.
      The typical GPU->CPU roundtrip cost is about 2 ms ).
      - this example also shows how to render dynamic objects ( objects
      that may change
      its position ) with moving parts ( like car wheels or airplane
      propellers ) .
      The obvious extension to that dynamic method would be the
      animated crowd rendering.
      - rendered objects may be easily replaced ( there is no need to
      process the whole
      OSG graphs, because these graphs store only positional
      information ).
     
      The main disadvantages of a method :
      - the maximum quantity of objects to render must be known
      beforehand
      ( because texture buffer objects holding data between phases have
      constant size ).
      - OSG statistics are flawed ( they don't know anymore how many
      objects are drawn ).
      - osgUtil::Intersection does not work
     
      Example application may be used to make some performance tests,
      so below you
      will find some extended parameter description :
      --skip-dynamic - skip rendering of dynamic objects if you only
      want to
      observe static object statistics
      --skip-static - the same for static objects
      --dynamic-area-size - size of the area for dynamic rendering.
      Default = 1000 meters
      ( square 1000m x 1000m ). Along with density defines
      how many dynamic objects is there in the example.
      --static-area-size - the same for static objects. Default = 2000
      meters
      ( square 2000m x 2000m ).
     
      Example application defines some parameters (density, LOD ranges,
      object's triangle count).
      You may manipulate its values using below described modifiers:
      --density-modifier - density modifier in percent. Default = 100%.
      Density ( along with LOD ranges ) defines maximum
      quantity of rendered objects. registerType() function
      accepts maximum density ( in objects per square kilometer )
      as its parameter.
      --lod-modifier - defines the LOD ranges. Default = 100%.
      --triangle-modifier - defines the number of triangles in finally
      rendered objects.
      Default = 100 %.
      --instances-per-cell - for static rendering the application
      builds OSG graph using
      InstanceCell class ( this class is a modified version of Cell
      class
      from osgforest example - it builds simple quadtree from a list
      of static instances ). This parameter defines maximum number
      of instances in a single osg::Group in quadtree.
      If, for example, you modify it to value=100, you will see
      really big cull time in OSG statistics ( because resulting
      tree generated by InstanceCell will be very deep ).
      Default value = 4096 .
      --export-objects - write object geometries and quadtree of
      instances to osgt files
      for later analysis.
      --use-multi-draw - use glMultiDrawArraysIndirect() instead of
      glDrawArraysIndirect() in a
      draw shader. Thanks to this we may render all ( different )
      objects
      using only one draw call. Requires OpenGL version 4.3 and some
      more
      work from me, because now it does not work ( probably I
      implemented
      it wrong, or Windows NVidia driver has errors, because it hangs
      the apllication at the moment ).
     
      This application is inspired by Daniel Rákos work : "GPU based
      dynamic geometry LOD" that
      may be found under this address :
      http://rastergrid.com/blog/2010/10/gpu-based-dynamic-geometry-lod/
      There are however some differences :
      - Daniel Rákos uses GL queries to count objects to render, while
      this example
      uses atomic counters ( no GPU->CPU roundtrip )
      - this example does not use transform feedback buffers to store
      intermediate data
      ( it uses texture buffer objects instead ).
      - I use only the vertex shader to cull objects, whereas Daniel
      Rákos uses vertex shader
      and geometry shader ( because only geometry shader can send more
      than one primitive
      to transform feedback buffers ).
      - objects in the example are drawn using glDrawArraysIndirect()
      function,
      instead of glDrawElementsInstanced().
     
      Finally there are some things to consider/discuss :
      - the whole algorithm exploits nice OpenGL feature that any GL
      buffer
      may be bound as any type of buffer ( in our example a buffer is
      once bound
      as a texture buffer object, and later is bound as
      GL_DRAW_INDIRECT_BUFFER ).
      osg::TextureBuffer class has one handy method to do that trick (
      bindBufferAs() ),
      and new primitive sets use osg::TextureBuffer as input.
      For now I added new primitive sets to example (
      DrawArraysIndirect and
      MultiDrawArraysIndirect defined in
      examples/osggpucull/DrawIndirectPrimitiveSet.h ),
      but if Robert will accept its current implementations ( I mean -
      primitive
      sets that have osg::TextureBuffer in constructor ), I may add it
      to
      osg/include/PrimitiveSet header.
      - I used BufferTemplate class writen and published by Aurelien in
      submission forum
      some time ago. For some reason this class never got into
      osg/include, but is
      really needed during creation of UBOs, TBOs, and possibly SSBOs
      in the future.
      I added std::vector specialization to that template class.
      - I needed to create similar osg::Geometries with variable number
      of vertices
      ( to create different LODs in my example ). For this reason I've
      written
      some code allowing me to create osg::Geometries from osg::Shape
      descendants.
      This code may be found in ShapeToGeometry.* files. Examples of
      use are in
      osggpucull.cpp . The question is : should this code stay in
      example, or should
      it be moved to osgUtil ?
      - this remark is important for NVidia cards on Linux and Windows
      : if
      you have "Sync to VBlank" turned ON in nvidia-settings and you
      want to see
      real GPU times in OSG statistics window, you must set the power
      management
      settings to "Prefer maximum performance", because when "Adaptive
      mode" is used,
      the graphic card's clock may be slowed down by the driver during
      program execution
      ( On Linux when OpenGL application starts in adaptive mode, clock
      should work
      as fast as possible, but after one minute of program execution,
      the clock slows down ).
      This happens when GPU time in OSG statistics window is shorter
      than 3 ms.
      "

2014-11-25 10:33  robert

    * src/osgUtil/TriStripVisitor.cpp: Removed DrawArrays optimization
      to simplify the code and open the door to adding primitive
      combining.

2014-11-25 10:11  robert

    * src/osg/State.cpp: Commented out
      State::setUpVertexAttribAlias(..) debug message.

2014-11-24 15:19  robert

    * CMakeLists.txt, CMakeModules/FindAVFoundation.cmake,
      CMakeModules/FindQuickTime.cmake,
      src/osgViewer/PixelBufferCocoa.mm: From Jan Klimke, "i noticed,
      that there are a couple of additional flaws when building osg for
      Mac OS X 10.10 Yosemite.
     
      The mac os sdk version is recognized by the current CMAKE script
      as 10.1 instead of 10.10 since it cuts the version string from
      the 4th place. I introduced a more reliable version checking
      based on splitting the returned version code into MAJOR MINOR and
      PATCH parts and reassemble the OSG sdk version afterwards.
     
      I replaced the existing CMake code against the following
      (returning now version 10.10 as expected):
     
      # Determine the canonical name of the selected Platform SDK
      EXECUTE_PROCESS(COMMAND "/usr/bin/sw_vers" "-productVersion"
      OUTPUT_VARIABLE OSG_OSX_SDK_NAME
      OUTPUT_STRIP_TRAILING_WHITESPACE)
      STRING(REPLACE "." ";" MACOS_VERSION_LIST ${OSG_OSX_SDK_NAME})
      LIST(GET MACOS_VERSION_LIST 0 MACOS_VERSION_MAJOR)
      LIST(GET MACOS_VERSION_LIST 1 MACOS_VERSION_MINOR)
      LIST(GET MACOS_VERSION_LIST 2 MACOS_VERSION_PATCH)
     
      SET(OSG_OSX_SDK_NAME
      "macosx${MACOS_VERSION_MAJOR}.${MACOS_VERSION_MINOR}")
     
      Also i added the check for the new Version to some more find
      scripts.
     
      Additionally the nil object in Objective C now seems to be
      equivalent with a null_ptr that cannot be passed as GLInt
      anymore. So i switched this in the PixelBufferCocoa.mm to pass a
      zero instead of nil.
      "

2014-11-24 14:54  robert

    * include/osg/StateAttribute, include/osg/VertexAttribDivisor,
      src/osg/CMakeLists.txt, src/osg/VertexAttribDivisor.cpp,
      src/osgWrappers/serializers/osg/VertexAttribDivisor.cpp: Added
      VertexAttribDivisor class to wrap up glVertexAttribDivisor
      function

2014-11-24 14:09  robert

    * examples/osgsimplegl3/osgsimplegl3.cpp: Fixed osgsimplegl3
      example's set up of the main camera.

2014-11-24 14:01  robert

    * include/osg/State, src/osg/State.cpp: Added numTextureUnits
      parameter to the osg::State::resetVertexAttributeAlias(bool,
      unit) method, and set the default to 8.

2014-11-21 20:16  robert

    * src/osgDB/CMakeLists.txt, src/osgDB/FileUtils.cpp: From Alberto
      Luaces,"the current code uses the preprocessor for generating the
      plugin path in
      a way that when CMAKE_INSTALL_PREFIX contains something along the
      lines
      of
     
      /usr/x86_64-linux-gnu/
     
      it gets substituted as
     
      /usr/x86_64-1-gnu/
     
      that is, the string is preprocessed again, thereby making changes
      to
      anything that matches any defined symbol, as "linux" in this
      example
      (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=763816).
     
      Quoting that path directly in CMake scripts solves that problem.
      "

2014-11-21 20:15  robert

    * include/osg/Image: Added comment clarifying how
      Image::getColor(..) out of 0..1 range texcoords are handled - now
      clamped to edge.

2014-11-21 17:22  robert

    * src/osg/Image.cpp: Implemented a clamp to edge policy for the
      Image::g/setColor(color, texcoord).

2014-11-21 17:17  robert

    * src/osg/CopyOp.cpp: Added testing for Drawables in the
      CopyOp::operator(Node*) to replicate the old functionality.

2014-11-21 16:27  robert

    * include/osg/Image, src/osg/Image.cpp: From Sebastian
      Messerschmidt, "Added setColor function to modify an image based
      on texture coordinates, parallel to the getColor functionality."

2014-11-21 14:46  robert

    * examples/osgterrain/osgterrain.cpp: Added --db-affinit cpuNum
      option to osgterrain example to illustrate how to set the thead
      affinity of the DatabasePager threads.

2014-11-21 10:44  robert

    * include/osg/Texture2DMultisample: From Sebastian Messerschmidt,
      "Attached you find a change adding a getNumSamples() function to
      retrieve the value set via setNumSamples."

2014-11-21 10:37  robert

    * CMakeLists.txt, CMakeModules/ModuleInstall.cmake,
      CMakeModules/OsgMacroUtils.cmake,
      PlatformSpecifics/Android/android.toolchain.cmake,
      src/CMakeLists.txt, src/OpenThreads/pthreads/CMakeLists.txt,
      src/osgWrappers/serializers/osg/LibraryWrapper.cpp: From Rafa
      Gaitan, "I finally had some time to change the build system for
      Android using a Toolchain, which, I think, will be easier to
      maintain and uses cmake standard system to build it.
     
      My changes:
      -------------------
      - I changed the cmake files and added a toolchain for building
      OSG in Android. The toolchain is based on the one used at OpenCV.
      For building OSG for android you just need to do:
     
      mkdir build_android_static_gles2 && cd build_android_static_gles2
      cmake .. -DANDROID_NDK=<path-to-the-android-ndk>
      -DCMAKE_TOOLCHAIN_FILE=../PlatformSpecifics/Android/android.toolchain.cmake
      -DOPENGL_PROFILE="GLES2"
      -DDYNAMIC_OPENTHREADS=OFF
      -DDYNAMIC_OPENSCENEGRAPH=OFF
      -DANDROID_NATIVE_API_LEVEL=15 # optional
      -DANDROID_ABI=armeabim #optional
      -DCMAKE_INSTALL_PREFIX=<path-to-the-install-path> #optional
      make -j 8
      make install
     
      The OPENGL_PROFILE works as expected, changing it to "GLES1" it
      builds and links OSG using GLES1.
      The DYNAMIC_OPENTHREADS/DYNAMIC_OPENSCENEGRAPH parameters also
      allows to build the dynamic libraries
     
      - I also added some build fixes for android related to the
      texture formats and added some missing USE_OSG_SERIALIZER_WRAPPER
      in the osg serializer library to support loading osgb files in
      static."

2014-11-21 10:21  robert

    * CMakeModules/CheckAtomicOps.cmake: From Björn Blissing, fix for
      ambiguous defines in Atomic.cpp when compiling with MinGW and GCC

2014-11-20 17:37  robert

    * include/osg/Texture: From Claus Steuer, "XCode 6, IOs 8.1 SDK
      Compile fix : There are some undefined texture formats when
      compiling osg for IOs 8.1 with XCode 6 and OpenGLES2 enabled."

2014-11-20 17:00  robert

    * include/osg/State: From Pjotr Svetachov, "I was experimenting
      with VBO's to try to get them on par with display
      lists when drawing lots of batches and noticed that my program
      generated a lot of unneeded glClientActiveTexture calls. Digging
      deeper I found out it came from State::disableTexCoordPointer
      where
      the function would call glClientActiveTexture but not
      glDisableClientState because the geometry didn't have texture
      coordinates for that channel. This is because in our scene there
      are
      some geometries that have move than one uv channels making
      State::_texCoordArrayList grow. Then the method
      State::applyDisablingOfVertexAttributes() will call
      disableTexCoordPointer multiple times.
     
      I rearrange the method a little to combat this. Now the logic has
      the
      same ordering as disableTexCoordPointersAboveAndIncluding which
      already combats this."

2014-11-20 16:38  robert

    * src/osgPlugins/obj/ReaderWriterOBJ.cpp: From Farshid Lashkari,
      "The obj loader was overriding the existing database path list
      with the file path of the model, instead of prepending the file
      path to the path list. The latter seems to be more common
      behavior for most of the existing loader plugins. Also, the local
      options weren't actually being used when processing the scene
      graph for textures. I've attached the fix for both issues."

2014-11-20 10:52  robert

    * src/osgPlugins/Inventor/ConvertFromInventor.cpp: From Marc
      Helbling, "here is a trivial fix in the Inventor plugin. In one
      code path, the pointer validity is checked after dereferencing a
      pointer that can be null (image->valid()) instead of calling
      ref_ptr::valid (image.valid())."

2014-11-20 10:45  robert

    * src/osgUtil/MeshOptimizers.cpp: From Marc Helbling, "I've come
      across scenes that contains geometries with initialized but empty
      vertex arrays and primitives and that would make some optimizers
      crash.
     
      The submission therefore only contains a test on the size of the
      vertex array for the VertexCacheMissVisitor and the
      VertexAccessOrderVisitor visitors."

2014-11-20 10:05  robert

    * src/osg/Texture.cpp: From Christian Ruzicka, "while testing this
      commit on our OSG 3.2 version, I observed that the changes for
      ETC2 brake ETC1 support. Attached you'll find the changes to get
      ETC1 running again"

2014-11-20 09:55  robert

    * src/osgPlugins/3ds/ReaderWriter3DS.cpp: From Sukender, "Fix for
      3DS reader, which may read wrong triangles. Actually, indices may
      suffer a 'short int' overflow, in two places."

2014-11-20 09:41  robert

    * src/osg/Texture2DArray.cpp: Fixed segfalt in Texture2DArray copy
      constructor where it would apply images to an uninitialzed
      vector.

2014-11-20 09:32  robert

    * src/osgPlugins/fbx/fbxMaterialToOsgStateSet.cpp,
      src/osgPlugins/fbx/fbxMaterialToOsgStateSet.h,
      src/osgPlugins/fbx/fbxRMesh.cpp: From Marc Helbling, "patch
      adding support for ambient material in the FBX plugin. It's a
      straightfoward adaptation of the emissive support and has been
      tested on a proprietary model."

2014-11-20 09:21  robert

    * src/osgPlugins/gif/ReaderWriterGIF.cpp: From Pjotr Svetachov, fix
      for build breakage with giflib 5.0.

2014-11-20 08:26  robert

    * README.txt: From Per Nordqvist, "The README.txt is still somewhat
      confusing so I have updated it"

2014-11-19 17:45  robert

    * README.txt, configure: Removed configure script as it's no longer
      required as cmake . will now default to Release

2014-11-19 17:42  robert

    * CMakeLists.txt: Added CMake script to set the default
      CMAKE_BUILD_TYPE to Release. Approach taken from simgear.

2014-11-19 17:29  robert

    * ChangeLog, applications/osgversion/Contributors.cpp: Fixed
      Contributors names

2014-11-19 17:10  robert

    * src/osgPlugins/gif/ReaderWriterGIF.cpp: From Clement Boesch, "Fix
      remaining bit of Giflib5 usage"

2014-11-19 11:37  robert

    * src/osgWrappers/deprecated-dotosg/osg/ProxyNode.cpp: From Laurens
      Voerman, "I found a new way to crach the osgviewer:
      osgviewer "ProxyNode { FileNameList { cow.osgt } num_children 1
      }".osgs
     
      The proxy node reader wrongly assumes options to be non NULL.
     
      fixed in attached zip:
      src\osgWrappers\deprecated-dotosg\osg\ProxyNode.cpp
     
      applies to both the 3.2 branch and svn trunk"

2014-11-19 11:30  robert

    * examples/osgQtWidgets/osgQtWidgets.cpp,
      include/osgQt/QGraphicsViewAdapter, include/osgQt/QWebViewImage,
      include/osgQt/QWidgetImage, src/osgQt/QGraphicsViewAdapter.cpp,
      src/osgQt/QWidgetImage.cpp,
      src/osgViewer/ViewerEventHandlers.cpp: From Wang Rui, "The
      submission includes some fixes for osgQt library and osgQtWidgets
      example: (1) QTextEdit now works with mouse/drag events, (2)
      scrollbars will change when OSG window is resizing, (3) improve
      rendering efficiency of QGraphicsViewAdapter so that it works
      with complex Qt UI, (4) add new setBackgroundWidget() method to
      indicate a 'background widget', which will ignore mouse/key
      events on it and pass them to the 3D scene."

2014-11-19 10:43  robert

    * examples/osgterrain/ShaderTerrain.cpp: Changed the way that the
      cell size is passed to the shader

2014-11-19 09:33  robert

    * src/osg/Texture.cpp: From James Turner, "Converting the loops to
      forward versions fixed the issue. The problem is size_t is
      unsigned; at the limit condition it doesn’t go negative but wraps
      around to 0xffffffffffffffff …. and boom."

2014-11-17 15:43  robert

    * src/osgPlugins/exr/ReaderWriterEXR.cpp: Fixed typo

2014-11-17 09:19  robert

    * src/osgDB/ObjectCache.cpp: Fixed typo in comment

2014-11-14 17:44  robert

    * examples/osgterrain/ShaderTerrain.cpp: Added use of
      GL_TRIANGLE_STRIP to cut down the size of the primitive indices
      required.

2014-11-14 16:47  robert

    * examples/osgterrain/ShaderTerrain.cpp: Implemented skirt
      functionality

2014-11-13 09:40  robert

    * include/osgDB/DatabasePager, include/osgDB/ObjectCache,
      include/osgDB/Options, src/osgDB/DatabasePager.cpp,
      src/osgDB/ObjectCache.cpp, src/osgDB/Options.cpp,
      src/osgDB/Registry.cpp: Refactored the handling of use of the
      osgDB::ObjectCache in the DatabasePager to use a local thread
      specific ObjectCache to handle new additions and
      then have these additions merged with the main Registry
      ObjectCache during the main loop.

2014-11-11 18:28  robert

    * include/osgDB/ObjectCache, include/osgDB/Registry,
      src/osgDB/CMakeLists.txt, src/osgDB/ObjectCache.cpp,
      src/osgDB/Registry.cpp: Moved implementation of ObjectCache
      functionality out of Registry into a dedicated osgDB::ObjectCache
      class.

2014-11-10 16:04  robert

    * include/osgDB/DatabasePager, src/osgDB/DatabasePager.cpp: To
      handle thread safe paging and use of the osgDB::Registry
      ObjectCache, moved the handling of cache into
      osgDB::DatabasePager.

2014-11-06 10:44  robert

    * src/osgDB/InputStream.cpp: From Pjotr Svetachov, "I tried your
      fix and it exposed a bug in my fix :)
      The problem is that the readObjectFields method will add the
      object to the _identifierMap. So all the other instances of that
      image in the same file will be replaced by the created dummy
      object. In my fix this was an dummy image and I didn't notice it
      in our scene's, probably because it covered a small part of an
      object. In your fix the dummy object was not an image and that
      leads to a crash when something tries to use it as an image. I
      have attached a small fix for this bug.
     
      "

2014-11-06 10:40  robert

    * include/osg/Object, include/osgDB/DatabasePager,
      include/osgUtil/IncrementalCompileOperation,
      src/osgDB/DatabasePager.cpp, src/osgDB/InputStream.cpp,
      src/osgUtil/IncrementalCompileOperation.cpp: Introduced use of
      MarkerObject to IncrmentalCompileOperation/DatabasePager as a way
      of marking objects that have already been processed and compiled,
      thus avoid potential threading conflicts when paged subgraphs are
      reused.

2014-11-05 16:08  robert

    * include/osgDB/InputStream, src/osgDB/InputStream.cpp: Added
      handling of the reading of field properties to a dummy object for
      cached images to avoid threading issues associated with reusing
      and modifying an active object.

2014-11-05 13:38  robert

    * src/osg/OperationThread.cpp: Reinstated the original mechanism
      for OperationThread::cancel() that co-operatively releases
      blocks/barriers to make sure the thread is able to exit
      correctly.

2014-11-04 20:07  robert

    * examples/osgterrain/ShaderTerrain.cpp,
      examples/osgterrain/ShaderTerrain.h: Improvements to the
      ShaderTerrain experiemental terrain rendering technique.

2014-11-04 20:07  robert

    * src/osgTerrain/TerrainTile.cpp: Changed TerrainTile::setDirty()
      to use children needing update traversal mechanism to address
      threadng issues.

2014-11-04 20:06  robert

    * src/OpenThreads/pthreads/PThread.cpp,
      src/OpenThreads/pthreads/PThreadPrivateData.h: Change isRunning
      variable to an Atomic to address possible race condition
      asscoiated with reading and writing to the variable from
      different threads.

2014-11-04 16:29  robert

    * src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp,
      src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp: Build fixes for
      ffmpeg LIBAVCODEC_VERSION_MAJOR >= 56

2014-11-04 11:18  robert

    * src/osgViewer/ViewerBase.cpp: Added an InitRegistry static
      intiialization and destrucion static to help control the order of
      construction and destruction of the osgDB::Registry.

2014-11-04 10:46  robert

    * examples/osgQtBrowser/osgQtBrowser.cpp,
      examples/osgunittests/MultiThreadRead.cpp,
      examples/osgunittests/osgunittests.cpp,
      examples/osguserstats/osguserstats.cpp,
      examples/osgviewerMFC/MFC_OSG.cpp, include/osg/OperationThread,
      src/OpenThreads/pthreads/PThread.cpp,
      src/OpenThreads/qt/QtThread.cpp,
      src/OpenThreads/sproc/SprocThread.c++,
      src/OpenThreads/win32/Win32Thread.cpp,
      src/osg/OperationThread.cpp, src/osgDB/DatabasePager.cpp,
      src/osgDB/ImagePager.cpp, src/osgPlugins/cfg/RenderSurface.cpp,
      src/osgPlugins/gif/ReaderWriterGIF.cpp,
      src/osgPlugins/quicktime/QuicktimeImageStream.cpp,
      src/osgPlugins/vnc/ReaderWriterVNC.cpp: Replaced use of
      while(isRunning()) { YieldCurrentThread(); } style loops with use
      of join() to avoid false positives being reported by valgrind
      when using the helgrind tool for thread debugging.

2014-10-21 15:08  robert

    * examples/osgterrain/CMakeLists.txt,
      examples/osgterrain/ShaderTerrain.cpp,
      examples/osgterrain/ShaderTerrain.h,
      examples/osgterrain/osgterrain.cpp,
      src/osgTerrain/TerrainTile.cpp: Added experimental
      osgTerrain::ShaderTerrain TerrainTechnique to osgterrain example
      to flesh out new shader based displacement mapping approach to
      osgTerrain databases.
     
      Requires shader files place in OpenSceneGraph-Data/shaders from
      OpenSceneGraph-Data's svn/trunk to function.
     
      Run osgterrain example with --shader command line option to
      select displacement mapping shader approach.

2014-10-21 14:47  robert

    * applications/osgviewer/osgviewer.cpp: Removed --sync related code
      as it's now integrated into osg::DisplaySettings and osgViewer

2014-10-21 14:46  robert

    * include/osg/DisplaySettings, include/osg/GraphicsContext,
      src/osg/DisplaySettings.cpp, src/osg/GraphicsContext.cpp,
      src/osgViewer/CompositeViewer.cpp, src/osgViewer/Viewer.cpp:
      Added osg::SyncSwapBuffersCallback to include/osg/GraphicsContext
      and support for enabling it to include/osg/DisplaySettings, and
      to the Viewer/CompositeViewer::realize() methods.
     
      To enable the sync of swap buffers set the env var
      OSG_SYNC_SWAP_BUFFERS to ON or 1, to switch off set to OFF or 0.
     
      One can also use the --sync command line option for application
      that pass on command line options to the
      osg::DisplaySettings::instance().

2014-10-21 08:27  robert

    * src/osg/StateSet.cpp: Removed checks against Drawable as these
      are no longer required.

2014-09-17 17:40  robert

    * src/osgPlugins/lua/LuaScriptEngine.cpp,
      src/osgPlugins/lua/LuaScriptEngine.h,
      src/osgPlugins/lua/ReaderWriterLua.cpp: Added support for writing
      the file path of a script to the lua package.path to help with
      loading scripts within lua.

2014-09-16 17:40  robert

    * examples/osgvolume/osgvolume.cpp,
      src/osgPlugins/p3d/ReaderWriterP3D.cpp,
      src/osgPlugins/tf/ReaderWriterTF.cpp: Changed osgvolume example
      to use the new tf plugin rather than having local code for
      reading transfer function

2014-09-16 11:00  robert

    * src/osgPlugins/tf/ReaderWriterTF.cpp: Added write support

2014-09-15 17:53  robert

    * src/osgDB/Registry.cpp, src/osgPlugins/CMakeLists.txt,
      src/osgPlugins/tf, src/osgPlugins/tf/CMakeLists.txt,
      src/osgPlugins/tf/ReaderWriterTF.cpp: Added .tf & .tf-255 plugin
      for reading ascii 1D transfer functon files in support for volume
      rendering.

2014-09-12 14:16  robert

    * include/osgUI/TabWidget, src/osgUI/TabWidget.cpp: Added basic
      frame rendering for TabWidget

2014-09-10 17:03  robert

    * include/osgUI/AlignmentSettings, src/osgUI/AlignmentSettings.cpp,
      src/osgUI/TabWidget.cpp: Improved the alignment and sizing of
      TabWidget tab headers

2014-09-10 11:59  robert

    * src/osgUI/TabWidget.cpp: Implemented the selection of tabs by
      clicking, using mouse wheel or arrow keys.

2014-09-09 16:12  robert

    * src/osgUI/Dialog.cpp, src/osgUI/TabWidget.cpp: Improved the
      handling of the dialog title text

2014-09-09 15:14  robert

    * include/osgUI/Callbacks, src/osgUI/Callbacks.cpp,
      src/osgUI/Dialog.cpp, src/osgUI/Widget.cpp: Moved the diaglog
      title bar widgets into the Widget::GraphicsSubgraph map to avoid
      them poluting the Dialog's children list and to prevent them from
      being serialized.

2014-09-09 13:37  robert

    * include/osgUI/TabWidget, include/osgUI/Widget,
      src/osgUI/ComboBox.cpp, src/osgUI/Dialog.cpp,
      src/osgUI/Label.cpp, src/osgUI/LineEdit.cpp, src/osgUI/Popup.cpp,
      src/osgUI/PushButton.cpp, src/osgUI/Style.cpp,
      src/osgUI/TabWidget.cpp, src/osgUI/Widget.cpp,
      src/osgWrappers/serializers/osgUI/Tab.cpp,
      src/osgWrappers/serializers/osgUI/Widget.cpp: Introduced
      Widget::WidgetStateSet to help localize the StateSet set up by
      Widget implementations from being serialized or
      affecting what end users apply via the standard
      Node::s/getStateSet().
     
      Further work on TabWidget.

2014-09-08 08:53  robert

    * examples/osgtransferfunction/TransferFunctionWidget.cpp: Build
      fix

2014-09-05 16:04  robert

    * include/osgUI/TabWidget, src/osgUI/CMakeLists.txt,
      src/osgUI/TabWidget.cpp,
      src/osgWrappers/serializers/osgUI/Tab.cpp,
      src/osgWrappers/serializers/osgUI/TabWidget.cpp: Added shell of
      new osgUI::TabWidget class

2014-09-05 11:05  robert

    * include/osgDB/ObjectWrapper, include/osgDB/Serializer,
      src/osgDB/ObjectWrapper.cpp,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp:
      Introduced support for specifying whether a serializer supports
      different types of usage - one or more of READ_WRITE_PROPERTY,
      GET_PROPERTY and SET_PROPERTY.

2014-09-03 15:54  robert

    * include/osgVolume/VolumeSettings,
      src/osgPresentation/deprecated/SlideShowConstructor.cpp,
      src/osgVolume/VolumeSettings.cpp,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added
      setting of the IsoSurfaceProperty in VolumeSettings

2014-09-03 12:28  robert

    * include/osgUI/Callbacks, src/osgUI/Callbacks.cpp,
      src/osgUI/Dialog.cpp, src/osgUI/PushButton.cpp: Added close
      button on Dialog title bar

2014-09-02 17:01  robert

    * include/osgUI/ComboBox, src/osgUI/ComboBox.cpp: Refactored the
      handling of ComboBox item picking to make it faster and more
      reliable

2014-09-02 10:00  robert

    * src/osgUI/ComboBox.cpp: Improved handling of ComboBox popup
      toggling

2014-09-02 09:14  robert

    * src/osgUI/Callbacks.cpp, src/osgUI/Widget.cpp: Added support for
      scaling widgets via the scoll wheel.

2014-09-02 08:41  robert

    * src/osgGA/KeySwitchMatrixManipulator.cpp: Removed debugging
      message

2014-09-01 19:13  robert

    * include/osgUI/Callbacks, include/osgUI/Widget,
      src/osgUI/CMakeLists.txt, src/osgUI/Callbacks.cpp,
      src/osgUI/Dialog.cpp, src/osgUI/LineEdit.cpp,
      src/osgUI/Widget.cpp: Added DragCallback class to help dialog
      dragging support.
      Introduced a new
      Widget::computeExtentsPositionInLocalCoordinates() method that
      intersects with a ray through mouse pointer and the extents of
      the widget.

2014-08-28 15:11  robert

    * src/osgVolume/MultipassTechnique.cpp: Improved support for
      controlling the ShadingModel via the VolumeSettings object

2014-08-28 09:42  robert

    * src/osgPresentation/deprecated/SlideShowConstructor.cpp,
      src/osgVolume/Property.cpp: Improved handling of VolumeSettings

2014-08-27 15:08  robert

    * src/osgPresentation/deprecated/SlideShowConstructor.cpp,
      src/osgUI/Widget.cpp, src/osgVolume/Property.cpp,
      src/osgWrappers/serializers/osgVolume/SampleRatioProperty.cpp:
      Changed the osgUI behaviour so that events are set to be handled
      by Widgets that have focus even if they don't directly use them.

2014-08-27 15:07  robert

    * src/osg/NodeVisitor.cpp: Changed the
      NodeVisitor::apply(Drawable&) to call apply(Node&)

2014-08-27 09:25  robert

    * include/osgDB/Serializer,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added
      support for getting osgVolumre::Property::ModifieCount

2014-08-25 16:56  robert

    * include/osgDB/Serializer, include/osgVolume/Property,
      include/osgVolume/VolumeSettings, src/osgVolume/Property.cpp,
      src/osgWrappers/serializers/osgVolume/Property.cpp,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added
      Property::getModifiedCount() + dirty() to help with tracking
      changes. Added VolumeSettings serializers for Property objects

2014-08-25 13:43  robert

    * include/osg/StateSet, src/osg/NodeVisitor.cpp,
      src/osg/StateSet.cpp: Changed StateSet::ParentList from
      vector<Object*> to vector<Node*> to reflect that Drawable is now
      a Node.

2014-08-22 19:00  robert

    * include/osgUI/Style, src/osgUI/Popup.cpp, src/osgUI/Style.cpp:
      Improved handling of setting of the depth of the UI.

2014-08-20 14:15  robert

    * src/osgUI/Style.cpp: Reordered method implemenations to make it
      easier to compare similar methods

2014-08-19 16:58  robert

    * src/osgPresentation/deprecated/SlideShowConstructor.cpp: Added
      toggling on/off of the VolumeSettings ui via the 'E' key.

2014-08-19 16:37  robert

    * src/osgPresentation/deprecated/SlideShowConstructor.cpp: Updated
      VolumeSettings.lua reference to use ui prefix to work with the
      new OpenSceneGraph-Data/ui/VolumeSettings.lua file.

2014-08-19 09:27  robert

    * src/osgPlugins/md2/ReaderWriterMD2.cpp: Fixed MD2 danglng pointer
      crash.

2014-08-19 09:00  robert

    * examples/osgcallback/osgcallback.cpp: Fixed build

2014-08-19 08:57  robert

    * src/osgUI/Style.cpp: Fixed build

2014-08-14 19:00  robert

    * include/osgUI/ComboBox, src/osgUI/ComboBox.cpp,
      src/osgWrappers/serializers/osgUI/ComboBox.cpp: Added support for
      ComboBox::currentIndexChanged*(uint) callback API.

2014-08-13 09:24  robert

    * src/osgPresentation/deprecated/SlideShowConstructor.cpp: Resert
      default value to 1.0

2014-08-08 16:42  robert

    * src/osgPlugins/txp/ReaderWriterTXP.cpp: From Ryan Kawicki, "There
      is an issue where the model insets of a terrex terrain are being
      removed during the loading process. The issue is described below.
     
      - the issue here is that the plugin is removing group nodes if
      that group node only has one child. becuase transforms are also
      group nodes, there were cases when the transform would have only
      one child under it and would cause it to remove the translation
      portion. this would cause all the vertex data to be loaded around
      the last matrix operation, which in our case was the origin
      (0,0,0).
     
      We work off of OSG 2.8.1 but see that this has not been addressed
      on latest yet. I’ve tested this against 2.8.1 and have cleanly
      applied it to my local repository off of latest."

2014-08-08 16:34  robert

    * src/osgUtil/RenderStage.cpp: From Tim George, "Currently there is
      a problem with using a camera with a viewport with a non 0 offset
      and also using an FBO. The problem is that only area made up of
      the viewports width and height is drawn based on an offset of 0,0
      instead of using the viewports offset.
     
      It is caused by line 991 in RenderStage.cpp:
     
     
      Code:
      fbo_ext->glBlitFramebuffer(
      0, 0, static_cast<GLint>(_viewport->width()),
      static_cast<GLint>(_viewport->height()),
      0, 0, static_cast<GLint>(_viewport->width()),
      static_cast<GLint>(_viewport->height()),
      blitMask, GL_NEAREST);
     
     
     
      which is not taking into account the viewport x and y when
      performing the blit. It probably should be:
     
     
      Code:
      fbo_ext->glBlitFramebuffer(
      static_cast<GLint>(_viewport->x()),
      static_cast<GLint>(_viewport->y()),
      static_cast<GLint>(_viewport->width()) +
      static_cast<GLint>(_viewport->x()),
      static_cast<GLint>(_viewport->height()) +
      static_cast<GLint>(_viewport->y()),
      static_cast<GLint>(_viewport->x()),
      static_cast<GLint>(_viewport->y()),
      static_cast<GLint>(_viewport->width()) +
      static_cast<GLint>(_viewport->x()),
      static_cast<GLint>(_viewport->height()) +
      static_cast<GLint>(_viewport->y()),
      blitMask, GL_NEAREST);
      "
     
      Note from Robert Osfield, made small tweak to above on merge,
      changing the width+x to x+width to make it read more naturally.

2014-08-08 16:09  robert

    * src/osgUtil/MeshOptimizers.cpp: From Marc Helbling, "please find
      a fix for the vertex pretransform visitor
      (VertexAccessOrderVisitor).
      The issue with current code is that arrays are collected *before*
      duplicating shared arrays which leads to arrays that are
      correctly duplicated but that are not reordered.
     
      Also the submitted patch contains a small cleaning in
      GeometryArrayGathrer as the _useDrawElements variable is not
      used; it is only set in the GeometryArrayGathrer constructor and
      VertexAccessOrderVisitor already checks that primitives have
      indexed type."

2014-08-08 15:45  robert

    * include/osg/Node: From Glen Waldron, "Node: patch for
      remove*Callback() methods to resolve a crash"

2014-08-08 09:28  robert

    * CMakeLists.txt, include/osg/Texture: Changes to support building
      against ANDROID under OSX.

2014-08-05 18:32  robert

    * include/osg/Callback, include/osgUI/LineEdit,
      include/osgUI/Validator, src/osgUI/CMakeLists.txt,
      src/osgUI/LineEdit.cpp, src/osgUI/Validator.cpp,
      src/osgWrappers/serializers/osgUI/DoubleValidator.cpp,
      src/osgWrappers/serializers/osgUI/IntValidator.cpp,
      src/osgWrappers/serializers/osgUI/LineEdit.cpp,
      src/osgWrappers/serializers/osgUI/Validator.cpp: Implemented
      osgUI::Validator, IntValidator and DoubleValidator classes that
      manage validation/specialization of LineEdit widgets to work with
      just integer or double values.

2014-08-01 13:07  robert

    * include/osgUI/LineEdit, src/osgUI/LineEdit.cpp: Implemented
      callbacks for validate(), textChanged() and returnPressed()

2014-08-01 10:57  robert

    * src/osgUI/ComboBox.cpp, src/osgUI/LineEdit.cpp,
      src/osgUI/PushButton.cpp, src/osgUI/Widget.cpp: Moved
      responsiblity for checking current event focus onto
      Widget::handleImplementations().
     
      Added support for closing CombinBox popup when the mouse is
      clicked outside the popup or combobox widget.

2014-07-31 18:29  robert

    * include/osg/NodeVisitor, src/osgUI/Widget.cpp,
      src/osgUtil/CullVisitor.cpp, src/osgUtil/IntersectVisitor.cpp,
      src/osgUtil/IntersectionVisitor.cpp,
      src/osgUtil/UpdateVisitor.cpp,
      src/osgWrappers/serializers/osg/NodeVisitor.cpp: Added
      NodeVisitor::INTERSECTION_VISITOR VisitorType

2014-07-30 12:48  robert

    * include/osgUI/Style, src/osgUI/ComboBox.cpp,
      src/osgUI/Dialog.cpp, src/osgUI/Popup.cpp, src/osgUI/Style.cpp:
      Fixed rendering of Popups

2014-07-30 12:47  robert

    * CMakeLists.txt: Update SO version to account for new changes to
      osg::StateSet and osgUI

2014-07-30 12:47  robert

    * include/osg/StateSet, include/osg/Version,
      include/osgUtil/CullVisitor,
      src/osgWrappers/serializers/osg/StateSet.cpp: Added
      StateSet::RenderBinMode::PROTECTED_RENDERBIN_DETAILS and
      OVERRIDE_PROTECTED_RENDERBIN_DETAILS options.

2014-07-29 15:50  robert

    * include/osgUI/ComboBox, src/osgUI/ComboBox.cpp: Added preliminary
      icon to ComboBox.

2014-07-29 15:50  robert

    * src/osgUI/LineEdit.cpp: Fixed debug comment

2014-07-29 15:50  robert

    * include/osgUI/Style, src/osgUI/Style.cpp: Implemented prelimary
      icon support allowing UI widget to place image and model based
      icons on widgets

2014-07-29 15:47  robert

    * src/osgUtil/Optimizer.cpp: Added catch for NULL Transform
      pointers getting into the _transformMap.

2014-07-28 16:19  robert

    * include/osg/ComputeBoundsVisitor,
      src/osg/ComputeBoundsVisitor.cpp: Added handling of Drawables
      added directly to scene graph without Geode decorating them.

2014-07-24 14:14  robert

    * include/osgUI/LineEdit, src/osgUI/LineEdit.cpp,
      src/osgUI/PushButton.cpp: Added support for changing background
      colour of LineEdit widget when focus changes

2014-07-24 13:25  robert

    * src/osgUI/ComboBox.cpp, src/osgUI/Dialog.cpp,
      src/osgUI/LineEdit.cpp, src/osgUI/PushButton.cpp: Refined the
      colouring of widget to be more in sync with the defaults used in
      Qt.

2014-07-23 16:36  robert

    * include/osgVolume/VolumeSettings,
      src/osgPlugins/p3d/ReaderWriterP3D.cpp,
      src/osgVolume/VolumeSettings.cpp,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added
      VolumeSettings::Filename property.

2014-07-23 15:57  robert

    * src/osgUI/Style.cpp: Changed the default text colour to black

2014-07-23 14:50  robert

    * src/osgPlugins/lua/LuaScriptEngine.cpp: Added writeFile support

2014-07-23 10:49  robert

    * src/osgPlugins/lua/LuaScriptEngine.cpp: Added
      Node:getNumParents() and Node:getParent(index) support

2014-07-22 16:02  robert

    * CMakeLists.txt, include/osg/State, include/osg/Version,
      src/osg/State.cpp, src/osgUtil/SceneView.cpp: Removed
      State::AppliedProgramObjectSet container and Obsever usage from
      osg::State to address threading bug crash.
     
      The State::AppliedProgramObjectSet wasn't ever being used
      actively in the current rev of the OSG so populating and clearing
      was no longer neccessary, allowing the code to be removed
      completely.

2014-07-21 16:36  robert

    * applications/osgviewer/osgviewer.cpp, include/osg/Types,
      src/osgPlugins/ktx/ReaderWriterKTX.h,
      src/osgPlugins/osg/BinaryStreamOperator.h,
      src/osgPlugins/pvr/ReaderWriterPVR.cpp: Centralized the calling
      of #include <stdint.h> and VS fallback into include/osg/Types
      header

2014-07-21 14:32  robert

    * src/osgUtil/CullVisitor.cpp: From Pjotr Svetachov, "I think I
      spotted some unneeded ref_ptrs in the cullvisitor. The call
      pushModelViewMatrix or pushProjectionMatrix will already keep the
      reference when adding it to the MatrixStack. In
      CullVisitor::apply
      methods for the billboard and the camera you already take a
      pointer
      instead of a ref_ptr."

2014-07-21 13:45  robert

    * src/osgText/Glyph.cpp: Added setting of glPixelStore before
      glTexSubImage2D call.

2014-07-21 13:43  robert

    * src/osgText/Glyph.cpp: From Jaap Gas, "I want to submit a bugfix
      for a crash occurring in osgText/Glyph.cpp if
      the scene tree contains (large) 2D textures from images with
      STRIDE.
     
      ============================================================================
      #0 0x00007fffe8ea4350 in __memmove_ssse3 () from /lib64/libc.so.6
      #1 0x00007fffe52ced76 in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #2 0x00007fffe52d8e86 in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #3 0x00007fffe53dd8be in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #4 0x00007fffe53c2643 in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #5 0x00007fffe53c7fdd in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #6 0x00007fffe53cbabf in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #7 0x00007fffe53cc1fa in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #8 0x00007ffff30092fd in osgText::GlyphTexture::apply
      (this=0x1bb8cf0, state=
      ...)
      at
      /d43/jaap/dev/jaapOSG/build/OpenSceneGraph3.3.1/src/osgText/Glyph.cpp:234
      #9 0x00007ffff56c30b6 in osg::State::applyAttributeOnTexUnit
      (this=0x125f180,
      unit=0, attribute=0x1bb8cf0, as=...)
      at
      /d43/jaap/dev/jaapOSG/build/OpenSceneGraph3.3.1/include/osg/State:1713
      #10 0x00007ffff56c2f3f in osg::State::applyTextureAttribute
      (this=0x125f180,
      unit=0, attribute=0x1bb8cf0)
      at
      /d43/jaap/dev/jaapOSG/build/OpenSceneGraph3.3.1/include/osg/State:411
      #11 0x00007ffff30204da in osgText::Text::drawTextWithBackdrop
      (this=0x1baed70,
      state=..., colorMultiplier=...)
      ==============================================================================
     
      The crash disappears if I either (1) disable the use of images
      with stride
      in the (public) osgGeo-library, or (2) add the following bugfix
      to Glyph.cpp.
      This combination gives me the confidence that I understand where
      this problem
      originates from, without trying to understand the full OpenGL
      details.
     
      ===============================================================================
      <at> <at> -221,7 +223,12 <at> <at>
      imageData[i] = 0;
      }
     
      + glPixelStorei(GL_UNPACK_ALIGNMENT,1);
     
      + #if !defined(OSG_GLES1_AVAILABLE) &&
      !defined(OSG_GLES2_AVAILABLE)
      + glPixelStorei(GL_UNPACK_ROW_LENGTH,getTextureWidth());
      + #endif
      +
      // allocate the texture memory.
      glTexImage2D( GL_TEXTURE_2D, 0, GL_ALPHA,
      getTextureWidth(), getTextureHeight(), 0,
      ================================================================================
     
      I have copied (and adapted) the added lines above from the same
      source file,
      where they were used in front of a similar call to
      glTexSubImage2D(.) around
      line 515.
      "

2014-07-21 12:21  robert

    * src/osgPresentation/CMakeLists.txt,
      src/osgPresentation/deprecated/SlideShowConstructor.cpp: Initial
      work on integtasting osgUI into Present3D

2014-07-21 12:18  robert

    * include/osg/NodeVisitor: Fixed indentation

2014-07-21 09:35  robert

    * src/osgUI/Style.cpp: Added debug messages

2014-07-18 17:17  robert

    * src/osgWrappers/serializers/CMakeLists.txt,
      src/osgWrappers/serializers/osg/NodeVisitor.cpp,
      src/osgWrappers/serializers/osgGA/EventVisitor.cpp,
      src/osgWrappers/serializers/osgUtil,
      src/osgWrappers/serializers/osgUtil/CMakeLists.txt,
      src/osgWrappers/serializers/osgUtil/CullVisitor.cpp,
      src/osgWrappers/serializers/osgUtil/UpdateVisitor.cpp: Added
      serailizer support for NodeVisitor, UpdateVisitor, CullVisitor
      and EventVisitor

2014-07-14 15:59  robert

    * examples/osgpresentation/osgpresentation.cpp,
      include/osgDB/Callbacks, include/osgDB/ReadFile,
      include/osgDB/ReaderWriter, include/osgDB/Registry,
      include/osgDB/WriteFile, src/osgDB/Callbacks.cpp,
      src/osgDB/ReadFile.cpp, src/osgDB/ReaderWriter.cpp,
      src/osgDB/Registry.cpp, src/osgDB/WriteFile.cpp,
      src/osgPlugins/V8/ReaderWriterV8.cpp,
      src/osgPlugins/lua/ReaderWriterLua.cpp,
      src/osgPlugins/python/ReaderWriterPython.cpp: Added
      readScript/writeScript methods to ReaderWriter

2014-07-14 14:09  robert

    * CMakeLists.txt, examples/osgpresentation/osgpresentation.cpp,
      include/osg/Version, include/osgDB/ClassInterface,
      include/osgDB/PropertyInterface, src/osgDB/CMakeLists.txt,
      src/osgDB/ClassInterface.cpp, src/osgDB/PropertyInterface.cpp,
      src/osgPlugins/lua/LuaScriptEngine.cpp,
      src/osgPlugins/lua/LuaScriptEngine.h: Renamed
      osgDB::PropertyInterface to osgDB::ClassInterface to better
      reflect it's functionality

2014-07-04 16:45  robert

    * include/osgPresentation/deprecated/SlideShowConstructor,
      include/osgVolume/Property, include/osgVolume/VolumeSettings,
      src/osgPlugins/p3d/ReaderWriterP3D.cpp,
      src/osgPresentation/deprecated/SlideShowConstructor.cpp,
      src/osgVolume/Property.cpp, src/osgVolume/VolumeSettings.cpp:
      Added preliminary support for writing VolumeSettings to disk from
      within Present3D in response to pressing and releasing 'Ctrl-S'.

2014-07-03 16:36  robert

    * src/osgVolume/Shaders/volume_accumulateSamples_iso_frag.cpp,
      src/osgVolume/Shaders/volume_accumulateSamples_mip_frag.cpp:
      Updated iso and mip shaders from OpenSceneGraph-Data.

2014-07-03 13:06  robert

    * src/osgPlugins/osc/OscSendingDevice.cpp,
      src/osgPresentation/deprecated/PropertyManager.cpp: Added virtual
      destructors

2014-07-03 13:05  robert

    * src/osgPlugins/osc/OscSendingDevice.cpp: Fixed line endings

2014-07-03 13:01  robert

    * include/osgPresentation/deprecated/SlideShowConstructor,
      src/osgPlugins/p3d/ReaderWriterP3D.cpp,
      src/osgPresentation/deprecated/SlideShowConstructor.cpp: Changed
      enum usage to use the new osgVolume::VolumeSettings versions and
      added support for reading a VolumeSettings file.

2014-07-03 10:01  robert

    * include/osgVolume/VolumeSettings,
      src/osgVolume/VolumeSettings.cpp: Refactor VolumeSettings so that
      it's subclassed from osgVolume::Property

2014-07-02 16:26  robert

    * include/osgVolume/VolumeSettings,
      src/osgPlugins/dds/ReaderWriterDDS.cpp,
      src/osgVolume/CMakeLists.txt, src/osgVolume/VolumeSettings.cpp,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added
      osgVolume::VolumeSettings object

2014-07-02 15:34  robert

    * examples/osgvolume/osgvolume.cpp: Changed the default image
      output format to .osgb as .dds isn't able to represent signed
      byte, short and int data correctly.

2014-07-02 14:14  robert

    * src/osgPlugins/osg/ReaderWriterOSG2.cpp: fixed handlng of file
      type of nested files within a .osgx, .osgt and .osgb file.

2014-07-02 10:25  robert

    * include/osgViewer/ViewerEventHandlers: From Laurens Voerman,
      "just like ClusterCullingCallback (fixed in r14322) visual studio
      likes an explicit implementation of run() for
      InteractiveImageHandler.
     
      The warning is (14 times):
      include\osgViewer/ViewerEventHandlers(542): warning C4250:
      'osgViewer::InteractiveImageHandler' : inherits
      'osgGA::EventHandler::osgGA::EventHandler::run' via dominance
      (src\osgViewer\StatsHandler.cpp)
      include\osgGA/EventHandler(45) : see declaration of
      'osgGA::EventHandler::run'
     
     
      attached a zipped version of
      include\osgViewer\ViewerEventHandlers"

2014-07-01 07:31  robert

    * applications/osgviewer/osgviewer.cpp: Added #include <stdint.h>
      to address compile issue on some Linux distro's.

2014-06-30 15:31  robert

    * examples/osgvolume/osgvolume.cpp: Add dds no flip on write option
      to prevent output of .dds volume from being flipped by the dds
      plugin.

2014-06-30 13:24  robert

    * src/osgPlugins/3ds/WriterNodeVisitor.cpp: REmoved debug cout

2014-06-30 10:13  robert

    * include/osgUtil/StateGraph: From Mikhail Izmestev, "Attached fix
      to avoid vector reallocs on push_back in
      StateGraph::moveStateGraph."

2014-06-30 09:12  robert

    * AUTHORS.txt, ChangeLog: Updated ChangeLog and AUTHORS file

2014-06-30 08:56  robert

    * CMakeLists.txt, include/osg/Version: Updated version number

2014-06-30 08:46  robert

    * include/osg/Image: From Pjotr Svetachov, "Here is a small fix for
      a overflow when editing large 3d volume data."

2014-06-30 08:20  robert

    * src/osgPlugins/svg/ReaderWriterSVG.cpp: Removed space from
      #include.

2014-06-30 07:37  robert

    * src/osgPlugins/svg/ReaderWriterSVG.cpp: From Alexander
      Sinditskiy, build fix to allow building against versions older
      than librsvg-2.36.2

2014-06-28 06:22  robert

    * include/osg/ClusterCullingCallback: Replaced using
      NodeCallback::run with explict run() implementation.

2014-06-27 15:57  robert

    * src/osgPlugins/ive/DataOutputStream.cpp: From Pjotr Svetachov, "I
      made a small change to DataOutputStream.cpp which makes saving
      Geodes possible again. This is only half a fix as it only will
      save a Drawable that is part of a Geode. But this change does not
      require a version bump of the .ive format. I tried it with a few
      datasets we have here with the 3.2 stable branch and the trunk
      with this patch and there was no difference in the .ive files
      that were produced."

2014-06-27 15:55  robert

    * src/osgUtil/DelaunayTriangulator.cpp: Removed unused method.

2014-06-27 15:48  robert

    * src/osgUtil/Tessellator.cpp: From Laurens Voerman, "attached is a
      modified version of src/osgUtil/Tessellator.cpp
      current code checks for a Nullpointer and on notify level info or
      above will inform you with a crash, by dereferencing it."

2014-06-27 15:39  robert

    * AUTHORS.txt: Updated AUTHORS file

2014-06-27 15:38  robert

    * src/osg/ApplicationUsage.cpp: Added an OSG_INIT_SINGLETON_PROXY
      to make sure that the ApplicationUsage singleton gets intialized
      before usage.

2014-06-27 15:36  robert

    * AUTHORS.txt: Updated AUTHORS file

2014-06-27 15:30  robert

    * include/osg/Camera, src/osg/GraphicsContext.cpp,
      src/osgViewer/CompositeViewer.cpp, src/osgViewer/Viewer.cpp:
      Added a render order sort to the list of Cameras being tested by
      the *Viewer::generatePointerData(..) method to ensure that the
      highest Camera gets focus.




<div><div dir="ltr">Hi All,<br><br>I have just tagged the 3.3.3 developer release.&nbsp; A quick copy and paste of what I've just written up on the website:<br><p>OpenSceneGraph-3.3.3,&nbsp;released on 19th December 2014, key deliverables in this dev release are:</p>
<ul>
<li><span><span>New 
osgTerrain::DisplacementMappingTechnique that uses sharing of geometry 
tiles and height field textures to render the terrain, reducing main 
memory and GPU memory usage to less than 40% of previous usage, and 
reduces GPU costs to around 60% of previous requirements for a terrain.</span><span><br></span></span></li>
<li>New LAS plugin (depends upon libLAS and Boost)</li>
<li>New GStreamer plugin for cross platform video</li>
<li>New OpenGL extension set-up architecture that reduces both the code 
footprint, library size and runtime memory footprint, as well as make it
 easier to extend.</li>
<li>Support for glVertexAttribDivisor via new osg::VertexAttribDivisor StateAttribute</li>
<li>Support for glBlendEquationi, glBendFunci, glColorMaski and 
glEnable/glDisablei iva new BlendEquationi, BlendFunci, ColorMaski, and 
Enablei/Disablei StateAttributes to better support Multiple Render 
Target usage.</li>
<li>New osg::ShaderStorageBufferObject class and osgssbo example.</li>
<li>New osggpucull example that demonstrates culling on the GPU.</li>
<li>Threading safety and performance improvements to the DatabasePager</li>
<li>Refactor of osg::Drawable so that it is no subclassed from osg::Node
 allow it to be directly placed in the scene graph without the need for a
 Geode parent.</li>
<li>Standardization of callbacks in Node, Drawable, StateSet and StateAttributes</li>
<li>Improved Android toolchain build</li>
<li>Improvements to QT4 and QT5 support in osgQt</li>
<li>Improvements to the new osgUI NodeKit&nbsp; and Lua Scripting support</li>
<li><span><span>Bug and build fixes</span></span></li>
</ul>
<p>source package :&nbsp;<a href="http://www.openscenegraph.org/downloads/developer_releases/OpenSceneGraph-3.3.3.zip">OpenSceneGraph-3.3.3.zip</a></p>
<p>svn tag:&nbsp;svn co&nbsp;<a href="http://svn.openscenegraph.org/osg/OpenSceneGraph/tags/OpenSceneGraph-3.3.3">http://svn.openscenegraph.org/osg/OpenSceneGraph/tags/OpenSceneGraph-3.3.3</a> OpenSceneGraph</p>
<p><br></p>
<p>Many thanks to all that have contributed with code, testing and bug fixing over the past year.&nbsp;</p>
<p>Robert.</p>
<p><br></p>
<p>-- ChangeLog since 3.3.2:</p>
<p>2014-12-19 08:27&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeModules/FindGLIB.cmake: Added if () block to avoid script<br>&nbsp;&nbsp;&nbsp; &nbsp; variables set to NOT-Found being used in searching<br><br>2014-12-19 08:25&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeModules/FindLIBLAS.cmake: Fixed script warnings<br><br>2014-12-18 17:47&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt, CMakeModules/FindLIBLAS.cmake,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/CMakeLists.txt, src/osgPlugins/las,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/las/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/las/ReaderWriterLAS.cpp: From Aitor Moreno, LAS<br>&nbsp;&nbsp;&nbsp; &nbsp; plugin - depends upon boost and liblas and liblas-c<br><br>2014-12-18 16:52&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * PlatformSpecifics/Android/≤a href="http://Application.mk.master.in">Application.mk.master.in</a>: From Adrian<br>&nbsp;&nbsp;&nbsp; &nbsp; Clark, build fix for recent Android NDK using the old Android<br>&nbsp;&nbsp;&nbsp; &nbsp; build approach.<br><br>2014-12-18 15:59&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt: From Mattias Helsing, "CMake have release 3.0 and<br>&nbsp;&nbsp;&nbsp; &nbsp; 3.1 and we have some bad checks for cmake<br>&nbsp;&nbsp;&nbsp; &nbsp; major version when settings cmake policies in CMakeLists.txt.<br>&nbsp;&nbsp;&nbsp; &nbsp; This fixes it"<br><br>2014-12-18 11:36&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * AUTHORS.txt, applications/osgversion/Contributors.cpp: Updated<br>&nbsp;&nbsp;&nbsp; &nbsp; AUTHORS<br><br>2014-12-18 11:19&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * ChangeLog: Updated ChangeLog in prep for dev release<br><br>2014-12-18 11:09&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgmovie/CMakeLists.txt: Fixed warning<br><br>2014-12-18 10:59&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/DisplaySettings, src/osg/DisplaySettings.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; DisplaySettings::s/getNvOptimusEnablement() and<br>&nbsp;&nbsp;&nbsp; &nbsp; OSG_NvOptimusEnablement env var control to control the setting of<br>&nbsp;&nbsp;&nbsp; &nbsp; the NvOptimusEnablement variable<br><br>2014-12-18 09:24&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/fbx/ReaderWriterFBX.cpp: From Sukender, "Added<br>&nbsp;&nbsp;&nbsp; &nbsp; options to the FBX writer: an ascii/binary switch, and the<br>&nbsp;&nbsp;&nbsp; &nbsp; ability to select FBX version as the SDK handles it (Ex:<br>&nbsp;&nbsp;&nbsp; &nbsp; "FBX201300").<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; This allows the user to achieve backward compatibility, and debug<br>&nbsp;&nbsp;&nbsp; &nbsp; format issues using text output."<br><br>2014-12-18 09:03&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeModules/FindGStreamer.cmake: From Mattias Helsing, "The<br>&nbsp;&nbsp;&nbsp; &nbsp; addition of the GStreamer cmake find script broke my build<br>&nbsp;&nbsp;&nbsp; &nbsp; because<br>&nbsp;&nbsp;&nbsp; &nbsp; cmake vars weren't passed correctly to find_package_handler_args,<br>&nbsp;&nbsp;&nbsp; &nbsp; so<br>&nbsp;&nbsp;&nbsp; &nbsp; while the find script didn't find a single required GStreamer lib<br>&nbsp;&nbsp;&nbsp; &nbsp; or<br>&nbsp;&nbsp;&nbsp; &nbsp; include path it still reported GSTREAMER_FOUND=TRUE (and then<br>&nbsp;&nbsp;&nbsp; &nbsp; tried to<br>&nbsp;&nbsp;&nbsp; &nbsp; compile the new plugin). This fixes it and correctly reports<br>&nbsp;&nbsp;&nbsp; &nbsp; missing<br>&nbsp;&nbsp;&nbsp; &nbsp; components."<br><br>2014-12-17 19:21&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt, CMakeModules/FindSDL2.cmake,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgmovie/CMakeLists.txt, examples/osgmovie/osgmovie.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Added support for using SDL2 to the osgmovie to enable it to<br>&nbsp;&nbsp;&nbsp; &nbsp; handle floating point audio formats<br><br>2014-12-17 19:20&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeModules/FindFFmpeg.cmake,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp: From Javier Taibo,<br>&nbsp;&nbsp;&nbsp; &nbsp; " I have found that since version 1.1, FFMPEG changed the way<br>&nbsp;&nbsp;&nbsp; &nbsp; audio streams are retrieved, from packed to planar format. SDL<br>&nbsp;&nbsp;&nbsp; &nbsp; interprets packed audio, as is used in the osgmovie example. To<br>&nbsp;&nbsp;&nbsp; &nbsp; make the audio work when the OSGffmpeg plug-in is compiled<br>&nbsp;&nbsp;&nbsp; &nbsp; against recent FFMPEG versions, FFmpegDecoderAudio must check for<br>&nbsp;&nbsp;&nbsp; &nbsp; planar formats and in these cases request the samples as packed.<br>&nbsp;&nbsp;&nbsp; &nbsp; This way all works as before. It can be checked with osgmovie<br>&nbsp;&nbsp;&nbsp; &nbsp; example application.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; $ osgmovie --audio movie.avi.ffmpeg<br>&nbsp;&nbsp;&nbsp; &nbsp; FFmpegImageStream::open audio failed, audio stream will be<br>&nbsp;&nbsp;&nbsp; &nbsp; disabled: unknown audio format<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; With the attached FFmpegDecoderAudio.cpp, audio sounds correctly.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; I am also attaching a modified version of FindFFmpeg.cmake that<br>&nbsp;&nbsp;&nbsp; &nbsp; allows to set as FFMPEG_DIR the ffmpeg compiled in the source<br>&nbsp;&nbsp;&nbsp; &nbsp; directory structure. It should not break anything as it only adds<br>&nbsp;&nbsp;&nbsp; &nbsp; some additional search paths.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; "<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Note from Robert Osfield, I have found in testing that audio<br>&nbsp;&nbsp;&nbsp; &nbsp; quality is not good for planar floating point formats, even with<br>&nbsp;&nbsp;&nbsp; &nbsp; adding support for SDL2 to the osgmovie example. I haven't yet<br>&nbsp;&nbsp;&nbsp; &nbsp; tracked down the cause of these audio problems or a solution.<br><br>2014-12-17 10:19&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/fbx/ReaderWriterFBX.cpp: From Sukender, "FBX<br>&nbsp;&nbsp;&nbsp; &nbsp; writer was writing an empty file when the scene had a root node<br>&nbsp;&nbsp;&nbsp; &nbsp; being a Geode.<br>&nbsp;&nbsp;&nbsp; &nbsp; This was caused be the change in Drawable (now derived from Node)<br>&nbsp;&nbsp;&nbsp; &nbsp; and Geode (now derived from Group).<br>&nbsp;&nbsp;&nbsp; &nbsp; This fix simply sticks with previous behaviour. Another change<br>&nbsp;&nbsp;&nbsp; &nbsp; could be to adapt WriterNodeVisitor.<br>&nbsp;&nbsp;&nbsp; &nbsp; "<br><br>2014-12-16 17:37&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/gstreamer/GStreamerImageStream.cpp: Fixed warnings<br>&nbsp;&nbsp;&nbsp; &nbsp; and memmory leaks<br><br>2014-12-16 17:15&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/gstreamer/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/gstreamer/GStreamerImageStream.cpp: Fixed warnings<br><br>2014-12-16 17:08&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/gstreamer/GStreamerImageStream.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/gstreamer/GStreamerImageStream.hpp: Improved<br>&nbsp;&nbsp;&nbsp; &nbsp; handling of invalid/unhandled files<br>&nbsp;&nbsp;&nbsp; &nbsp; Added support for ImageStream::LoopigMode variable<br>&nbsp;&nbsp;&nbsp; &nbsp; Fixed memory leak associtied with restarting videos<br>&nbsp;&nbsp;&nbsp; &nbsp; Changed Image::setData() to Image::dirty() to avoid resetting<br>&nbsp;&nbsp;&nbsp; &nbsp; data<br><br>2014-12-16 11:20&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt, CMakeModules/FindGLIB.cmake,<br>&nbsp;&nbsp;&nbsp; &nbsp; CMakeModules/FindGStreamer.cmake, src/osgPlugins/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/gstreamer,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/gstreamer/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/gstreamer/GStreamerImageStream.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/gstreamer/GStreamerImageStream.hpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/gstreamer/ReaderWriterGStreamer.cpp: From Julen<br>&nbsp;&nbsp;&nbsp; &nbsp; Garcia, "Here there is a small plugin I use to play video files.<br>&nbsp;&nbsp;&nbsp; &nbsp; It is based on GStreamer <a href="http://gstreamer.freedesktop.org">http://gstreamer.freedesktop.org</a> and I<br>&nbsp;&nbsp;&nbsp; &nbsp; have used the FFmpeg plugin as inspiration."<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; From Robert Osfield, fixed handled of row widths so that they are<br>&nbsp;&nbsp;&nbsp; &nbsp; padded to a 4 byte boundary as certain row widths were being<br>&nbsp;&nbsp;&nbsp; &nbsp; rendered incorrectly.<br><br>2014-12-16 09:34&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/TriangleLinePointIndexFunctor,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgUtil/MeshOptimizers, src/osgUtil/MeshOptimizers.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; From Marc Helbling, "please find enclosed a submission that<br>&nbsp;&nbsp;&nbsp; &nbsp; should improve the VertexAccessOrderVisitor (pre-transform)<br>&nbsp;&nbsp;&nbsp; &nbsp; optimizer:<br>&nbsp;&nbsp;&nbsp; &nbsp; * it sorts primitives to keep "more complex" primitives first;<br>&nbsp;&nbsp;&nbsp; &nbsp; maybe you'll prefer to have this as an option (but usually it<br>&nbsp;&nbsp;&nbsp; &nbsp; should make more sense to pre-transform triangles before e.g.<br>&nbsp;&nbsp;&nbsp; &nbsp; lines)<br>&nbsp;&nbsp;&nbsp; &nbsp; * currently, the visitor rely on TriangleIndexFunctor and does<br>&nbsp;&nbsp;&nbsp; &nbsp; not take care of points and lines (see<br>&nbsp;&nbsp;&nbsp; &nbsp; <a href="https://github.com/openscenegraph/osg/blob/master/include/osg/TriangleIndexFunctor#L124-130">https://github.com/openscenegraph/osg/blob/master/include/osg/TriangleIndexFunctor#L124-130</a>).<br>&nbsp;&nbsp;&nbsp; &nbsp; This can lead to issues e.g. if you store the wireframe lines<br>&nbsp;&nbsp;&nbsp; &nbsp; along with some triangles: the triangles will be reindexed but<br>&nbsp;&nbsp;&nbsp; &nbsp; not the line. I've therefore added<br>&nbsp;&nbsp;&nbsp; &nbsp; osg/include/TriangleLinePointIndexFunctor to index triangles,<br>&nbsp;&nbsp;&nbsp; &nbsp; lines and points and derived VertexReorder from this class.<br>&nbsp;&nbsp;&nbsp; &nbsp; * to avoid issues, shared arrays are duplicated. However, in some<br>&nbsp;&nbsp;&nbsp; &nbsp; cases (e.g. an UV channel shared in the geometry only) this is<br>&nbsp;&nbsp;&nbsp; &nbsp; not required. I'm adding a SharedArrayOptimizer to optimize this:<br>&nbsp;&nbsp;&nbsp; &nbsp; it looks for duplicated UVs before the array duplication and<br>&nbsp;&nbsp;&nbsp; &nbsp; deduplicate arrays after.<br>&nbsp;&nbsp;&nbsp; &nbsp; "<br><br>2014-12-15 17:15&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUtil/TriStripVisitor, src/osgUtil/TriStripVisitor.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; From Marc Helbling, "please find the mergeTriangleStrip code<br>&nbsp;&nbsp;&nbsp; &nbsp; merged in osgUtil::TriStripVisitor.<br>&nbsp;&nbsp;&nbsp; &nbsp; I've removed the references to DrawArrays as we should no longer<br>&nbsp;&nbsp;&nbsp; &nbsp; produce any.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Note that:<br>&nbsp;&nbsp;&nbsp; &nbsp; * as the name suggest, it only works for triangle strips but<br>&nbsp;&nbsp;&nbsp; &nbsp; could probably be easily extended to quads<br>&nbsp;&nbsp;&nbsp; &nbsp; * the resulting primitive is not highly optimized; we could<br>&nbsp;&nbsp;&nbsp; &nbsp; probably sort the strips in order to minimize the number of<br>&nbsp;&nbsp;&nbsp; &nbsp; primitive restart<br>&nbsp;&nbsp;&nbsp; &nbsp; * as we may merge DrawElementsUInt and DrawElementUShort, the<br>&nbsp;&nbsp;&nbsp; &nbsp; code will only generate DrawElementsUInt"<br><br>2014-12-10 18:23&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgSSBO/osgSSBO.cpp: Build fix<br><br>2014-12-10 13:05&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/GLExtensions, src/osg/GLExtensions.cpp: Added OpenGL<br>&nbsp;&nbsp;&nbsp; &nbsp; Transform Feedback extensions.<br><br>2014-12-10 12:23&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/CMakeLists.txt, examples/osgSSBO,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgSSBO/CMakeLists.txt, examples/osgSSBO/osgSSBO.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/BufferIndexBinding, include/osg/BufferObject,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/StateAttribute, src/osg/BufferIndexBinding.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BufferObject.cpp: From Marcus Hein, Added support for<br>&nbsp;&nbsp;&nbsp; &nbsp; OpenGL SSBO and SSBB via osg::ShaderStorageBufferObject and<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::ShaderStorageBufferBinding to core OSG library, and added<br>&nbsp;&nbsp;&nbsp; &nbsp; new osgSSBO example<br><br>2014-12-10 11:44&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/GLDefines: Added GLDefines header<br><br>2014-12-10 11:29&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/dae/daeRMaterials.cpp: From Farshid Lashkari, "The<br>&nbsp;&nbsp;&nbsp; &nbsp; Collada loader would crash while processing textures on certain<br>&nbsp;&nbsp;&nbsp; &nbsp; files. I've attached the fix."<br><br>2014-12-10 10:44&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgshaderterrain/osgshaderterrain.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/GL2Extensions, src/osg/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/GL2Extensions.cpp, src/osgAnimation/RigGeometry.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgDB/ObjectWrapper.cpp: Removed old GL2Extensions class,<br>&nbsp;&nbsp;&nbsp; &nbsp; replacing it with a typedef to GL2Extensions<br>&nbsp;&nbsp;&nbsp; &nbsp; Removed old includes to include/osg/GL2Extensions<br><br>2014-12-10 10:38&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgfpdepth/osgfpdepth.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgmultitexture/osgmultitexture.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgoit/DepthPeeling.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgscreencapture/osgscreencapture.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgvertexprogram/osgvertexprogram.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/BufferObject, include/osg/FrameBufferObject,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/GL2Extensions, include/osg/GLExtensions,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/PatchParameter, include/osg/PrimitiveSet,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/Program, include/osg/Shader, include/osg/State,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/Texture, include/osg/TextureBuffer,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/Uniform, include/osgViewer/Renderer,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/ArrayDispatchers.cpp, src/osg/BlendColor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BlendEquation.cpp, src/osg/BlendEquationi.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BlendFunc.cpp, src/osg/BlendFunci.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BufferObject.cpp, src/osg/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Capability.cpp, src/osg/ClampColor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/ColorMaski.cpp, src/osg/FragmentProgram.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/FrameBufferObject.cpp, src/osg/GLExtensions.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Geometry.cpp, src/osg/GraphicsContext.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Image.cpp, src/osg/Multisample.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/OcclusionQueryNode.cpp, src/osg/PatchParameter.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Point.cpp, src/osg/PointSprite.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/PrimitiveRestartIndex.cpp, src/osg/Program.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/SampleMaski.cpp, src/osg/Shader.cpp, src/osg/State.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Stencil.cpp, src/osg/StencilTwoSided.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Texture.cpp, src/osg/Texture1D.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Texture2DArray.cpp, src/osg/Texture2DMultisample.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Texture3D.cpp, src/osg/TextureBuffer.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/TextureCubeMap.cpp, src/osg/TextureRectangle.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Uniform.cpp, src/osg/VertexAttribDivisor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/VertexProgram.cpp, src/osgFX/SpecularHighlights.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgParticle/PrecipitationEffect.cpp, src/osgText/Glyph.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUtil/GLObjectsVisitor.cpp, src/osgUtil/RenderStage.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgViewer/Renderer.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgViewer/ScreenCaptureHandler.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgViewer/StatsHandler.cpp: Moved GL2Extensions functionality<br>&nbsp;&nbsp;&nbsp; &nbsp; into the include/osg/GLExtensions header and new GLExtensions<br>&nbsp;&nbsp;&nbsp; &nbsp; object.<br>&nbsp;&nbsp;&nbsp; &nbsp; Moved the #defines into new include/osg/GLDefines<br>&nbsp;&nbsp;&nbsp; &nbsp; Converted all GL2Extensions usage to GLExtensions usage<br><br>2014-12-10 09:11&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/GLExtensions: Streamlined the extension functions<br><br>2014-12-09 21:33&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/GL2Extensions: Added #ifdef's around GLsync typedef<br><br>2014-12-09 20:09&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/GL2Extensions, include/osg/GraphicsContext,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/Texture, include/osg/Texture3D, src/osg/Texture.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Windows build fixes<br><br>2014-12-09 19:31&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * runexamples.bat: Added new examples to runexamples.bat script<br><br>2014-12-09 19:22&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/Capability.cpp: Quietened down debug messages<br><br>2014-12-09 19:20&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/CMakeLists.txt, examples/osgblenddrawbuffers,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgblenddrawbuffers/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgblenddrawbuffers/osgblenddrawbuffers.cpp: From Wand<br>&nbsp;&nbsp;&nbsp; &nbsp; Rui, "I've rewritten the osgblenddrawbuffers example to use the<br>&nbsp;&nbsp;&nbsp; &nbsp; new BlendFunci and Capability classes. Hope it will tell others<br>&nbsp;&nbsp;&nbsp; &nbsp; how to make use of the new functionality and why they are<br>&nbsp;&nbsp;&nbsp; &nbsp; important in modern MRT-based applications."<br><br>2014-12-09 18:30&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgfpdepth/osgfpdepth.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgoit/DepthPeeling.cpp, include/osg/FrameBufferObject,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/GL2Extensions, include/osg/GraphicsContext,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BufferObject.cpp, src/osg/FrameBufferObject.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/GL2Extensions.cpp, src/osg/GraphicsContext.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/OcclusionQueryNode.cpp, src/osg/Texture.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Texture3D.cpp, src/osg/TextureRectangle.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUtil/RenderStage.cpp: Moved FBO Extensions into<br>&nbsp;&nbsp;&nbsp; &nbsp; GL2Extensions.<br><br>2014-12-09 14:58&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/PrimitiveRestartIndex: Removed no longer used<br>&nbsp;&nbsp;&nbsp; &nbsp; Extension definition<br><br>2014-12-09 14:57&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/ClampColor, include/osg/ColorMaski,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/GL2Extensions, include/osg/Multisample,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/Point, include/osg/PointSprite,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/PrimitiveRestartIndex, include/osg/Stencil,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/ClampColor.cpp, src/osg/ColorMaski.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/GL2Extensions.cpp, src/osg/Multisample.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Point.cpp, src/osg/PointSprite.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/PrimitiveRestartIndex.cpp: Moved local Extensions structs<br>&nbsp;&nbsp;&nbsp; &nbsp; into GL2Extensions<br><br>2014-12-09 11:14&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/GL2Extensions, include/osg/Stencil,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/StencilTwoSided, src/osg/GL2Extensions.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Stencil.cpp, src/osg/StencilTwoSided.cpp: Moveved<br>&nbsp;&nbsp;&nbsp; &nbsp; Stencil/StencilTwoSided::Extensions into GL2Extensions<br><br>2014-12-09 10:37&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/BlendColor, include/osg/BlendEquation,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/Capability, include/osg/GL2Extensions,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BlendColor.cpp, src/osg/BlendEquation.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BlendEquationi.cpp, src/osg/Capability.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/GL2Extensions.cpp: Moved local Extensions objects to<br>&nbsp;&nbsp;&nbsp; &nbsp; GL2Extensions<br><br>2014-12-09 10:05&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgmultitexture/osgmultitexture.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/GL2Extensions, include/osg/Texture,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/Texture2DArray, include/osg/Texture3D,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/GL2Extensions.cpp, src/osg/Image.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Texture.cpp, src/osg/Texture1D.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Texture2DArray.cpp, src/osg/Texture2DMultisample.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Texture3D.cpp, src/osg/TextureBuffer.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/TextureRectangle.cpp, src/osgText/Glyph.cpp: Moved<br>&nbsp;&nbsp;&nbsp; &nbsp; Texture*::Extensions functionality into GL2Extensions<br><br>2014-12-08 16:08&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgvertexprogram/osgvertexprogram.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/FragmentProgram, include/osg/GL2Extensions,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/VertexProgram, src/osg/FragmentProgram.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/GL2Extensions.cpp, src/osg/VertexProgram.cpp: MOved<br>&nbsp;&nbsp;&nbsp; &nbsp; VertexProgram and FragmentProgram::Extensions into GL2Extensions.<br><br>2014-12-08 11:08&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUtil/CullVisitor.cpp: Fixed memory leak in<br>&nbsp;&nbsp;&nbsp; &nbsp; RenderStageCache.<br><br>2014-12-07 17:31&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgcubemap/osgcubemap.cpp, include/osg/GL2Extensions,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/SampleMaski, src/osg/GL2Extensions.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/SampleMaski.cpp: MOved SampleMaski::Extensions into<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::GL2Extensions<br><br>2014-12-05 20:05&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/GL2Extensions, include/osg/TextureCubeMap,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/GL2Extensions.cpp, src/osg/TextureCubeMap.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgFX/SpecularHighlights.cpp: Moved TextureCubeMap::Extension<br>&nbsp;&nbsp;&nbsp; &nbsp; functionality into GL2Extensions<br><br>2014-12-05 17:26&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/Drawable, include/osg/GL2Extensions,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/State, include/osgViewer/Renderer,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/ArrayDispatchers.cpp, src/osg/Drawable.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/GL2Extensions.cpp, src/osg/OcclusionQueryNode.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/State.cpp, src/osg/TextureRectangle.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgParticle/PrecipitationEffect.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgViewer/Renderer.cpp, src/osgViewer/StatsHandler.cpp: Moved<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::Drawable::Extensions into osg::GL2Extensions<br><br>2014-12-05 10:37&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgshaderterrain/osgshaderterrain.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgtransferfunction/TransferFunctionWidget.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/lua/LuaScriptEngine.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/lua/lua-5.2.3/src/lauxlib.c,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/lua/lua-5.2.3/src/lcode.c: Fixed windows build<br>&nbsp;&nbsp;&nbsp; &nbsp; warnings<br><br>2014-12-05 09:52&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/BufferObject.cpp: Windows build fix<br><br>2014-12-05 08:58&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/BufferObject, include/osg/Drawable,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/GL2Extensions, src/osg/Drawable.cpp: From the<br>&nbsp;&nbsp;&nbsp; &nbsp; GLintptr + GLsizeiptr defintions to GL2Extensions header<br><br>2014-12-04 19:03&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/BlendFunc, include/osg/GL2Extensions,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BlendFunc.cpp, src/osg/BlendFunci.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/GL2Extensions.cpp: Moved osg::BlenFunc::Extensions into<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::GL2Extensions<br><br>2014-12-04 18:13&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgscreencapture/osgscreencapture.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/BufferObject, include/osg/GL2Extensions,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/TextureBuffer, src/osg/BufferIndexBinding.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BufferObject.cpp, src/osg/GL2Extensions.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Geometry.cpp, src/osgViewer/ScreenCaptureHandler.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Moved GLBufferObject::Extensions structure into<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::GL2Extensions<br><br>2014-12-04 18:12&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgscreencapture/osgscreencapture.cpp: Removed redundent<br>&nbsp;&nbsp;&nbsp; &nbsp; spaces<br><br>2014-12-04 17:12&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/GL2Extensions, src/osg/GL2Extensions.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; glMemoryBarrier, glMapBufferRange and glBindBufferBase to<br>&nbsp;&nbsp;&nbsp; &nbsp; GL2Extensions<br><br>2014-12-04 16:28&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/VertexAttribDivisor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUtil/GLObjectsVisitor.cpp: Moved old<br>&nbsp;&nbsp;&nbsp; &nbsp; GL2Extensions::Get(..) usage across to new<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::State::get&lt;GL2Extensions&gt;() usage<br><br>2014-12-04 16:22&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgshaderterrain/osgshaderterrain.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/GL2Extensions, include/osg/State,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/FrameBufferObject.cpp, src/osg/GL2Extensions.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/PatchParameter.cpp, src/osg/Program.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/Shader.cpp, src/osg/State.cpp: Ported GL2Extentions<br>&nbsp;&nbsp;&nbsp; &nbsp; across to using the new GL extensions approach - cutting code<br>&nbsp;&nbsp;&nbsp; &nbsp; count by 3000 lines!<br><br>2014-12-04 15:10&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgDB/DatabasePager.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUtil/IncrementalCompileOperation.cpp: Build fix for when<br>&nbsp;&nbsp;&nbsp; &nbsp; ref_ptr&lt;&gt; auto conversion is disabled<br><br>2014-12-03 17:31&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgmultiplerendertargets/osgmultiplerendertargets.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/Capability, include/osg/StateAttribute,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/CMakeLists.txt, src/osg/Capability.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::Capability and Cabibilityi base classes to wrap up<br>&nbsp;&nbsp;&nbsp; &nbsp; glEnable/glDisable + glEnablei/glDisablei functionality, with<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::Enablei and osg::Disablei concrete implementations.<br><br>2014-12-02 17:12&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/BlendEquation, include/osg/BlendEquationi,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/BlendFunc, include/osg/BlendFunci,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/ColorMaski, src/osg/BlendEquation.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BlendEquationi.cpp, src/osg/BlendFunc.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BlendFunci.cpp, src/osg/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/ColorMaski.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osg/BlendEquationi.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osg/BlendFunci.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osg/ColorMaski.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::BlendFunci, osg::BlendEquationi and osg::ColorMaski<br>&nbsp;&nbsp;&nbsp; &nbsp; StateAttrirbutes that wrap the glBlendFunci, glBlendEquationi and<br>&nbsp;&nbsp;&nbsp; &nbsp; glColorMaski functions<br><br>2014-12-02 15:37&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/BlendEquation, include/osg/BlendFunc,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/BlendEquation.cpp, src/osg/BlendFunc.cpp: Moved<br>&nbsp;&nbsp;&nbsp; &nbsp; BlendEquation across to using the new GL extension setup<br>&nbsp;&nbsp;&nbsp; &nbsp; approach.<br><br>2014-12-02 15:21&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgblendequation/osgblendequation.cpp: Fixed typo<br><br>2014-12-02 11:10&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/BlendFunc, include/osg/State, src/osg/BlendFunc.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Added a template get and get_exisiting method into osg::State<br>&nbsp;&nbsp;&nbsp; &nbsp; that implements a new mechanism for managing OpenGL extensions.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Refactored the BendFunc::Extensions usage to simplify it<br>&nbsp;&nbsp;&nbsp; &nbsp; utilizing the new osg::State extension mechanism.<br><br>2014-11-28 16:20&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * PlatformSpecifics/Android/android.toolchain.cmake: From Rafa<br>&nbsp;&nbsp;&nbsp; &nbsp; Gaitan, "I'm attaching also a new version of the toolchain with<br>&nbsp;&nbsp;&nbsp; &nbsp; support for the r10c ndk. This fixes some CMake Warnings and<br>&nbsp;&nbsp;&nbsp; &nbsp; allows to use the toolchain in macosx."<br><br>2014-11-28 16:10&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt, include/OpenThreads/Version, include/osg/Version,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/OpenThreads/CMakeLists.txt, src/osg/CMakeLists.txt: Removed<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/Version and include/OpenThreads/Version headers as<br>&nbsp;&nbsp;&nbsp; &nbsp; these are autogenerated.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Changed the paths for the OpenThreads/osg Version headers to be<br>&nbsp;&nbsp;&nbsp; &nbsp; placed in the PROJECT_BINARY_DIR.<br><br>2014-11-28 10:54&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/BufferObject, include/osgDB/ConvertUTF,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/OpenThreads/pthreads/PThread.cpp, src/osg/GLExtensions.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Standardized on defined(__ANDROID__)<br><br>2014-11-28 10:52&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/lua/lua-5.2.3/src/llex.c,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/lua/lua-5.2.3/src/luaconf.h: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; getlocaledecpoint() workaround for Android build of lua plugin<br><br>2014-11-27 15:54&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgTerrain/GeometryPool.cpp, src/osgTerrain/shaders,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgTerrain/shaders/terrain_displacement_mapping_frag.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgTerrain/shaders/terrain_displacement_mapping_vert.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Added in source shaders<br><br>2014-11-27 15:39&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgTerrain/GeometryPool.cpp: Changed the name of shader files<br><br>2014-11-26 20:40&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/CMakeLists.txt: From Jason Beverage, "It looks like the<br>&nbsp;&nbsp;&nbsp; &nbsp; Callback header got accidentally removed from the CMakeLists.txt<br>&nbsp;&nbsp;&nbsp; &nbsp; in the submission yesterday for the geometry instancing example."<br><br>2014-11-26 19:05&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgTerrain/DisplacementMappingTechnique,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgTerrain/GeometryPool: Windows build fix<br><br>2014-11-26 17:08&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * applications/present3D/deprecated/Cluster.h: Fixed warnings<br><br>2014-11-26 17:04&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgQt/GraphicsWindowQt.cpp: Fixed warnings<br><br>2014-11-26 16:29&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/ffmpeg/CMakeLists.txt: Fixed deprecated warnings<br><br>2014-11-26 16:15&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/pdf/CMakeLists.txt: Fixed warning<br><br>2014-11-26 16:04&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgcluster/osgcluster.cpp: Fixed warnings.<br><br>2014-11-26 16:00&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/lwo/Object.cpp: Fixed warning<br><br>2014-11-26 15:59&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgWrappers/deprecated-dotosg/osg/StateSet.cpp: Fixed warning<br><br>2014-11-26 14:06&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgWrappers/serializers/osgTerrain/DisplacementMappingTechnique.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Added osgTerrain::DisplacementMappingTechnique serializer<br><br>2014-11-26 14:04&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgterrain/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgterrain/ShaderTerrain.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgterrain/ShaderTerrain.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgterrain/osgterrain.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgTerrain/DisplacementMappingTechnique,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgTerrain/GeometryPool, src/osgTerrain/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgTerrain/DisplacementMappingTechnique.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgTerrain/GeometryPool.cpp: Renamed ShaderTerrain to<br>&nbsp;&nbsp;&nbsp; &nbsp; DisplacementMappingTechnique and moved it from the osgterrain<br>&nbsp;&nbsp;&nbsp; &nbsp; example testbed into the osgTerrain NodeKit<br><br>2014-11-26 13:36&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgterrain/ShaderTerrain.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgterrain/ShaderTerrain.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgTerrain/GeometryPool, src/osgTerrain/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgTerrain/GeometryPool.cpp: Moved osgTerrain::GeometryPool<br>&nbsp;&nbsp;&nbsp; &nbsp; from osgterrain example into osgTerrain NodeKit<br><br>2014-11-25 14:37&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/CMakeLists.txt: Removed GL header as it's already<br>&nbsp;&nbsp;&nbsp; &nbsp; included via the ${OPENSCENEGRAPH_OPENGL_HEADER} entry.<br><br>2014-11-25 10:58&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/CMakeLists.txt, examples/osggpucull,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osggpucull/AggregateGeometryVisitor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osggpucull/AggregateGeometryVisitor.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osggpucull/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osggpucull/DrawIndirectPrimitiveSet.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osggpucull/DrawIndirectPrimitiveSet.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osggpucull/GpuCullShaders.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osggpucull/ShapeToGeometry.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osggpucull/ShapeToGeometry.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osggpucull/osggpucull.cpp, include/osg/BufferTemplate,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/CMakeLists.txt: From PawelKsiezopolski, "This submission<br>&nbsp;&nbsp;&nbsp; &nbsp; contains a new example for OSG : a geometry instancing rendering<br>&nbsp;&nbsp;&nbsp; &nbsp; algorithm consisting of two consequent phases :<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; - first phase is a GLSL shader performing object culling and LOD<br>&nbsp;&nbsp;&nbsp; &nbsp; picking ( a culling shader ).<br>&nbsp;&nbsp;&nbsp; &nbsp; Every culled object is represented as GL_POINT in the input<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::Geometry.<br>&nbsp;&nbsp;&nbsp; &nbsp; The output of the culling shader is a set of object LODs that<br>&nbsp;&nbsp;&nbsp; &nbsp; need to be rendered.<br>&nbsp;&nbsp;&nbsp; &nbsp; The output is stored in texture buffer objects. No pixel is drawn<br>&nbsp;&nbsp;&nbsp; &nbsp; to the screen<br>&nbsp;&nbsp;&nbsp; &nbsp; because GL_RASTERIZER_DISCARD mode is used.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; - second phase draws osg::Geometry containing merged LODs using<br>&nbsp;&nbsp;&nbsp; &nbsp; glDrawArraysIndirect()<br>&nbsp;&nbsp;&nbsp; &nbsp; function. Information about quantity of instances to render, its<br>&nbsp;&nbsp;&nbsp; &nbsp; positions and other<br>&nbsp;&nbsp;&nbsp; &nbsp; parameters is sourced from texture buffer objects filled in the<br>&nbsp;&nbsp;&nbsp; &nbsp; first phase.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; The example uses various OpenGL 4.2 features such as texture<br>&nbsp;&nbsp;&nbsp; &nbsp; buffer objects,<br>&nbsp;&nbsp;&nbsp; &nbsp; atomic counters, image units and functions defined in<br>&nbsp;&nbsp;&nbsp; &nbsp; GL_ARB_shader_image_load_store<br>&nbsp;&nbsp;&nbsp; &nbsp; extension to achieve its goal and thus will not work on graphic<br>&nbsp;&nbsp;&nbsp; &nbsp; cards with older OpenGL<br>&nbsp;&nbsp;&nbsp; &nbsp; versions.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; The example was tested on Linux and Windows with NVidia 570 and<br>&nbsp;&nbsp;&nbsp; &nbsp; 580 cards.<br>&nbsp;&nbsp;&nbsp; &nbsp; The tests on AMD cards were not conducted ( due to lack of it ).<br>&nbsp;&nbsp;&nbsp; &nbsp; The tests were performed using OSG revision 14088.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; The main advantages of this rendering method :<br>&nbsp;&nbsp;&nbsp; &nbsp; - instanced rendering capable of drawing thousands of different<br>&nbsp;&nbsp;&nbsp; &nbsp; objects with<br>&nbsp;&nbsp;&nbsp; &nbsp; almost no CPU intervention ( cull and draw times are close to 0<br>&nbsp;&nbsp;&nbsp; &nbsp; ms ).<br>&nbsp;&nbsp;&nbsp; &nbsp; - input objects may be sourced from any OSG graph ( for example -<br>&nbsp;&nbsp;&nbsp; &nbsp; information about<br>&nbsp;&nbsp;&nbsp; &nbsp; object points may be stored in a PagedLOD graph. This way we may<br>&nbsp;&nbsp;&nbsp; &nbsp; cover the whole<br>&nbsp;&nbsp;&nbsp; &nbsp; countries with trees, buildings and other objects ).<br>&nbsp;&nbsp;&nbsp; &nbsp; Furthermore if we create osgDB plugins that generate data on the<br>&nbsp;&nbsp;&nbsp; &nbsp; fly, we may<br>&nbsp;&nbsp;&nbsp; &nbsp; generate information for every grass blade for that country.<br>&nbsp;&nbsp;&nbsp; &nbsp; - every object may have its own parameters and thus may be<br>&nbsp;&nbsp;&nbsp; &nbsp; distinct from other objects<br>&nbsp;&nbsp;&nbsp; &nbsp; of the same type.<br>&nbsp;&nbsp;&nbsp; &nbsp; - relatively low memory footprint ( single object information is<br>&nbsp;&nbsp;&nbsp; &nbsp; stored in a few<br>&nbsp;&nbsp;&nbsp; &nbsp; vertex attributes ).<br>&nbsp;&nbsp;&nbsp; &nbsp; - no GPU-&gt;CPU roundtrip typical for such methods ( method uses<br>&nbsp;&nbsp;&nbsp; &nbsp; atomic counters<br>&nbsp;&nbsp;&nbsp; &nbsp; and glDrawArraysIndirect() function instead of OpenGL queries.<br>&nbsp;&nbsp;&nbsp; &nbsp; This way<br>&nbsp;&nbsp;&nbsp; &nbsp; information about quantity of rendered objects never goes back to<br>&nbsp;&nbsp;&nbsp; &nbsp; CPU.<br>&nbsp;&nbsp;&nbsp; &nbsp; The typical GPU-&gt;CPU roundtrip cost is about 2 ms ).<br>&nbsp;&nbsp;&nbsp; &nbsp; - this example also shows how to render dynamic objects ( objects<br>&nbsp;&nbsp;&nbsp; &nbsp; that may change<br>&nbsp;&nbsp;&nbsp; &nbsp; its position ) with moving parts ( like car wheels or airplane<br>&nbsp;&nbsp;&nbsp; &nbsp; propellers ) .<br>&nbsp;&nbsp;&nbsp; &nbsp; The obvious extension to that dynamic method would be the<br>&nbsp;&nbsp;&nbsp; &nbsp; animated crowd rendering.<br>&nbsp;&nbsp;&nbsp; &nbsp; - rendered objects may be easily replaced ( there is no need to<br>&nbsp;&nbsp;&nbsp; &nbsp; process the whole<br>&nbsp;&nbsp;&nbsp; &nbsp; OSG graphs, because these graphs store only positional<br>&nbsp;&nbsp;&nbsp; &nbsp; information ).<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; The main disadvantages of a method :<br>&nbsp;&nbsp;&nbsp; &nbsp; - the maximum quantity of objects to render must be known<br>&nbsp;&nbsp;&nbsp; &nbsp; beforehand<br>&nbsp;&nbsp;&nbsp; &nbsp; ( because texture buffer objects holding data between phases have<br>&nbsp;&nbsp;&nbsp; &nbsp; constant size ).<br>&nbsp;&nbsp;&nbsp; &nbsp; - OSG statistics are flawed ( they don't know anymore how many<br>&nbsp;&nbsp;&nbsp; &nbsp; objects are drawn ).<br>&nbsp;&nbsp;&nbsp; &nbsp; - osgUtil::Intersection does not work<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Example application may be used to make some performance tests,<br>&nbsp;&nbsp;&nbsp; &nbsp; so below you<br>&nbsp;&nbsp;&nbsp; &nbsp; will find some extended parameter description :<br>&nbsp;&nbsp;&nbsp; &nbsp; --skip-dynamic - skip rendering of dynamic objects if you only<br>&nbsp;&nbsp;&nbsp; &nbsp; want to<br>&nbsp;&nbsp;&nbsp; &nbsp; observe static object statistics<br>&nbsp;&nbsp;&nbsp; &nbsp; --skip-static - the same for static objects<br>&nbsp;&nbsp;&nbsp; &nbsp; --dynamic-area-size - size of the area for dynamic rendering.<br>&nbsp;&nbsp;&nbsp; &nbsp; Default = 1000 meters<br>&nbsp;&nbsp;&nbsp; &nbsp; ( square 1000m x 1000m ). Along with density defines<br>&nbsp;&nbsp;&nbsp; &nbsp; how many dynamic objects is there in the example.<br>&nbsp;&nbsp;&nbsp; &nbsp; --static-area-size - the same for static objects. Default = 2000<br>&nbsp;&nbsp;&nbsp; &nbsp; meters<br>&nbsp;&nbsp;&nbsp; &nbsp; ( square 2000m x 2000m ).<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Example application defines some parameters (density, LOD ranges,<br>&nbsp;&nbsp;&nbsp; &nbsp; object's triangle count).<br>&nbsp;&nbsp;&nbsp; &nbsp; You may manipulate its values using below described modifiers:<br>&nbsp;&nbsp;&nbsp; &nbsp; --density-modifier - density modifier in percent. Default = 100%.<br>&nbsp;&nbsp;&nbsp; &nbsp; Density ( along with LOD ranges ) defines maximum<br>&nbsp;&nbsp;&nbsp; &nbsp; quantity of rendered objects. registerType() function<br>&nbsp;&nbsp;&nbsp; &nbsp; accepts maximum density ( in objects per square kilometer )<br>&nbsp;&nbsp;&nbsp; &nbsp; as its parameter.<br>&nbsp;&nbsp;&nbsp; &nbsp; --lod-modifier - defines the LOD ranges. Default = 100%.<br>&nbsp;&nbsp;&nbsp; &nbsp; --triangle-modifier - defines the number of triangles in finally<br>&nbsp;&nbsp;&nbsp; &nbsp; rendered objects.<br>&nbsp;&nbsp;&nbsp; &nbsp; Default = 100 %.<br>&nbsp;&nbsp;&nbsp; &nbsp; --instances-per-cell - for static rendering the application<br>&nbsp;&nbsp;&nbsp; &nbsp; builds OSG graph using<br>&nbsp;&nbsp;&nbsp; &nbsp; InstanceCell class ( this class is a modified version of Cell<br>&nbsp;&nbsp;&nbsp; &nbsp; class<br>&nbsp;&nbsp;&nbsp; &nbsp; from osgforest example - it builds simple quadtree from a list<br>&nbsp;&nbsp;&nbsp; &nbsp; of static instances ). This parameter defines maximum number<br>&nbsp;&nbsp;&nbsp; &nbsp; of instances in a single osg::Group in quadtree.<br>&nbsp;&nbsp;&nbsp; &nbsp; If, for example, you modify it to value=100, you will see<br>&nbsp;&nbsp;&nbsp; &nbsp; really big cull time in OSG statistics ( because resulting<br>&nbsp;&nbsp;&nbsp; &nbsp; tree generated by InstanceCell will be very deep ).<br>&nbsp;&nbsp;&nbsp; &nbsp; Default value = 4096 .<br>&nbsp;&nbsp;&nbsp; &nbsp; --export-objects - write object geometries and quadtree of<br>&nbsp;&nbsp;&nbsp; &nbsp; instances to osgt files<br>&nbsp;&nbsp;&nbsp; &nbsp; for later analysis.<br>&nbsp;&nbsp;&nbsp; &nbsp; --use-multi-draw - use glMultiDrawArraysIndirect() instead of<br>&nbsp;&nbsp;&nbsp; &nbsp; glDrawArraysIndirect() in a<br>&nbsp;&nbsp;&nbsp; &nbsp; draw shader. Thanks to this we may render all ( different )<br>&nbsp;&nbsp;&nbsp; &nbsp; objects<br>&nbsp;&nbsp;&nbsp; &nbsp; using only one draw call. Requires OpenGL version 4.3 and some<br>&nbsp;&nbsp;&nbsp; &nbsp; more<br>&nbsp;&nbsp;&nbsp; &nbsp; work from me, because now it does not work ( probably I<br>&nbsp;&nbsp;&nbsp; &nbsp; implemented<br>&nbsp;&nbsp;&nbsp; &nbsp; it wrong, or Windows NVidia driver has errors, because it hangs<br>&nbsp;&nbsp;&nbsp; &nbsp; the apllication at the moment ).<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; This application is inspired by Daniel R&aacute;kos work : "GPU based<br>&nbsp;&nbsp;&nbsp; &nbsp; dynamic geometry LOD" that<br>&nbsp;&nbsp;&nbsp; &nbsp; may be found under this address :<br>&nbsp;&nbsp;&nbsp; &nbsp; <a href="http://rastergrid.com/blog/2010/10/gpu-based-dynamic-geometry-lod/">http://rastergrid.com/blog/2010/10/gpu-based-dynamic-geometry-lod/</a><br>&nbsp;&nbsp;&nbsp; &nbsp; There are however some differences :<br>&nbsp;&nbsp;&nbsp; &nbsp; - Daniel R&aacute;kos uses GL queries to count objects to render, while<br>&nbsp;&nbsp;&nbsp; &nbsp; this example<br>&nbsp;&nbsp;&nbsp; &nbsp; uses atomic counters ( no GPU-&gt;CPU roundtrip )<br>&nbsp;&nbsp;&nbsp; &nbsp; - this example does not use transform feedback buffers to store<br>&nbsp;&nbsp;&nbsp; &nbsp; intermediate data<br>&nbsp;&nbsp;&nbsp; &nbsp; ( it uses texture buffer objects instead ).<br>&nbsp;&nbsp;&nbsp; &nbsp; - I use only the vertex shader to cull objects, whereas Daniel<br>&nbsp;&nbsp;&nbsp; &nbsp; R&aacute;kos uses vertex shader<br>&nbsp;&nbsp;&nbsp; &nbsp; and geometry shader ( because only geometry shader can send more<br>&nbsp;&nbsp;&nbsp; &nbsp; than one primitive<br>&nbsp;&nbsp;&nbsp; &nbsp; to transform feedback buffers ).<br>&nbsp;&nbsp;&nbsp; &nbsp; - objects in the example are drawn using glDrawArraysIndirect()<br>&nbsp;&nbsp;&nbsp; &nbsp; function,<br>&nbsp;&nbsp;&nbsp; &nbsp; instead of glDrawElementsInstanced().<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Finally there are some things to consider/discuss :<br>&nbsp;&nbsp;&nbsp; &nbsp; - the whole algorithm exploits nice OpenGL feature that any GL<br>&nbsp;&nbsp;&nbsp; &nbsp; buffer<br>&nbsp;&nbsp;&nbsp; &nbsp; may be bound as any type of buffer ( in our example a buffer is<br>&nbsp;&nbsp;&nbsp; &nbsp; once bound<br>&nbsp;&nbsp;&nbsp; &nbsp; as a texture buffer object, and later is bound as<br>&nbsp;&nbsp;&nbsp; &nbsp; GL_DRAW_INDIRECT_BUFFER ).<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::TextureBuffer class has one handy method to do that trick (<br>&nbsp;&nbsp;&nbsp; &nbsp; bindBufferAs() ),<br>&nbsp;&nbsp;&nbsp; &nbsp; and new primitive sets use osg::TextureBuffer as input.<br>&nbsp;&nbsp;&nbsp; &nbsp; For now I added new primitive sets to example (<br>&nbsp;&nbsp;&nbsp; &nbsp; DrawArraysIndirect and<br>&nbsp;&nbsp;&nbsp; &nbsp; MultiDrawArraysIndirect defined in<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osggpucull/DrawIndirectPrimitiveSet.h ),<br>&nbsp;&nbsp;&nbsp; &nbsp; but if Robert will accept its current implementations ( I mean -<br>&nbsp;&nbsp;&nbsp; &nbsp; primitive<br>&nbsp;&nbsp;&nbsp; &nbsp; sets that have osg::TextureBuffer in constructor ), I may add it<br>&nbsp;&nbsp;&nbsp; &nbsp; to<br>&nbsp;&nbsp;&nbsp; &nbsp; osg/include/PrimitiveSet header.<br>&nbsp;&nbsp;&nbsp; &nbsp; - I used BufferTemplate class writen and published by Aurelien in<br>&nbsp;&nbsp;&nbsp; &nbsp; submission forum<br>&nbsp;&nbsp;&nbsp; &nbsp; some time ago. For some reason this class never got into<br>&nbsp;&nbsp;&nbsp; &nbsp; osg/include, but is<br>&nbsp;&nbsp;&nbsp; &nbsp; really needed during creation of UBOs, TBOs, and possibly SSBOs<br>&nbsp;&nbsp;&nbsp; &nbsp; in the future.<br>&nbsp;&nbsp;&nbsp; &nbsp; I added std::vector specialization to that template class.<br>&nbsp;&nbsp;&nbsp; &nbsp; - I needed to create similar osg::Geometries with variable number<br>&nbsp;&nbsp;&nbsp; &nbsp; of vertices<br>&nbsp;&nbsp;&nbsp; &nbsp; ( to create different LODs in my example ). For this reason I've<br>&nbsp;&nbsp;&nbsp; &nbsp; written<br>&nbsp;&nbsp;&nbsp; &nbsp; some code allowing me to create osg::Geometries from osg::Shape<br>&nbsp;&nbsp;&nbsp; &nbsp; descendants.<br>&nbsp;&nbsp;&nbsp; &nbsp; This code may be found in ShapeToGeometry.* files. Examples of<br>&nbsp;&nbsp;&nbsp; &nbsp; use are in<br>&nbsp;&nbsp;&nbsp; &nbsp; osggpucull.cpp . The question is : should this code stay in<br>&nbsp;&nbsp;&nbsp; &nbsp; example, or should<br>&nbsp;&nbsp;&nbsp; &nbsp; it be moved to osgUtil ?<br>&nbsp;&nbsp;&nbsp; &nbsp; - this remark is important for NVidia cards on Linux and Windows<br>&nbsp;&nbsp;&nbsp; &nbsp; : if<br>&nbsp;&nbsp;&nbsp; &nbsp; you have "Sync to VBlank" turned ON in nvidia-settings and you<br>&nbsp;&nbsp;&nbsp; &nbsp; want to see<br>&nbsp;&nbsp;&nbsp; &nbsp; real GPU times in OSG statistics window, you must set the power<br>&nbsp;&nbsp;&nbsp; &nbsp; management<br>&nbsp;&nbsp;&nbsp; &nbsp; settings to "Prefer maximum performance", because when "Adaptive<br>&nbsp;&nbsp;&nbsp; &nbsp; mode" is used,<br>&nbsp;&nbsp;&nbsp; &nbsp; the graphic card's clock may be slowed down by the driver during<br>&nbsp;&nbsp;&nbsp; &nbsp; program execution<br>&nbsp;&nbsp;&nbsp; &nbsp; ( On Linux when OpenGL application starts in adaptive mode, clock<br>&nbsp;&nbsp;&nbsp; &nbsp; should work<br>&nbsp;&nbsp;&nbsp; &nbsp; as fast as possible, but after one minute of program execution,<br>&nbsp;&nbsp;&nbsp; &nbsp; the clock slows down ).<br>&nbsp;&nbsp;&nbsp; &nbsp; This happens when GPU time in OSG statistics window is shorter<br>&nbsp;&nbsp;&nbsp; &nbsp; than 3 ms.<br>&nbsp;&nbsp;&nbsp; &nbsp; "<br><br>2014-11-25 10:33&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUtil/TriStripVisitor.cpp: Removed DrawArrays optimization<br>&nbsp;&nbsp;&nbsp; &nbsp; to simplify the code and open the door to adding primitive<br>&nbsp;&nbsp;&nbsp; &nbsp; combining.<br><br>2014-11-25 10:11&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/State.cpp: Commented out<br>&nbsp;&nbsp;&nbsp; &nbsp; State::setUpVertexAttribAlias(..) debug message.<br><br>2014-11-24 15:19&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt, CMakeModules/FindAVFoundation.cmake,<br>&nbsp;&nbsp;&nbsp; &nbsp; CMakeModules/FindQuickTime.cmake,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgViewer/PixelBufferCocoa.mm: From Jan Klimke, "i noticed,<br>&nbsp;&nbsp;&nbsp; &nbsp; that there are a couple of additional flaws when building osg for<br>&nbsp;&nbsp;&nbsp; &nbsp; Mac OS X 10.10 Yosemite.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; The mac os sdk version is recognized by the current CMAKE script<br>&nbsp;&nbsp;&nbsp; &nbsp; as 10.1 instead of 10.10 since it cuts the version string from<br>&nbsp;&nbsp;&nbsp; &nbsp; the 4th place. I introduced a more reliable version checking<br>&nbsp;&nbsp;&nbsp; &nbsp; based on splitting the returned version code into MAJOR MINOR and<br>&nbsp;&nbsp;&nbsp; &nbsp; PATCH parts and reassemble the OSG sdk version afterwards.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; I replaced the existing CMake code against the following<br>&nbsp;&nbsp;&nbsp; &nbsp; (returning now version 10.10 as expected):<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; # Determine the canonical name of the selected Platform SDK<br>&nbsp;&nbsp;&nbsp; &nbsp; EXECUTE_PROCESS(COMMAND "/usr/bin/sw_vers" "-productVersion"<br>&nbsp;&nbsp;&nbsp; &nbsp; OUTPUT_VARIABLE OSG_OSX_SDK_NAME<br>&nbsp;&nbsp;&nbsp; &nbsp; OUTPUT_STRIP_TRAILING_WHITESPACE)<br>&nbsp;&nbsp;&nbsp; &nbsp; STRING(REPLACE "." ";" MACOS_VERSION_LIST ${OSG_OSX_SDK_NAME})<br>&nbsp;&nbsp;&nbsp; &nbsp; LIST(GET MACOS_VERSION_LIST 0 MACOS_VERSION_MAJOR)<br>&nbsp;&nbsp;&nbsp; &nbsp; LIST(GET MACOS_VERSION_LIST 1 MACOS_VERSION_MINOR)<br>&nbsp;&nbsp;&nbsp; &nbsp; LIST(GET MACOS_VERSION_LIST 2 MACOS_VERSION_PATCH)<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; SET(OSG_OSX_SDK_NAME<br>&nbsp;&nbsp;&nbsp; &nbsp; "macosx${MACOS_VERSION_MAJOR}.${MACOS_VERSION_MINOR}")<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Also i added the check for the new Version to some more find<br>&nbsp;&nbsp;&nbsp; &nbsp; scripts.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Additionally the nil object in Objective C now seems to be<br>&nbsp;&nbsp;&nbsp; &nbsp; equivalent with a null_ptr that cannot be passed as GLInt<br>&nbsp;&nbsp;&nbsp; &nbsp; anymore. So i switched this in the PixelBufferCocoa.mm to pass a<br>&nbsp;&nbsp;&nbsp; &nbsp; zero instead of nil.<br>&nbsp;&nbsp;&nbsp; &nbsp; "<br><br>2014-11-24 14:54&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/StateAttribute, include/osg/VertexAttribDivisor,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/CMakeLists.txt, src/osg/VertexAttribDivisor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osg/VertexAttribDivisor.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; VertexAttribDivisor class to wrap up glVertexAttribDivisor<br>&nbsp;&nbsp;&nbsp; &nbsp; function<br><br>2014-11-24 14:09&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgsimplegl3/osgsimplegl3.cpp: Fixed osgsimplegl3<br>&nbsp;&nbsp;&nbsp; &nbsp; example's set up of the main camera.<br><br>2014-11-24 14:01&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/State, src/osg/State.cpp: Added numTextureUnits<br>&nbsp;&nbsp;&nbsp; &nbsp; parameter to the osg::State::resetVertexAttributeAlias(bool,<br>&nbsp;&nbsp;&nbsp; &nbsp; unit) method, and set the default to 8.<br><br>2014-11-21 20:16&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgDB/CMakeLists.txt, src/osgDB/FileUtils.cpp: From Alberto<br>&nbsp;&nbsp;&nbsp; &nbsp; Luaces,"the current code uses the preprocessor for generating the<br>&nbsp;&nbsp;&nbsp; &nbsp; plugin path in<br>&nbsp;&nbsp;&nbsp; &nbsp; a way that when CMAKE_INSTALL_PREFIX contains something along the<br>&nbsp;&nbsp;&nbsp; &nbsp; lines<br>&nbsp;&nbsp;&nbsp; &nbsp; of<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; /usr/x86_64-linux-gnu/<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; it gets substituted as<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; /usr/x86_64-1-gnu/<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; that is, the string is preprocessed again, thereby making changes<br>&nbsp;&nbsp;&nbsp; &nbsp; to<br>&nbsp;&nbsp;&nbsp; &nbsp; anything that matches any defined symbol, as "linux" in this<br>&nbsp;&nbsp;&nbsp; &nbsp; example<br>&nbsp;&nbsp;&nbsp; &nbsp; (<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=763816">https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=763816</a>).<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Quoting that path directly in CMake scripts solves that problem.<br>&nbsp;&nbsp;&nbsp; &nbsp; "<br><br>2014-11-21 20:15&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/Image: Added comment clarifying how<br>&nbsp;&nbsp;&nbsp; &nbsp; Image::getColor(..) out of 0..1 range texcoords are handled - now<br>&nbsp;&nbsp;&nbsp; &nbsp; clamped to edge.<br><br>2014-11-21 17:22&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/Image.cpp: Implemented a clamp to edge policy for the<br>&nbsp;&nbsp;&nbsp; &nbsp; Image::g/setColor(color, texcoord).<br><br>2014-11-21 17:17&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/CopyOp.cpp: Added testing for Drawables in the<br>&nbsp;&nbsp;&nbsp; &nbsp; CopyOp::operator(Node*) to replicate the old functionality.<br><br>2014-11-21 16:27&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/Image, src/osg/Image.cpp: From Sebastian<br>&nbsp;&nbsp;&nbsp; &nbsp; Messerschmidt, "Added setColor function to modify an image based<br>&nbsp;&nbsp;&nbsp; &nbsp; on texture coordinates, parallel to the getColor functionality."<br><br>2014-11-21 14:46&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgterrain/osgterrain.cpp: Added --db-affinit cpuNum<br>&nbsp;&nbsp;&nbsp; &nbsp; option to osgterrain example to illustrate how to set the thead<br>&nbsp;&nbsp;&nbsp; &nbsp; affinity of the DatabasePager threads.<br><br>2014-11-21 10:44&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/Texture2DMultisample: From Sebastian Messerschmidt,<br>&nbsp;&nbsp;&nbsp; &nbsp; "Attached you find a change adding a getNumSamples() function to<br>&nbsp;&nbsp;&nbsp; &nbsp; retrieve the value set via setNumSamples."<br><br>2014-11-21 10:37&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt, CMakeModules/ModuleInstall.cmake,<br>&nbsp;&nbsp;&nbsp; &nbsp; CMakeModules/OsgMacroUtils.cmake,<br>&nbsp;&nbsp;&nbsp; &nbsp; PlatformSpecifics/Android/android.toolchain.cmake,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/CMakeLists.txt, src/OpenThreads/pthreads/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osg/LibraryWrapper.cpp: From Rafa<br>&nbsp;&nbsp;&nbsp; &nbsp; Gaitan, "I finally had some time to change the build system for<br>&nbsp;&nbsp;&nbsp; &nbsp; Android using a Toolchain, which, I think, will be easier to<br>&nbsp;&nbsp;&nbsp; &nbsp; maintain and uses cmake standard system to build it.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; My changes:<br>&nbsp;&nbsp;&nbsp; &nbsp; -------------------<br>&nbsp;&nbsp;&nbsp; &nbsp; - I changed the cmake files and added a toolchain for building<br>&nbsp;&nbsp;&nbsp; &nbsp; OSG in Android. The toolchain is based on the one used at OpenCV.<br>&nbsp;&nbsp;&nbsp; &nbsp; For building OSG for android you just need to do:<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; mkdir build_android_static_gles2 &amp;&amp; cd build_android_static_gles2<br>&nbsp;&nbsp;&nbsp; &nbsp; cmake .. -DANDROID_NDK=&lt;path-to-the-android-ndk&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp; -DCMAKE_TOOLCHAIN_FILE=../PlatformSpecifics/Android/android.toolchain.cmake<br>&nbsp;&nbsp;&nbsp; &nbsp; -DOPENGL_PROFILE="GLES2"<br>&nbsp;&nbsp;&nbsp; &nbsp; -DDYNAMIC_OPENTHREADS=OFF<br>&nbsp;&nbsp;&nbsp; &nbsp; -DDYNAMIC_OPENSCENEGRAPH=OFF<br>&nbsp;&nbsp;&nbsp; &nbsp; -DANDROID_NATIVE_API_LEVEL=15 # optional<br>&nbsp;&nbsp;&nbsp; &nbsp; -DANDROID_ABI=armeabim #optional<br>&nbsp;&nbsp;&nbsp; &nbsp; -DCMAKE_INSTALL_PREFIX=&lt;path-to-the-install-path&gt; #optional<br>&nbsp;&nbsp;&nbsp; &nbsp; make -j 8<br>&nbsp;&nbsp;&nbsp; &nbsp; make install<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; The OPENGL_PROFILE works as expected, changing it to "GLES1" it<br>&nbsp;&nbsp;&nbsp; &nbsp; builds and links OSG using GLES1.<br>&nbsp;&nbsp;&nbsp; &nbsp; The DYNAMIC_OPENTHREADS/DYNAMIC_OPENSCENEGRAPH parameters also<br>&nbsp;&nbsp;&nbsp; &nbsp; allows to build the dynamic libraries<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; - I also added some build fixes for android related to the<br>&nbsp;&nbsp;&nbsp; &nbsp; texture formats and added some missing USE_OSG_SERIALIZER_WRAPPER<br>&nbsp;&nbsp;&nbsp; &nbsp; in the osg serializer library to support loading osgb files in<br>&nbsp;&nbsp;&nbsp; &nbsp; static."<br><br>2014-11-21 10:21&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeModules/CheckAtomicOps.cmake: From Bj&ouml;rn Blissing, fix for<br>&nbsp;&nbsp;&nbsp; &nbsp; ambiguous defines in Atomic.cpp when compiling with MinGW and GCC<br><br>2014-11-20 17:37&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/Texture: From Claus Steuer, "XCode 6, IOs 8.1 SDK<br>&nbsp;&nbsp;&nbsp; &nbsp; Compile fix : There are some undefined texture formats when<br>&nbsp;&nbsp;&nbsp; &nbsp; compiling osg for IOs 8.1 with XCode 6 and OpenGLES2 enabled."<br><br>2014-11-20 17:00&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/State: From Pjotr Svetachov, "I was experimenting<br>&nbsp;&nbsp;&nbsp; &nbsp; with VBO's to try to get them on par with display<br>&nbsp;&nbsp;&nbsp; &nbsp; lists when drawing lots of batches and noticed that my program<br>&nbsp;&nbsp;&nbsp; &nbsp; generated a lot of unneeded glClientActiveTexture calls. Digging<br>&nbsp;&nbsp;&nbsp; &nbsp; deeper I found out it came from State::disableTexCoordPointer<br>&nbsp;&nbsp;&nbsp; &nbsp; where<br>&nbsp;&nbsp;&nbsp; &nbsp; the function would call glClientActiveTexture but not<br>&nbsp;&nbsp;&nbsp; &nbsp; glDisableClientState because the geometry didn't have texture<br>&nbsp;&nbsp;&nbsp; &nbsp; coordinates for that channel. This is because in our scene there<br>&nbsp;&nbsp;&nbsp; &nbsp; are<br>&nbsp;&nbsp;&nbsp; &nbsp; some geometries that have move than one uv channels making<br>&nbsp;&nbsp;&nbsp; &nbsp; State::_texCoordArrayList grow. Then the method<br>&nbsp;&nbsp;&nbsp; &nbsp; State::applyDisablingOfVertexAttributes() will call<br>&nbsp;&nbsp;&nbsp; &nbsp; disableTexCoordPointer multiple times.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; I rearrange the method a little to combat this. Now the logic has<br>&nbsp;&nbsp;&nbsp; &nbsp; the<br>&nbsp;&nbsp;&nbsp; &nbsp; same ordering as disableTexCoordPointersAboveAndIncluding which<br>&nbsp;&nbsp;&nbsp; &nbsp; already combats this."<br><br>2014-11-20 16:38&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/obj/ReaderWriterOBJ.cpp: From Farshid Lashkari,<br>&nbsp;&nbsp;&nbsp; &nbsp; "The obj loader was overriding the existing database path list<br>&nbsp;&nbsp;&nbsp; &nbsp; with the file path of the model, instead of prepending the file<br>&nbsp;&nbsp;&nbsp; &nbsp; path to the path list. The latter seems to be more common<br>&nbsp;&nbsp;&nbsp; &nbsp; behavior for most of the existing loader plugins. Also, the local<br>&nbsp;&nbsp;&nbsp; &nbsp; options weren't actually being used when processing the scene<br>&nbsp;&nbsp;&nbsp; &nbsp; graph for textures. I've attached the fix for both issues."<br><br>2014-11-20 10:52&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/Inventor/ConvertFromInventor.cpp: From Marc<br>&nbsp;&nbsp;&nbsp; &nbsp; Helbling, "here is a trivial fix in the Inventor plugin. In one<br>&nbsp;&nbsp;&nbsp; &nbsp; code path, the pointer validity is checked after dereferencing a<br>&nbsp;&nbsp;&nbsp; &nbsp; pointer that can be null (image-&gt;valid()) instead of calling<br>&nbsp;&nbsp;&nbsp; &nbsp; ref_ptr::valid (image.valid())."<br><br>2014-11-20 10:45&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUtil/MeshOptimizers.cpp: From Marc Helbling, "I've come<br>&nbsp;&nbsp;&nbsp; &nbsp; across scenes that contains geometries with initialized but empty<br>&nbsp;&nbsp;&nbsp; &nbsp; vertex arrays and primitives and that would make some optimizers<br>&nbsp;&nbsp;&nbsp; &nbsp; crash.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; The submission therefore only contains a test on the size of the<br>&nbsp;&nbsp;&nbsp; &nbsp; vertex array for the VertexCacheMissVisitor and the<br>&nbsp;&nbsp;&nbsp; &nbsp; VertexAccessOrderVisitor visitors."<br><br>2014-11-20 10:05&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/Texture.cpp: From Christian Ruzicka, "while testing this<br>&nbsp;&nbsp;&nbsp; &nbsp; commit on our OSG 3.2 version, I observed that the changes for<br>&nbsp;&nbsp;&nbsp; &nbsp; ETC2 brake ETC1 support. Attached you'll find the changes to get<br>&nbsp;&nbsp;&nbsp; &nbsp; ETC1 running again"<br><br>2014-11-20 09:55&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/3ds/ReaderWriter3DS.cpp: From Sukender, "Fix for<br>&nbsp;&nbsp;&nbsp; &nbsp; 3DS reader, which may read wrong triangles. Actually, indices may<br>&nbsp;&nbsp;&nbsp; &nbsp; suffer a 'short int' overflow, in two places."<br><br>2014-11-20 09:41&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/Texture2DArray.cpp: Fixed segfalt in Texture2DArray copy<br>&nbsp;&nbsp;&nbsp; &nbsp; constructor where it would apply images to an uninitialzed<br>&nbsp;&nbsp;&nbsp; &nbsp; vector.<br><br>2014-11-20 09:32&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/fbx/fbxMaterialToOsgStateSet.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/fbx/fbxMaterialToOsgStateSet.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/fbx/fbxRMesh.cpp: From Marc Helbling, "patch<br>&nbsp;&nbsp;&nbsp; &nbsp; adding support for ambient material in the FBX plugin. It's a<br>&nbsp;&nbsp;&nbsp; &nbsp; straightfoward adaptation of the emissive support and has been<br>&nbsp;&nbsp;&nbsp; &nbsp; tested on a proprietary model."<br><br>2014-11-20 09:21&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/gif/ReaderWriterGIF.cpp: From Pjotr Svetachov, fix<br>&nbsp;&nbsp;&nbsp; &nbsp; for build breakage with giflib 5.0.<br><br>2014-11-20 08:26&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * README.txt: From Per Nordqvist, "The README.txt is still somewhat<br>&nbsp;&nbsp;&nbsp; &nbsp; confusing so I have updated it"<br><br>2014-11-19 17:45&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * README.txt, configure: Removed configure script as it's no longer<br>&nbsp;&nbsp;&nbsp; &nbsp; required as cmake . will now default to Release<br><br>2014-11-19 17:42&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt: Added CMake script to set the default<br>&nbsp;&nbsp;&nbsp; &nbsp; CMAKE_BUILD_TYPE to Release. Approach taken from simgear.<br><br>2014-11-19 17:29&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * ChangeLog, applications/osgversion/Contributors.cpp: Fixed<br>&nbsp;&nbsp;&nbsp; &nbsp; Contributors names<br><br>2014-11-19 17:10&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/gif/ReaderWriterGIF.cpp: From Clement Boesch, "Fix<br>&nbsp;&nbsp;&nbsp; &nbsp; remaining bit of Giflib5 usage"<br><br>2014-11-19 11:37&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgWrappers/deprecated-dotosg/osg/ProxyNode.cpp: From Laurens<br>&nbsp;&nbsp;&nbsp; &nbsp; Voerman, "I found a new way to crach the osgviewer:<br>&nbsp;&nbsp;&nbsp; &nbsp; osgviewer "ProxyNode { FileNameList { cow.osgt } num_children 1<br>&nbsp;&nbsp;&nbsp; &nbsp; }".osgs<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; The proxy node reader wrongly assumes options to be non NULL.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; fixed in attached zip:<br>&nbsp;&nbsp;&nbsp; &nbsp; src\osgWrappers\deprecated-dotosg\osg\ProxyNode.cpp<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; applies to both the 3.2 branch and svn trunk"<br><br>2014-11-19 11:30&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgQtWidgets/osgQtWidgets.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgQt/QGraphicsViewAdapter, include/osgQt/QWebViewImage,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgQt/QWidgetImage, src/osgQt/QGraphicsViewAdapter.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgQt/QWidgetImage.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgViewer/ViewerEventHandlers.cpp: From Wang Rui, "The<br>&nbsp;&nbsp;&nbsp; &nbsp; submission includes some fixes for osgQt library and osgQtWidgets<br>&nbsp;&nbsp;&nbsp; &nbsp; example: (1) QTextEdit now works with mouse/drag events, (2)<br>&nbsp;&nbsp;&nbsp; &nbsp; scrollbars will change when OSG window is resizing, (3) improve<br>&nbsp;&nbsp;&nbsp; &nbsp; rendering efficiency of QGraphicsViewAdapter so that it works<br>&nbsp;&nbsp;&nbsp; &nbsp; with complex Qt UI, (4) add new setBackgroundWidget() method to<br>&nbsp;&nbsp;&nbsp; &nbsp; indicate a 'background widget', which will ignore mouse/key<br>&nbsp;&nbsp;&nbsp; &nbsp; events on it and pass them to the 3D scene."<br><br>2014-11-19 10:43&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgterrain/ShaderTerrain.cpp: Changed the way that the<br>&nbsp;&nbsp;&nbsp; &nbsp; cell size is passed to the shader<br><br>2014-11-19 09:33&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/Texture.cpp: From James Turner, "Converting the loops to<br>&nbsp;&nbsp;&nbsp; &nbsp; forward versions fixed the issue. The problem is size_t is<br>&nbsp;&nbsp;&nbsp; &nbsp; unsigned; at the limit condition it doesn&rsquo;t go negative but wraps<br>&nbsp;&nbsp;&nbsp; &nbsp; around to 0xffffffffffffffff &hellip;. and boom."<br><br>2014-11-17 15:43&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/exr/ReaderWriterEXR.cpp: Fixed typo<br><br>2014-11-17 09:19&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgDB/ObjectCache.cpp: Fixed typo in comment<br><br>2014-11-14 17:44&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgterrain/ShaderTerrain.cpp: Added use of<br>&nbsp;&nbsp;&nbsp; &nbsp; GL_TRIANGLE_STRIP to cut down the size of the primitive indices<br>&nbsp;&nbsp;&nbsp; &nbsp; required.<br><br>2014-11-14 16:47&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgterrain/ShaderTerrain.cpp: Implemented skirt<br>&nbsp;&nbsp;&nbsp; &nbsp; functionality<br><br>2014-11-13 09:40&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgDB/DatabasePager, include/osgDB/ObjectCache,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgDB/Options, src/osgDB/DatabasePager.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgDB/ObjectCache.cpp, src/osgDB/Options.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgDB/Registry.cpp: Refactored the handling of use of the<br>&nbsp;&nbsp;&nbsp; &nbsp; osgDB::ObjectCache in the DatabasePager to use a local thread<br>&nbsp;&nbsp;&nbsp; &nbsp; specific ObjectCache to handle new additions and<br>&nbsp;&nbsp;&nbsp; &nbsp; then have these additions merged with the main Registry<br>&nbsp;&nbsp;&nbsp; &nbsp; ObjectCache during the main loop.<br><br>2014-11-11 18:28&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgDB/ObjectCache, include/osgDB/Registry,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgDB/CMakeLists.txt, src/osgDB/ObjectCache.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgDB/Registry.cpp: Moved implementation of ObjectCache<br>&nbsp;&nbsp;&nbsp; &nbsp; functionality out of Registry into a dedicated osgDB::ObjectCache<br>&nbsp;&nbsp;&nbsp; &nbsp; class.<br><br>2014-11-10 16:04&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgDB/DatabasePager, src/osgDB/DatabasePager.cpp: To<br>&nbsp;&nbsp;&nbsp; &nbsp; handle thread safe paging and use of the osgDB::Registry<br>&nbsp;&nbsp;&nbsp; &nbsp; ObjectCache, moved the handling of cache into<br>&nbsp;&nbsp;&nbsp; &nbsp; osgDB::DatabasePager.<br><br>2014-11-06 10:44&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgDB/InputStream.cpp: From Pjotr Svetachov, "I tried your<br>&nbsp;&nbsp;&nbsp; &nbsp; fix and it exposed a bug in my fix :)<br>&nbsp;&nbsp;&nbsp; &nbsp; The problem is that the readObjectFields method will add the<br>&nbsp;&nbsp;&nbsp; &nbsp; object to the _identifierMap. So all the other instances of that<br>&nbsp;&nbsp;&nbsp; &nbsp; image in the same file will be replaced by the created dummy<br>&nbsp;&nbsp;&nbsp; &nbsp; object. In my fix this was an dummy image and I didn't notice it<br>&nbsp;&nbsp;&nbsp; &nbsp; in our scene's, probably because it covered a small part of an<br>&nbsp;&nbsp;&nbsp; &nbsp; object. In your fix the dummy object was not an image and that<br>&nbsp;&nbsp;&nbsp; &nbsp; leads to a crash when something tries to use it as an image. I<br>&nbsp;&nbsp;&nbsp; &nbsp; have attached a small fix for this bug.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; "<br><br>2014-11-06 10:40&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/Object, include/osgDB/DatabasePager,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgUtil/IncrementalCompileOperation,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgDB/DatabasePager.cpp, src/osgDB/InputStream.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUtil/IncrementalCompileOperation.cpp: Introduced use of<br>&nbsp;&nbsp;&nbsp; &nbsp; MarkerObject to IncrmentalCompileOperation/DatabasePager as a way<br>&nbsp;&nbsp;&nbsp; &nbsp; of marking objects that have already been processed and compiled,<br>&nbsp;&nbsp;&nbsp; &nbsp; thus avoid potential threading conflicts when paged subgraphs are<br>&nbsp;&nbsp;&nbsp; &nbsp; reused.<br><br>2014-11-05 16:08&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgDB/InputStream, src/osgDB/InputStream.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; handling of the reading of field properties to a dummy object for<br>&nbsp;&nbsp;&nbsp; &nbsp; cached images to avoid threading issues associated with reusing<br>&nbsp;&nbsp;&nbsp; &nbsp; and modifying an active object.<br><br>2014-11-05 13:38&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/OperationThread.cpp: Reinstated the original mechanism<br>&nbsp;&nbsp;&nbsp; &nbsp; for OperationThread::cancel() that co-operatively releases<br>&nbsp;&nbsp;&nbsp; &nbsp; blocks/barriers to make sure the thread is able to exit<br>&nbsp;&nbsp;&nbsp; &nbsp; correctly.<br><br>2014-11-04 20:07&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgterrain/ShaderTerrain.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgterrain/ShaderTerrain.h: Improvements to the<br>&nbsp;&nbsp;&nbsp; &nbsp; ShaderTerrain experiemental terrain rendering technique.<br><br>2014-11-04 20:07&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgTerrain/TerrainTile.cpp: Changed TerrainTile::setDirty()<br>&nbsp;&nbsp;&nbsp; &nbsp; to use children needing update traversal mechanism to address<br>&nbsp;&nbsp;&nbsp; &nbsp; threadng issues.<br><br>2014-11-04 20:06&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/OpenThreads/pthreads/PThread.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/OpenThreads/pthreads/PThreadPrivateData.h: Change isRunning<br>&nbsp;&nbsp;&nbsp; &nbsp; variable to an Atomic to address possible race condition<br>&nbsp;&nbsp;&nbsp; &nbsp; asscoiated with reading and writing to the variable from<br>&nbsp;&nbsp;&nbsp; &nbsp; different threads.<br><br>2014-11-04 16:29&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp: Build fixes for<br>&nbsp;&nbsp;&nbsp; &nbsp; ffmpeg LIBAVCODEC_VERSION_MAJOR &gt;= 56<br><br>2014-11-04 11:18&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgViewer/ViewerBase.cpp: Added an InitRegistry static<br>&nbsp;&nbsp;&nbsp; &nbsp; intiialization and destrucion static to help control the order of<br>&nbsp;&nbsp;&nbsp; &nbsp; construction and destruction of the osgDB::Registry.<br><br>2014-11-04 10:46&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgQtBrowser/osgQtBrowser.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgunittests/MultiThreadRead.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgunittests/osgunittests.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osguserstats/osguserstats.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgviewerMFC/MFC_OSG.cpp, include/osg/OperationThread,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/OpenThreads/pthreads/PThread.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/OpenThreads/qt/QtThread.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/OpenThreads/sproc/SprocThread.c++,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/OpenThreads/win32/Win32Thread.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/OperationThread.cpp, src/osgDB/DatabasePager.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgDB/ImagePager.cpp, src/osgPlugins/cfg/RenderSurface.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/gif/ReaderWriterGIF.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/quicktime/QuicktimeImageStream.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/vnc/ReaderWriterVNC.cpp: Replaced use of<br>&nbsp;&nbsp;&nbsp; &nbsp; while(isRunning()) { YieldCurrentThread(); } style loops with use<br>&nbsp;&nbsp;&nbsp; &nbsp; of join() to avoid false positives being reported by valgrind<br>&nbsp;&nbsp;&nbsp; &nbsp; when using the helgrind tool for thread debugging.<br><br>2014-10-21 15:08&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgterrain/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgterrain/ShaderTerrain.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgterrain/ShaderTerrain.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; examples/osgterrain/osgterrain.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgTerrain/TerrainTile.cpp: Added experimental<br>&nbsp;&nbsp;&nbsp; &nbsp; osgTerrain::ShaderTerrain TerrainTechnique to osgterrain example<br>&nbsp;&nbsp;&nbsp; &nbsp; to flesh out new shader based displacement mapping approach to<br>&nbsp;&nbsp;&nbsp; &nbsp; osgTerrain databases.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Requires shader files place in OpenSceneGraph-Data/shaders from<br>&nbsp;&nbsp;&nbsp; &nbsp; OpenSceneGraph-Data's svn/trunk to function.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Run osgterrain example with --shader command line option to<br>&nbsp;&nbsp;&nbsp; &nbsp; select displacement mapping shader approach.<br><br>2014-10-21 14:47&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * applications/osgviewer/osgviewer.cpp: Removed --sync related code<br>&nbsp;&nbsp;&nbsp; &nbsp; as it's now integrated into osg::DisplaySettings and osgViewer<br><br>2014-10-21 14:46&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/DisplaySettings, include/osg/GraphicsContext,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/DisplaySettings.cpp, src/osg/GraphicsContext.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgViewer/CompositeViewer.cpp, src/osgViewer/Viewer.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Added osg::SyncSwapBuffersCallback to include/osg/GraphicsContext<br>&nbsp;&nbsp;&nbsp; &nbsp; and support for enabling it to include/osg/DisplaySettings, and<br>&nbsp;&nbsp;&nbsp; &nbsp; to the Viewer/CompositeViewer::realize() methods.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; To enable the sync of swap buffers set the env var<br>&nbsp;&nbsp;&nbsp; &nbsp; OSG_SYNC_SWAP_BUFFERS to ON or 1, to switch off set to OFF or 0.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; One can also use the --sync command line option for application<br>&nbsp;&nbsp;&nbsp; &nbsp; that pass on command line options to the<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::DisplaySettings::instance().<br><br>2014-10-21 08:27&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/StateSet.cpp: Removed checks against Drawable as these<br>&nbsp;&nbsp;&nbsp; &nbsp; are no longer required.<br><br>2014-09-17 17:40&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/lua/LuaScriptEngine.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/lua/LuaScriptEngine.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/lua/ReaderWriterLua.cpp: Added support for writing<br>&nbsp;&nbsp;&nbsp; &nbsp; the file path of a script to the lua package.path to help with<br>&nbsp;&nbsp;&nbsp; &nbsp; loading scripts within lua.<br><br>2014-09-16 17:40&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgvolume/osgvolume.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/p3d/ReaderWriterP3D.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/tf/ReaderWriterTF.cpp: Changed osgvolume example<br>&nbsp;&nbsp;&nbsp; &nbsp; to use the new tf plugin rather than having local code for<br>&nbsp;&nbsp;&nbsp; &nbsp; reading transfer function<br><br>2014-09-16 11:00&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/tf/ReaderWriterTF.cpp: Added write support<br><br>2014-09-15 17:53&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgDB/Registry.cpp, src/osgPlugins/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/tf, src/osgPlugins/tf/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/tf/ReaderWriterTF.cpp: Added .tf &amp; .tf-255 plugin<br>&nbsp;&nbsp;&nbsp; &nbsp; for reading ascii 1D transfer functon files in support for volume<br>&nbsp;&nbsp;&nbsp; &nbsp; rendering.<br><br>2014-09-12 14:16&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/TabWidget, src/osgUI/TabWidget.cpp: Added basic<br>&nbsp;&nbsp;&nbsp; &nbsp; frame rendering for TabWidget<br><br>2014-09-10 17:03&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/AlignmentSettings, src/osgUI/AlignmentSettings.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/TabWidget.cpp: Improved the alignment and sizing of<br>&nbsp;&nbsp;&nbsp; &nbsp; TabWidget tab headers<br><br>2014-09-10 11:59&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUI/TabWidget.cpp: Implemented the selection of tabs by<br>&nbsp;&nbsp;&nbsp; &nbsp; clicking, using mouse wheel or arrow keys.<br><br>2014-09-09 16:12&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUI/Dialog.cpp, src/osgUI/TabWidget.cpp: Improved the<br>&nbsp;&nbsp;&nbsp; &nbsp; handling of the dialog title text<br><br>2014-09-09 15:14&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/Callbacks, src/osgUI/Callbacks.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/Dialog.cpp, src/osgUI/Widget.cpp: Moved the diaglog<br>&nbsp;&nbsp;&nbsp; &nbsp; title bar widgets into the Widget::GraphicsSubgraph map to avoid<br>&nbsp;&nbsp;&nbsp; &nbsp; them poluting the Dialog's children list and to prevent them from<br>&nbsp;&nbsp;&nbsp; &nbsp; being serialized.<br><br>2014-09-09 13:37&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/TabWidget, include/osgUI/Widget,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/ComboBox.cpp, src/osgUI/Dialog.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/Label.cpp, src/osgUI/LineEdit.cpp, src/osgUI/Popup.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/PushButton.cpp, src/osgUI/Style.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/TabWidget.cpp, src/osgUI/Widget.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUI/Tab.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUI/Widget.cpp: Introduced<br>&nbsp;&nbsp;&nbsp; &nbsp; Widget::WidgetStateSet to help localize the StateSet set up by<br>&nbsp;&nbsp;&nbsp; &nbsp; Widget implementations from being serialized or<br>&nbsp;&nbsp;&nbsp; &nbsp; affecting what end users apply via the standard<br>&nbsp;&nbsp;&nbsp; &nbsp; Node::s/getStateSet().<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Further work on TabWidget.<br><br>2014-09-08 08:53&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgtransferfunction/TransferFunctionWidget.cpp: Build<br>&nbsp;&nbsp;&nbsp; &nbsp; fix<br><br>2014-09-05 16:04&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/TabWidget, src/osgUI/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/TabWidget.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUI/Tab.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUI/TabWidget.cpp: Added shell of<br>&nbsp;&nbsp;&nbsp; &nbsp; new osgUI::TabWidget class<br><br>2014-09-05 11:05&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgDB/ObjectWrapper, include/osgDB/Serializer,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgDB/ObjectWrapper.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Introduced support for specifying whether a serializer supports<br>&nbsp;&nbsp;&nbsp; &nbsp; different types of usage - one or more of READ_WRITE_PROPERTY,<br>&nbsp;&nbsp;&nbsp; &nbsp; GET_PROPERTY and SET_PROPERTY.<br><br>2014-09-03 15:54&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgVolume/VolumeSettings,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPresentation/deprecated/SlideShowConstructor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgVolume/VolumeSettings.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; setting of the IsoSurfaceProperty in VolumeSettings<br><br>2014-09-03 12:28&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/Callbacks, src/osgUI/Callbacks.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/Dialog.cpp, src/osgUI/PushButton.cpp: Added close<br>&nbsp;&nbsp;&nbsp; &nbsp; button on Dialog title bar<br><br>2014-09-02 17:01&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/ComboBox, src/osgUI/ComboBox.cpp: Refactored the<br>&nbsp;&nbsp;&nbsp; &nbsp; handling of ComboBox item picking to make it faster and more<br>&nbsp;&nbsp;&nbsp; &nbsp; reliable<br><br>2014-09-02 10:00&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUI/ComboBox.cpp: Improved handling of ComboBox popup<br>&nbsp;&nbsp;&nbsp; &nbsp; toggling<br><br>2014-09-02 09:14&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUI/Callbacks.cpp, src/osgUI/Widget.cpp: Added support for<br>&nbsp;&nbsp;&nbsp; &nbsp; scaling widgets via the scoll wheel.<br><br>2014-09-02 08:41&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgGA/KeySwitchMatrixManipulator.cpp: Removed debugging<br>&nbsp;&nbsp;&nbsp; &nbsp; message<br><br>2014-09-01 19:13&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/Callbacks, include/osgUI/Widget,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/CMakeLists.txt, src/osgUI/Callbacks.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/Dialog.cpp, src/osgUI/LineEdit.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/Widget.cpp: Added DragCallback class to help dialog<br>&nbsp;&nbsp;&nbsp; &nbsp; dragging support.<br>&nbsp;&nbsp;&nbsp; &nbsp; Introduced a new<br>&nbsp;&nbsp;&nbsp; &nbsp; Widget::computeExtentsPositionInLocalCoordinates() method that<br>&nbsp;&nbsp;&nbsp; &nbsp; intersects with a ray through mouse pointer and the extents of<br>&nbsp;&nbsp;&nbsp; &nbsp; the widget.<br><br>2014-08-28 15:11&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgVolume/MultipassTechnique.cpp: Improved support for<br>&nbsp;&nbsp;&nbsp; &nbsp; controlling the ShadingModel via the VolumeSettings object<br><br>2014-08-28 09:42&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPresentation/deprecated/SlideShowConstructor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgVolume/Property.cpp: Improved handling of VolumeSettings<br><br>2014-08-27 15:08&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPresentation/deprecated/SlideShowConstructor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/Widget.cpp, src/osgVolume/Property.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgVolume/SampleRatioProperty.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Changed the osgUI behaviour so that events are set to be handled<br>&nbsp;&nbsp;&nbsp; &nbsp; by Widgets that have focus even if they don't directly use them.<br><br>2014-08-27 15:07&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/NodeVisitor.cpp: Changed the<br>&nbsp;&nbsp;&nbsp; &nbsp; NodeVisitor::apply(Drawable&amp;) to call apply(Node&amp;)<br><br>2014-08-27 09:25&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgDB/Serializer,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; support for getting osgVolumre::Property::ModifieCount<br><br>2014-08-25 16:56&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgDB/Serializer, include/osgVolume/Property,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgVolume/VolumeSettings, src/osgVolume/Property.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgVolume/Property.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; Property::getModifiedCount() + dirty() to help with tracking<br>&nbsp;&nbsp;&nbsp; &nbsp; changes. Added VolumeSettings serializers for Property objects<br><br>2014-08-25 13:43&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/StateSet, src/osg/NodeVisitor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/StateSet.cpp: Changed StateSet::ParentList from<br>&nbsp;&nbsp;&nbsp; &nbsp; vector&lt;Object*&gt; to vector&lt;Node*&gt; to reflect that Drawable is now<br>&nbsp;&nbsp;&nbsp; &nbsp; a Node.<br><br>2014-08-22 19:00&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/Style, src/osgUI/Popup.cpp, src/osgUI/Style.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Improved handling of setting of the depth of the UI.<br><br>2014-08-20 14:15&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUI/Style.cpp: Reordered method implemenations to make it<br>&nbsp;&nbsp;&nbsp; &nbsp; easier to compare similar methods<br><br>2014-08-19 16:58&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPresentation/deprecated/SlideShowConstructor.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; toggling on/off of the VolumeSettings ui via the 'E' key.<br><br>2014-08-19 16:37&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPresentation/deprecated/SlideShowConstructor.cpp: Updated<br>&nbsp;&nbsp;&nbsp; &nbsp; VolumeSettings.lua reference to use ui prefix to work with the<br>&nbsp;&nbsp;&nbsp; &nbsp; new OpenSceneGraph-Data/ui/VolumeSettings.lua file.<br><br>2014-08-19 09:27&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/md2/ReaderWriterMD2.cpp: Fixed MD2 danglng pointer<br>&nbsp;&nbsp;&nbsp; &nbsp; crash.<br><br>2014-08-19 09:00&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgcallback/osgcallback.cpp: Fixed build<br><br>2014-08-19 08:57&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUI/Style.cpp: Fixed build<br><br>2014-08-14 19:00&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/ComboBox, src/osgUI/ComboBox.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUI/ComboBox.cpp: Added support for<br>&nbsp;&nbsp;&nbsp; &nbsp; ComboBox::currentIndexChanged*(uint) callback API.<br><br>2014-08-13 09:24&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPresentation/deprecated/SlideShowConstructor.cpp: Resert<br>&nbsp;&nbsp;&nbsp; &nbsp; default value to 1.0<br><br>2014-08-08 16:42&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/txp/ReaderWriterTXP.cpp: From Ryan Kawicki, "There<br>&nbsp;&nbsp;&nbsp; &nbsp; is an issue where the model insets of a terrex terrain are being<br>&nbsp;&nbsp;&nbsp; &nbsp; removed during the loading process. The issue is described below.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; - the issue here is that the plugin is removing group nodes if<br>&nbsp;&nbsp;&nbsp; &nbsp; that group node only has one child. becuase transforms are also<br>&nbsp;&nbsp;&nbsp; &nbsp; group nodes, there were cases when the transform would have only<br>&nbsp;&nbsp;&nbsp; &nbsp; one child under it and would cause it to remove the translation<br>&nbsp;&nbsp;&nbsp; &nbsp; portion. this would cause all the vertex data to be loaded around<br>&nbsp;&nbsp;&nbsp; &nbsp; the last matrix operation, which in our case was the origin<br>&nbsp;&nbsp;&nbsp; &nbsp; (0,0,0).<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; We work off of OSG 2.8.1 but see that this has not been addressed<br>&nbsp;&nbsp;&nbsp; &nbsp; on latest yet. I&rsquo;ve tested this against 2.8.1 and have cleanly<br>&nbsp;&nbsp;&nbsp; &nbsp; applied it to my local repository off of latest."<br><br>2014-08-08 16:34&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUtil/RenderStage.cpp: From Tim George, "Currently there is<br>&nbsp;&nbsp;&nbsp; &nbsp; a problem with using a camera with a viewport with a non 0 offset<br>&nbsp;&nbsp;&nbsp; &nbsp; and also using an FBO. The problem is that only area made up of<br>&nbsp;&nbsp;&nbsp; &nbsp; the viewports width and height is drawn based on an offset of 0,0<br>&nbsp;&nbsp;&nbsp; &nbsp; instead of using the viewports offset.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; It is caused by line 991 in RenderStage.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Code:<br>&nbsp;&nbsp;&nbsp; &nbsp; fbo_ext-&gt;glBlitFramebuffer(<br>&nbsp;&nbsp;&nbsp; &nbsp; 0, 0, static_cast&lt;GLint&gt;(_viewport-&gt;width()),<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;height()),<br>&nbsp;&nbsp;&nbsp; &nbsp; 0, 0, static_cast&lt;GLint&gt;(_viewport-&gt;width()),<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;height()),<br>&nbsp;&nbsp;&nbsp; &nbsp; blitMask, GL_NEAREST);<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; which is not taking into account the viewport x and y when<br>&nbsp;&nbsp;&nbsp; &nbsp; performing the blit. It probably should be:<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Code:<br>&nbsp;&nbsp;&nbsp; &nbsp; fbo_ext-&gt;glBlitFramebuffer(<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;x()),<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;y()),<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;width()) +<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;x()),<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;height()) +<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;y()),<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;x()),<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;y()),<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;width()) +<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;x()),<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;height()) +<br>&nbsp;&nbsp;&nbsp; &nbsp; static_cast&lt;GLint&gt;(_viewport-&gt;y()),<br>&nbsp;&nbsp;&nbsp; &nbsp; blitMask, GL_NEAREST);<br>&nbsp;&nbsp;&nbsp; &nbsp; "<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Note from Robert Osfield, made small tweak to above on merge,<br>&nbsp;&nbsp;&nbsp; &nbsp; changing the width+x to x+width to make it read more naturally.<br><br>2014-08-08 16:09&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUtil/MeshOptimizers.cpp: From Marc Helbling, "please find<br>&nbsp;&nbsp;&nbsp; &nbsp; a fix for the vertex pretransform visitor<br>&nbsp;&nbsp;&nbsp; &nbsp; (VertexAccessOrderVisitor).<br>&nbsp;&nbsp;&nbsp; &nbsp; The issue with current code is that arrays are collected *before*≤br>&nbsp;&nbsp;&nbsp; &nbsp; duplicating shared arrays which leads to arrays that are<br>&nbsp;&nbsp;&nbsp; &nbsp; correctly duplicated but that are not reordered.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Also the submitted patch contains a small cleaning in<br>&nbsp;&nbsp;&nbsp; &nbsp; GeometryArrayGathrer as the _useDrawElements variable is not<br>&nbsp;&nbsp;&nbsp; &nbsp; used; it is only set in the GeometryArrayGathrer constructor and<br>&nbsp;&nbsp;&nbsp; &nbsp; VertexAccessOrderVisitor already checks that primitives have<br>&nbsp;&nbsp;&nbsp; &nbsp; indexed type."<br><br>2014-08-08 15:45&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/Node: From Glen Waldron, "Node: patch for<br>&nbsp;&nbsp;&nbsp; &nbsp; remove*Callback() methods to resolve a crash"<br><br>2014-08-08 09:28&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt, include/osg/Texture: Changes to support building<br>&nbsp;&nbsp;&nbsp; &nbsp; against ANDROID under OSX.<br><br>2014-08-05 18:32&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/Callback, include/osgUI/LineEdit,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgUI/Validator, src/osgUI/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/LineEdit.cpp, src/osgUI/Validator.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUI/DoubleValidator.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUI/IntValidator.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUI/LineEdit.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUI/Validator.cpp: Implemented<br>&nbsp;&nbsp;&nbsp; &nbsp; osgUI::Validator, IntValidator and DoubleValidator classes that<br>&nbsp;&nbsp;&nbsp; &nbsp; manage validation/specialization of LineEdit widgets to work with<br>&nbsp;&nbsp;&nbsp; &nbsp; just integer or double values.<br><br>2014-08-01 13:07&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/LineEdit, src/osgUI/LineEdit.cpp: Implemented<br>&nbsp;&nbsp;&nbsp; &nbsp; callbacks for validate(), textChanged() and returnPressed()<br><br>2014-08-01 10:57&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUI/ComboBox.cpp, src/osgUI/LineEdit.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/PushButton.cpp, src/osgUI/Widget.cpp: Moved<br>&nbsp;&nbsp;&nbsp; &nbsp; responsiblity for checking current event focus onto<br>&nbsp;&nbsp;&nbsp; &nbsp; Widget::handleImplementations().<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; Added support for closing CombinBox popup when the mouse is<br>&nbsp;&nbsp;&nbsp; &nbsp; clicked outside the popup or combobox widget.<br><br>2014-07-31 18:29&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/NodeVisitor, src/osgUI/Widget.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUtil/CullVisitor.cpp, src/osgUtil/IntersectVisitor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUtil/IntersectionVisitor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUtil/UpdateVisitor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osg/NodeVisitor.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; NodeVisitor::INTERSECTION_VISITOR VisitorType<br><br>2014-07-30 12:48&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/Style, src/osgUI/ComboBox.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/Dialog.cpp, src/osgUI/Popup.cpp, src/osgUI/Style.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Fixed rendering of Popups<br><br>2014-07-30 12:47&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt: Update SO version to account for new changes to<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::StateSet and osgUI<br><br>2014-07-30 12:47&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/StateSet, include/osg/Version,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgUtil/CullVisitor,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osg/StateSet.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; StateSet::RenderBinMode::PROTECTED_RENDERBIN_DETAILS and<br>&nbsp;&nbsp;&nbsp; &nbsp; OVERRIDE_PROTECTED_RENDERBIN_DETAILS options.<br><br>2014-07-29 15:50&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/ComboBox, src/osgUI/ComboBox.cpp: Added preliminary<br>&nbsp;&nbsp;&nbsp; &nbsp; icon to ComboBox.<br><br>2014-07-29 15:50&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUI/LineEdit.cpp: Fixed debug comment<br><br>2014-07-29 15:50&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/Style, src/osgUI/Style.cpp: Implemented prelimary<br>&nbsp;&nbsp;&nbsp; &nbsp; icon support allowing UI widget to place image and model based<br>&nbsp;&nbsp;&nbsp; &nbsp; icons on widgets<br><br>2014-07-29 15:47&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUtil/Optimizer.cpp: Added catch for NULL Transform<br>&nbsp;&nbsp;&nbsp; &nbsp; pointers getting into the _transformMap.<br><br>2014-07-28 16:19&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/ComputeBoundsVisitor,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/ComputeBoundsVisitor.cpp: Added handling of Drawables<br>&nbsp;&nbsp;&nbsp; &nbsp; added directly to scene graph without Geode decorating them.<br><br>2014-07-24 14:14&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUI/LineEdit, src/osgUI/LineEdit.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/PushButton.cpp: Added support for changing background<br>&nbsp;&nbsp;&nbsp; &nbsp; colour of LineEdit widget when focus changes<br><br>2014-07-24 13:25&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUI/ComboBox.cpp, src/osgUI/Dialog.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgUI/LineEdit.cpp, src/osgUI/PushButton.cpp: Refined the<br>&nbsp;&nbsp;&nbsp; &nbsp; colouring of widget to be more in sync with the defaults used in<br>&nbsp;&nbsp;&nbsp; &nbsp; Qt.<br><br>2014-07-23 16:36&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgVolume/VolumeSettings,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/p3d/ReaderWriterP3D.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgVolume/VolumeSettings.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; VolumeSettings::Filename property.<br><br>2014-07-23 15:57&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUI/Style.cpp: Changed the default text colour to black<br><br>2014-07-23 14:50&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/lua/LuaScriptEngine.cpp: Added writeFile support<br><br>2014-07-23 10:49&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/lua/LuaScriptEngine.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; Node:getNumParents() and Node:getParent(index) support<br><br>2014-07-22 16:02&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt, include/osg/State, include/osg/Version,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osg/State.cpp, src/osgUtil/SceneView.cpp: Removed<br>&nbsp;&nbsp;&nbsp; &nbsp; State::AppliedProgramObjectSet container and Obsever usage from<br>&nbsp;&nbsp;&nbsp; &nbsp; osg::State to address threading bug crash.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; The State::AppliedProgramObjectSet wasn't ever being used<br>&nbsp;&nbsp;&nbsp; &nbsp; actively in the current rev of the OSG so populating and clearing<br>&nbsp;&nbsp;&nbsp; &nbsp; was no longer neccessary, allowing the code to be removed<br>&nbsp;&nbsp;&nbsp; &nbsp; completely.<br><br>2014-07-21 16:36&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * applications/osgviewer/osgviewer.cpp, include/osg/Types,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/ktx/ReaderWriterKTX.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/osg/BinaryStreamOperator.h,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/pvr/ReaderWriterPVR.cpp: Centralized the calling<br>&nbsp;&nbsp;&nbsp; &nbsp; of #include &lt;stdint.h&gt; and VS fallback into include/osg/Types<br>&nbsp;&nbsp;&nbsp; &nbsp; header<br><br>2014-07-21 14:32&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUtil/CullVisitor.cpp: From Pjotr Svetachov, "I think I<br>&nbsp;&nbsp;&nbsp; &nbsp; spotted some unneeded ref_ptrs in the cullvisitor. The call<br>&nbsp;&nbsp;&nbsp; &nbsp; pushModelViewMatrix or pushProjectionMatrix will already keep the<br>&nbsp;&nbsp;&nbsp; &nbsp; reference when adding it to the MatrixStack. In<br>&nbsp;&nbsp;&nbsp; &nbsp; CullVisitor::apply<br>&nbsp;&nbsp;&nbsp; &nbsp; methods for the billboard and the camera you already take a<br>&nbsp;&nbsp;&nbsp; &nbsp; pointer<br>&nbsp;&nbsp;&nbsp; &nbsp; instead of a ref_ptr."<br><br>2014-07-21 13:45&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgText/Glyph.cpp: Added setting of glPixelStore before<br>&nbsp;&nbsp;&nbsp; &nbsp; glTexSubImage2D call.<br><br>2014-07-21 13:43&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgText/Glyph.cpp: From Jaap Gas, "I want to submit a bugfix<br>&nbsp;&nbsp;&nbsp; &nbsp; for a crash occurring in osgText/Glyph.cpp if<br>&nbsp;&nbsp;&nbsp; &nbsp; the scene tree contains (large) 2D textures from images with<br>&nbsp;&nbsp;&nbsp; &nbsp; STRIDE.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; ============================================================================<br>&nbsp;&nbsp;&nbsp; &nbsp; #0 0x00007fffe8ea4350 in __memmove_ssse3 () from /lib64/libc.so.6<br>&nbsp;&nbsp;&nbsp; &nbsp; #1 0x00007fffe52ced76 in ?? () from<br>&nbsp;&nbsp;&nbsp; &nbsp; /usr/lib64/libnvidia-glcore.so.310.44<br>&nbsp;&nbsp;&nbsp; &nbsp; #2 0x00007fffe52d8e86 in ?? () from<br>&nbsp;&nbsp;&nbsp; &nbsp; /usr/lib64/libnvidia-glcore.so.310.44<br>&nbsp;&nbsp;&nbsp; &nbsp; #3 0x00007fffe53dd8be in ?? () from<br>&nbsp;&nbsp;&nbsp; &nbsp; /usr/lib64/libnvidia-glcore.so.310.44<br>&nbsp;&nbsp;&nbsp; &nbsp; #4 0x00007fffe53c2643 in ?? () from<br>&nbsp;&nbsp;&nbsp; &nbsp; /usr/lib64/libnvidia-glcore.so.310.44<br>&nbsp;&nbsp;&nbsp; &nbsp; #5 0x00007fffe53c7fdd in ?? () from<br>&nbsp;&nbsp;&nbsp; &nbsp; /usr/lib64/libnvidia-glcore.so.310.44<br>&nbsp;&nbsp;&nbsp; &nbsp; #6 0x00007fffe53cbabf in ?? () from<br>&nbsp;&nbsp;&nbsp; &nbsp; /usr/lib64/libnvidia-glcore.so.310.44<br>&nbsp;&nbsp;&nbsp; &nbsp; #7 0x00007fffe53cc1fa in ?? () from<br>&nbsp;&nbsp;&nbsp; &nbsp; /usr/lib64/libnvidia-glcore.so.310.44<br>&nbsp;&nbsp;&nbsp; &nbsp; #8 0x00007ffff30092fd in osgText::GlyphTexture::apply<br>&nbsp;&nbsp;&nbsp; &nbsp; (this=0x1bb8cf0, state=<br>&nbsp;&nbsp;&nbsp; &nbsp; ...)<br>&nbsp;&nbsp;&nbsp; &nbsp; at<br>&nbsp;&nbsp;&nbsp; &nbsp; /d43/jaap/dev/jaapOSG/build/OpenSceneGraph3.3.1/src/osgText/Glyph.cpp:234<br>&nbsp;&nbsp;&nbsp; &nbsp; #9 0x00007ffff56c30b6 in osg::State::applyAttributeOnTexUnit<br>&nbsp;&nbsp;&nbsp; &nbsp; (this=0x125f180,<br>&nbsp;&nbsp;&nbsp; &nbsp; unit=0, attribute=0x1bb8cf0, as=...)<br>&nbsp;&nbsp;&nbsp; &nbsp; at<br>&nbsp;&nbsp;&nbsp; &nbsp; /d43/jaap/dev/jaapOSG/build/OpenSceneGraph3.3.1/include/osg/State:1713<br>&nbsp;&nbsp;&nbsp; &nbsp; #10 0x00007ffff56c2f3f in osg::State::applyTextureAttribute<br>&nbsp;&nbsp;&nbsp; &nbsp; (this=0x125f180,<br>&nbsp;&nbsp;&nbsp; &nbsp; unit=0, attribute=0x1bb8cf0)<br>&nbsp;&nbsp;&nbsp; &nbsp; at<br>&nbsp;&nbsp;&nbsp; &nbsp; /d43/jaap/dev/jaapOSG/build/OpenSceneGraph3.3.1/include/osg/State:411<br>&nbsp;&nbsp;&nbsp; &nbsp; #11 0x00007ffff30204da in osgText::Text::drawTextWithBackdrop<br>&nbsp;&nbsp;&nbsp; &nbsp; (this=0x1baed70,<br>&nbsp;&nbsp;&nbsp; &nbsp; state=..., colorMultiplier=...)<br>&nbsp;&nbsp;&nbsp; &nbsp; ==============================================================================<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; The crash disappears if I either (1) disable the use of images<br>&nbsp;&nbsp;&nbsp; &nbsp; with stride<br>&nbsp;&nbsp;&nbsp; &nbsp; in the (public) osgGeo-library, or (2) add the following bugfix<br>&nbsp;&nbsp;&nbsp; &nbsp; to Glyph.cpp.<br>&nbsp;&nbsp;&nbsp; &nbsp; This combination gives me the confidence that I understand where<br>&nbsp;&nbsp;&nbsp; &nbsp; this problem<br>&nbsp;&nbsp;&nbsp; &nbsp; originates from, without trying to understand the full OpenGL<br>&nbsp;&nbsp;&nbsp; &nbsp; details.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; ===============================================================================<br>&nbsp;&nbsp;&nbsp; &nbsp;  <at>  <at>  -221,7 +223,12  <at>  <at> <br>&nbsp;&nbsp;&nbsp; &nbsp; imageData[i] = 0;<br>&nbsp;&nbsp;&nbsp; &nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; + glPixelStorei(GL_UNPACK_ALIGNMENT,1);<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; + #if !defined(OSG_GLES1_AVAILABLE) &amp;&amp;<br>&nbsp;&nbsp;&nbsp; &nbsp; !defined(OSG_GLES2_AVAILABLE)<br>&nbsp;&nbsp;&nbsp; &nbsp; + glPixelStorei(GL_UNPACK_ROW_LENGTH,getTextureWidth());<br>&nbsp;&nbsp;&nbsp; &nbsp; + #endif<br>&nbsp;&nbsp;&nbsp; &nbsp; +<br>&nbsp;&nbsp;&nbsp; &nbsp; // allocate the texture memory.<br>&nbsp;&nbsp;&nbsp; &nbsp; glTexImage2D( GL_TEXTURE_2D, 0, GL_ALPHA,<br>&nbsp;&nbsp;&nbsp; &nbsp; getTextureWidth(), getTextureHeight(), 0,<br>&nbsp;&nbsp;&nbsp; &nbsp; ================================================================================<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; I have copied (and adapted) the added lines above from the same<br>&nbsp;&nbsp;&nbsp; &nbsp; source file,<br>&nbsp;&nbsp;&nbsp; &nbsp; where they were used in front of a similar call to<br>&nbsp;&nbsp;&nbsp; &nbsp; glTexSubImage2D(.) around<br>&nbsp;&nbsp;&nbsp; &nbsp; line 515.<br>&nbsp;&nbsp;&nbsp; &nbsp; "<br><br>2014-07-21 12:21&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPresentation/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPresentation/deprecated/SlideShowConstructor.cpp: Initial<br>&nbsp;&nbsp;&nbsp; &nbsp; work on integtasting osgUI into Present3D<br><br>2014-07-21 12:18&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/NodeVisitor: Fixed indentation<br><br>2014-07-21 09:35&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUI/Style.cpp: Added debug messages<br><br>2014-07-18 17:17&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgWrappers/serializers/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osg/NodeVisitor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgGA/EventVisitor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUtil,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUtil/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUtil/CullVisitor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgUtil/UpdateVisitor.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; serailizer support for NodeVisitor, UpdateVisitor, CullVisitor<br>&nbsp;&nbsp;&nbsp; &nbsp; and EventVisitor<br><br>2014-07-14 15:59&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgpresentation/osgpresentation.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgDB/Callbacks, include/osgDB/ReadFile,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgDB/ReaderWriter, include/osgDB/Registry,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgDB/WriteFile, src/osgDB/Callbacks.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgDB/ReadFile.cpp, src/osgDB/ReaderWriter.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgDB/Registry.cpp, src/osgDB/WriteFile.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/V8/ReaderWriterV8.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/lua/ReaderWriterLua.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/python/ReaderWriterPython.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; readScript/writeScript methods to ReaderWriter<br><br>2014-07-14 14:09&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt, examples/osgpresentation/osgpresentation.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osg/Version, include/osgDB/ClassInterface,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgDB/PropertyInterface, src/osgDB/CMakeLists.txt,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgDB/ClassInterface.cpp, src/osgDB/PropertyInterface.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/lua/LuaScriptEngine.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/lua/LuaScriptEngine.h: Renamed<br>&nbsp;&nbsp;&nbsp; &nbsp; osgDB::PropertyInterface to osgDB::ClassInterface to better<br>&nbsp;&nbsp;&nbsp; &nbsp; reflect it's functionality<br><br>2014-07-04 16:45&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgPresentation/deprecated/SlideShowConstructor,<br>&nbsp;&nbsp;&nbsp; &nbsp; include/osgVolume/Property, include/osgVolume/VolumeSettings,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/p3d/ReaderWriterP3D.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPresentation/deprecated/SlideShowConstructor.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgVolume/Property.cpp, src/osgVolume/VolumeSettings.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Added preliminary support for writing VolumeSettings to disk from<br>&nbsp;&nbsp;&nbsp; &nbsp; within Present3D in response to pressing and releasing 'Ctrl-S'.<br><br>2014-07-03 16:36&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgVolume/Shaders/volume_accumulateSamples_iso_frag.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgVolume/Shaders/volume_accumulateSamples_mip_frag.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Updated iso and mip shaders from OpenSceneGraph-Data.<br><br>2014-07-03 13:06&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/osc/OscSendingDevice.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPresentation/deprecated/PropertyManager.cpp: Added virtual<br>&nbsp;&nbsp;&nbsp; &nbsp; destructors<br><br>2014-07-03 13:05&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/osc/OscSendingDevice.cpp: Fixed line endings<br><br>2014-07-03 13:01&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgPresentation/deprecated/SlideShowConstructor,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/p3d/ReaderWriterP3D.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPresentation/deprecated/SlideShowConstructor.cpp: Changed<br>&nbsp;&nbsp;&nbsp; &nbsp; enum usage to use the new osgVolume::VolumeSettings versions and<br>&nbsp;&nbsp;&nbsp; &nbsp; added support for reading a VolumeSettings file.<br><br>2014-07-03 10:01&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgVolume/VolumeSettings,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgVolume/VolumeSettings.cpp: Refactor VolumeSettings so that<br>&nbsp;&nbsp;&nbsp; &nbsp; it's subclassed from osgVolume::Property<br><br>2014-07-02 16:26&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgVolume/VolumeSettings,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgPlugins/dds/ReaderWriterDDS.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgVolume/CMakeLists.txt, src/osgVolume/VolumeSettings.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added<br>&nbsp;&nbsp;&nbsp; &nbsp; osgVolume::VolumeSettings object<br><br>2014-07-02 15:34&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgvolume/osgvolume.cpp: Changed the default image<br>&nbsp;&nbsp;&nbsp; &nbsp; output format to .osgb as .dds isn't able to represent signed<br>&nbsp;&nbsp;&nbsp; &nbsp; byte, short and int data correctly.<br><br>2014-07-02 14:14&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/osg/ReaderWriterOSG2.cpp: fixed handlng of file<br>&nbsp;&nbsp;&nbsp; &nbsp; type of nested files within a .osgx, .osgt and .osgb file.<br><br>2014-07-02 10:25&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgViewer/ViewerEventHandlers: From Laurens Voerman,<br>&nbsp;&nbsp;&nbsp; &nbsp; "just like ClusterCullingCallback (fixed in r14322) visual studio<br>&nbsp;&nbsp;&nbsp; &nbsp; likes an explicit implementation of run() for<br>&nbsp;&nbsp;&nbsp; &nbsp; InteractiveImageHandler.<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; The warning is (14 times):<br>&nbsp;&nbsp;&nbsp; &nbsp; include\osgViewer/ViewerEventHandlers(542): warning C4250:<br>&nbsp;&nbsp;&nbsp; &nbsp; 'osgViewer::InteractiveImageHandler' : inherits<br>&nbsp;&nbsp;&nbsp; &nbsp; 'osgGA::EventHandler::osgGA::EventHandler::run' via dominance<br>&nbsp;&nbsp;&nbsp; &nbsp; (src\osgViewer\StatsHandler.cpp)<br>&nbsp;&nbsp;&nbsp; &nbsp; include\osgGA/EventHandler(45) : see declaration of<br>&nbsp;&nbsp;&nbsp; &nbsp; 'osgGA::EventHandler::run'<br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp; attached a zipped version of<br>&nbsp;&nbsp;&nbsp; &nbsp; include\osgViewer\ViewerEventHandlers"<br><br>2014-07-01 07:31&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * applications/osgviewer/osgviewer.cpp: Added #include &lt;stdint.h&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp; to address compile issue on some Linux distro's.<br><br>2014-06-30 15:31&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * examples/osgvolume/osgvolume.cpp: Add dds no flip on write option<br>&nbsp;&nbsp;&nbsp; &nbsp; to prevent output of .dds volume from being flipped by the dds<br>&nbsp;&nbsp;&nbsp; &nbsp; plugin.<br><br>2014-06-30 13:24&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/3ds/WriterNodeVisitor.cpp: REmoved debug cout<br><br>2014-06-30 10:13&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osgUtil/StateGraph: From Mikhail Izmestev, "Attached fix<br>&nbsp;&nbsp;&nbsp; &nbsp; to avoid vector reallocs on push_back in<br>&nbsp;&nbsp;&nbsp; &nbsp; StateGraph::moveStateGraph."<br><br>2014-06-30 09:12&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * AUTHORS.txt, ChangeLog: Updated ChangeLog and AUTHORS file<br><br>2014-06-30 08:56&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * CMakeLists.txt, include/osg/Version: Updated version number<br><br>2014-06-30 08:46&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/Image: From Pjotr Svetachov, "Here is a small fix for<br>&nbsp;&nbsp;&nbsp; &nbsp; a overflow when editing large 3d volume data."<br><br>2014-06-30 08:20&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/svg/ReaderWriterSVG.cpp: Removed space from<br>&nbsp;&nbsp;&nbsp; &nbsp; #include.<br><br>2014-06-30 07:37&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/svg/ReaderWriterSVG.cpp: From Alexander<br>&nbsp;&nbsp;&nbsp; &nbsp; Sinditskiy, build fix to allow building against versions older<br>&nbsp;&nbsp;&nbsp; &nbsp; than librsvg-2.36.2<br><br>2014-06-28 06:22&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/ClusterCullingCallback: Replaced using<br>&nbsp;&nbsp;&nbsp; &nbsp; NodeCallback::run with explict run() implementation.<br><br>2014-06-27 15:57&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgPlugins/ive/DataOutputStream.cpp: From Pjotr Svetachov, "I<br>&nbsp;&nbsp;&nbsp; &nbsp; made a small change to DataOutputStream.cpp which makes saving<br>&nbsp;&nbsp;&nbsp; &nbsp; Geodes possible again. This is only half a fix as it only will<br>&nbsp;&nbsp;&nbsp; &nbsp; save a Drawable that is part of a Geode. But this change does not<br>&nbsp;&nbsp;&nbsp; &nbsp; require a version bump of the .ive format. I tried it with a few<br>&nbsp;&nbsp;&nbsp; &nbsp; datasets we have here with the 3.2 stable branch and the trunk<br>&nbsp;&nbsp;&nbsp; &nbsp; with this patch and there was no difference in the .ive files<br>&nbsp;&nbsp;&nbsp; &nbsp; that were produced."<br><br>2014-06-27 15:55&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUtil/DelaunayTriangulator.cpp: Removed unused method.<br><br>2014-06-27 15:48&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osgUtil/Tessellator.cpp: From Laurens Voerman, "attached is a<br>&nbsp;&nbsp;&nbsp; &nbsp; modified version of src/osgUtil/Tessellator.cpp<br>&nbsp;&nbsp;&nbsp; &nbsp; current code checks for a Nullpointer and on notify level info or<br>&nbsp;&nbsp;&nbsp; &nbsp; above will inform you with a crash, by dereferencing it."<br><br>2014-06-27 15:39&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * AUTHORS.txt: Updated AUTHORS file<br><br>2014-06-27 15:38&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * src/osg/ApplicationUsage.cpp: Added an OSG_INIT_SINGLETON_PROXY<br>&nbsp;&nbsp;&nbsp; &nbsp; to make sure that the ApplicationUsage singleton gets intialized<br>&nbsp;&nbsp;&nbsp; &nbsp; before usage.<br><br>2014-06-27 15:36&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * AUTHORS.txt: Updated AUTHORS file<br><br>2014-06-27 15:30&nbsp; robert<br><br>&nbsp;&nbsp;&nbsp; * include/osg/Camera, src/osg/GraphicsContext.cpp,<br>&nbsp;&nbsp;&nbsp; &nbsp; src/osgViewer/CompositeViewer.cpp, src/osgViewer/Viewer.cpp:<br>&nbsp;&nbsp;&nbsp; &nbsp; Added a render order sort to the list of Cameras being tested by<br>&nbsp;&nbsp;&nbsp; &nbsp; the *Viewer::generatePointerData(..) method to ensure that the<br>&nbsp;&nbsp;&nbsp; &nbsp; highest Camera gets focus.<br><br></p>
<p><br></p>
<p><br></p>
<br>
</div></div>
Gianni Ambrosio | 19 Dec 10:59 2014
Picon

point projection to surface

Hi All,
in my application the user can enter X and Y coordinates of a 3D point through GUI fields. Then I need to
calculate the Z value that is the projection of that point on the nearest 3D geometry in the scene. I'm
giving a look at the osgUtil namespace but I didn't find a solution yet.

Cheers,
Gianni

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=62141#62141

Robert Osfield | 18 Dec 19:17 2014
Picon

Please test svn/trunk in prep for OSG-3.3.3 dev release

Hi All,

I will be tagging the OSG-3.3.3 dev release tomorrow.  Could users
please check out svn/trunk and let me know how your build and runtime
usage fairs.

Cheers,
Robert.
umesh ramesh | 18 Dec 17:04 2014
Picon

[vpb] Roads as Shapefiles in VPB?

Hi All,

I have road geometry (3D) that I might be able to convert to SHP file using shapelib library.

If I load the shapefile for the road, shall I expect the terrain in VPB to be modified to accompany the road on top?
My Aim: Wherever the road is present, the terrain must be flattened (go below the road).

At least, VPB experts can be able to tell if this is feasible with existing SHP file support in VPB?

Thank you!

Cheers,
umesh

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=62117#62117

John-Luke | 17 Dec 22:04 2014
Picon

[forum] Resize Geometry in a HUD on Resize of Window

Hi all,

My goal is to have a HUD that consists of one circle drawn programmatically.
I followed the osgHUD example and was able remove the text they draw and draw my circle instead. I did this by
adding a (circle) Geometry to the Geode and removing the text and bounding box from the Geode.

My problems:
1) When I resize my window, my circle gets deformed into an ellipse. Why is this? And how do I keep my circle
from deforming on window resize?

2) Currently I am using:
hud_camera->setProjectionMatrix(osg::Matrix::ortho2D(0, 1280, 0, 1024));
but I want my program to work with any screen resolution (not just 1280x1024). How do I obtain the screen
resolution of the screen my program is running on?

If you could give me an answer using osgHUD as a reference that'd be especially great!

Thanks  so much!
John-Luke

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=62092#62092

Mattias Helsing | 17 Dec 23:40 2014
Picon

where is the Dashboard ?

Hi people,

I was looking at some really awkward cmake code in out top-level
CMakeLists.txt. It is awkward because will still support cmake-2.4
which (if I remember correctly) is mostly because this is the cmake
version that comes with RHEL5. So I decided to have a look at the
CDash to see how existing RHEL5 computers are doing these days.

http://my.cdash.org/index.php?project=OpenSceneGraph

There are no builds whatsoever...for the last 2 years. Is this the
correct link? We don't have a single computer doing nightly builds?

Mattias
Jason Anderssen | 17 Dec 23:31 2014

Yaw pitch and roll or xyz conversion to and from Quaternion

Hi all,

Just wondering if in OSG there is anywhere I can extract either Yaw pitch and roll / or XYZ eular angles, too and from either a matrix or a quaternion?

Thank you in advance.

Cheers
Jason Anderssen
Internet Email Confidentiality Footer: This email and any files transmitted with it contain privileged/confidential information intended for the addressee. Neither the confidentiality of nor any privilege in the email is waived, lost or destroyed by reason that it has been transmitted other than to the addressee. If you are not the addressee indicated in this message (or responsible for delivery of the message to such person), you may not copy or deliver this message to anyone. In such case, you should destroy this message, and notify us immediately.
<div>
<div>Hi all,</div>
<div><br></div>
<div>Just wondering if in OSG there is anywhere I can extract either Yaw pitch and roll / or XYZ eular angles, too and from either a matrix or a quaternion?</div>
<div><br></div>
<div>Thank you in advance.</div>
<div><br></div>
<div>Cheers</div>
<div>Jason Anderssen</div>
Internet Email Confidentiality Footer: This email and any files transmitted with it contain privileged/confidential information intended for the addressee. Neither the confidentiality of nor any privilege in the email is waived, lost or destroyed by reason
 that it has been transmitted other than to the addressee. If you are not the addressee indicated in this message (or responsible for delivery of the message to such person), you may not copy or deliver this message to anyone. In such case, you should destroy
 this message, and notify us immediately.
</div>
Goutham Mudide | 15 Dec 21:11 2014
Picon

hard to understand behavior of control point in animation path help me??

Hi,

... 
I loaded two models into scene first one is placed at origin and another 
object is placed at (-x,0,-z) .I used osg::animation to animate fist object to touch other object, to do so I
created 3 control points and I have odd coded position and rotation.

Animation path is:-  /
                       ______/

Initial position of first object is inclined with y-axis..
1st control point to second control point is inclined path as shown in above figure..
2nd to 3rd is straight line along negative x axis and -ive inclination about y axis(rotation) to put my
object parallel to x axis.

The problem is when I changed the coordinates (vice-versa)I.e first object is translated to (x,0,z) and
other is placed at origin..then object is animating as I expected till 2nd control point but at 3 due to
rotation it is animating in different path..

Thank you!

Cheers,
goutham

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=62063#62063

He Jingyuan | 16 Dec 05:40 2014
Picon

Using Shader in OSG

Hi there, 

Here is a Newbie Question: 

I'm trying to put a  lot of continuous photos of a street together so that they look like a panorama (or full
view). I choose  photos oriented to roadside buildings which looks like "front view".
I created N(approximate 21) square(geometry) nodes, and every photo was used as a texture on each square node.
I wish to create a fake "stitch" effect of panorama, in the way of  arraying the squares in a line,  each
ovarlapped(partly covered) with  its neighbours, and make its edge transparent (like alpha edge blend in
OpenSceneGraph )
Now, I used Vertex Shader and Fragment Shader and has realized expected effect on one square, as figure below:

However, it doesn't work when I duplicated the Shader (above)  and implemented them to other square nodes.
My question, can I use many pairs of Shader in many Nodes? 
If yes, how should I do?
If not, how should I changed my method?

Below is my current effect
Left is a square with Shader, and right is a square with no Shader.
Their length is 512 pixels , and the distance of two squares is 256 pixels.

Thank you!

Cheers,
He

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=62069#62069

Attachments: 
http://forum.openscenegraph.org//files/4747_1418704560.jpg_537.jpg
http://forum.openscenegraph.org//files/8b3a2a13_274a_4494_8ec8_6f1ec42fc6ef_120.png

Jim Feng | 14 Dec 01:58 2014
Picon

Need some suggestion about ball movement in a tunnel drawings

Hi,

I want to draw a curved tunnel and restrict a ball movement inside the tunnel like the image below:

[/img]

So, in order to do this, I have to create a tunnel model and load it by using openscenegraph plugins? or I could
use some program lines to draw this kind of geometry directly? And then apply physics engine such as bullet
to restrict the movement of the ball?

Hope you could give me some suggestion about this.

Thank you!

Cheers,
Jim[/img]

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=62049#62049

Attachments: 
http://forum.openscenegraph.org//files/image001_187.gif

Marcin Kolny | 12 Dec 15:42 2014
Picon

Replace pure OpenGL method by OSG

Hi,
I've got following code:

Code:

		glMatrixMode (GL_PROJECTION);
		glLoadIdentity ();

		GLfloat verts[] = { -1.0f, -1.0f,	1.0f, -1.0f,	1.0f, 1.0f,	-1.0f, 1.0f };
		GLfloat texcoords[] = { 0.0f, 0.0f,	1.0f, 0.0f,	1.0f, 1.0f,	0.0f, 1.0f };

		glEnable (GL_TEXTURE_2D);
		glBindTexture (GL_TEXTURE_2D, texture);
		glClientActiveTexture (GL_TEXTURE0);

		glEnableClientState(GL_VERTEX_ARRAY);
		glEnableClientState (GL_TEXTURE_COORD_ARRAY);

		glVertexPointer (2, GL_FLOAT, 0, &verts);
		glTexCoordPointer (2, GL_FLOAT, 0, &texcoords);
		glDrawArrays (GL_TRIANGLE_FAN, 0, 4);

		glDisableClientState(GL_TEXTURE_COORD_ARRAY);

		glDisable(GL_TEXTURE_2D);

		glEnableClientState(GL_COLOR_ARRAY);

		float line_vertex [] = {
				-1,-1,
				1,1,
		};
		float line_color[] = {
				1,0,0,
				1,0,0,
		};

		glVertexPointer(2, GL_FLOAT, 0, line_vertex);
		glColorPointer(3, GL_FLOAT, 0, line_color);
		glDrawArrays(GL_LINES, 0, 2);
		//draw_user_function();

		glDisableClientState(GL_VERTEX_ARRAY);
		glDisableClientState(GL_COLOR_ARRAY);

And I'd like to use OSG instead. But unfortunately, I've no idea, how to do it. Could somebody give me an
advice? Thanks in advance 

Thank you!

Cheers,
M.K.

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=62043#62043


Gmane