Compare commits
88 Commits
OpenSceneG
...
OpenSceneG
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3706a24e4 | ||
|
|
0a4a31d17b | ||
|
|
3838267770 | ||
|
|
2c39714dff | ||
|
|
4291636619 | ||
|
|
189e4e3a64 | ||
|
|
a6ef1cd66b | ||
|
|
f2012eeeb8 | ||
|
|
e2aeab2b60 | ||
|
|
dce4b81728 | ||
|
|
e4adb509e0 | ||
|
|
eae5f9b958 | ||
|
|
9c6951e4ba | ||
|
|
dce6684c59 | ||
|
|
43058ac1d5 | ||
|
|
55c0afbe3a | ||
|
|
b34461febe | ||
|
|
e3c47b60e0 | ||
|
|
7602b868f4 | ||
|
|
880a100a60 | ||
|
|
3b563ab21b | ||
|
|
a86c6dc2c6 | ||
|
|
1476f829c4 | ||
|
|
26acc9a6b1 | ||
|
|
510a231e14 | ||
|
|
3bbbbd07ea | ||
|
|
640b03b671 | ||
|
|
7a3e0445ba | ||
|
|
00a946bc2e | ||
|
|
66251abd38 | ||
|
|
312ce9ad05 | ||
|
|
362e355db2 | ||
|
|
cf2e3227cc | ||
|
|
01f69e6b10 | ||
|
|
a211ea4e68 | ||
|
|
fcde92ad89 | ||
|
|
0fc7aa8cc0 | ||
|
|
be363ef8d4 | ||
|
|
b1daa6a693 | ||
|
|
05793cb104 | ||
|
|
a5c421863e | ||
|
|
e79edabf98 | ||
|
|
d95993554e | ||
|
|
f49e1d32c9 | ||
|
|
a15d4532fa | ||
|
|
27955ae8e9 | ||
|
|
c078968f66 | ||
|
|
f90edd0d9f | ||
|
|
62a9f87f45 | ||
|
|
f510613d55 | ||
|
|
645704dfd3 | ||
|
|
13d56b8b37 | ||
|
|
c5990c4f65 | ||
|
|
94c4baccad | ||
|
|
bb1e208d30 | ||
|
|
fce55993bc | ||
|
|
31c9dbc881 | ||
|
|
c9b0fcaa32 | ||
|
|
37a63d37e2 | ||
|
|
1daacced5a | ||
|
|
cea33e40df | ||
|
|
2b3ac015bb | ||
|
|
1aa0a80de7 | ||
|
|
4dd1156444 | ||
|
|
c10f298dc6 | ||
|
|
e8c0033f5f | ||
|
|
31c29f4318 | ||
|
|
e0be94389e | ||
|
|
d660b29ef0 | ||
|
|
490d3a8f21 | ||
|
|
02c310982e | ||
|
|
c3008512f1 | ||
|
|
22d2fae30c | ||
|
|
dac9ed17f1 | ||
|
|
709194c88c | ||
|
|
8de8af6850 | ||
|
|
7bda8083fb | ||
|
|
a082b57c3f | ||
|
|
547340659f | ||
|
|
29d12ddcbc | ||
|
|
f95fdd4d4e | ||
|
|
bf6db4eee7 | ||
|
|
fe39589771 | ||
|
|
d88f0c4cd1 | ||
|
|
a2a026e116 | ||
|
|
38ad6ed3b3 | ||
|
|
9d72bf4712 | ||
|
|
15429198b8 |
@@ -3,8 +3,8 @@
|
||||
#
|
||||
SET(OPENSCENEGRAPH_MAJOR_VERSION 3)
|
||||
SET(OPENSCENEGRAPH_MINOR_VERSION 6)
|
||||
SET(OPENSCENEGRAPH_PATCH_VERSION 0)
|
||||
SET(OPENSCENEGRAPH_SOVERSION 156)
|
||||
SET(OPENSCENEGRAPH_PATCH_VERSION 1)
|
||||
SET(OPENSCENEGRAPH_SOVERSION 157)
|
||||
|
||||
|
||||
# set to 0 when not a release candidate, non zero means that any generated
|
||||
@@ -26,25 +26,10 @@ if(COMMAND cmake_policy)
|
||||
|
||||
# tell CMake to prefer CMake's own CMake modules when available
|
||||
# only available from cmake-2.8.4
|
||||
if(${CMAKE_MAJOR_VERSION} GREATER 2 OR
|
||||
(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 8) OR
|
||||
(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 8 AND ${CMAKE_PATCH_VERSION} GREATER 3))
|
||||
if("${CMAKE_VERSION}" VERSION_GREATER 2.8.3)
|
||||
cmake_policy(SET CMP0017 NEW)
|
||||
endif()
|
||||
|
||||
# cmake-2.6.1 introduces policy cmp0008 decide how to treat full path libraries that do not appear to be valid library file names
|
||||
# quote from cvslog "Such libraries worked by accident in the VS IDE and Xcode generators in CMake 2.4 and below."
|
||||
if(${CMAKE_MAJOR_VERSION} GREATER 2 OR
|
||||
(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 6) OR
|
||||
(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 6 AND ${CMAKE_PATCH_VERSION} GREATER 0))
|
||||
cmake_policy(SET CMP0008 OLD)
|
||||
endif()
|
||||
|
||||
# nicer version check - but needs at least CMake 2.6.2? Worth upgrading the requirements?
|
||||
#if("${CMAKE_VERSION}" VERSION_GREATER 2.8.10)
|
||||
# or even easier (available in cmake-2.6)
|
||||
#if(POLICY CMPxyzw)
|
||||
|
||||
endif()
|
||||
|
||||
IF(APPLE)
|
||||
@@ -330,13 +315,14 @@ IF(UNIX AND NOT ANDROID)
|
||||
|
||||
ENDIF()
|
||||
|
||||
INCLUDE_DIRECTORIES(${OpenSceneGraph_SOURCE_DIR}/include/)
|
||||
|
||||
# Make the headers visible to everything
|
||||
IF(NOT ${PROJECT_BINARY_DIR} EQUAL ${PROJECT_SOURCE_DIR})
|
||||
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}/include)
|
||||
ENDIF()
|
||||
|
||||
INCLUDE_DIRECTORIES(${OpenSceneGraph_SOURCE_DIR}/include/)
|
||||
|
||||
INCLUDE_DIRECTORIES(SYSTEM ${OPENGL_INCLUDE_DIR})
|
||||
|
||||
# Common global definitions
|
||||
@@ -556,9 +542,13 @@ ELSE()
|
||||
OPTION(OSG_CPP_EXCEPTIONS_AVAILABLE "Set to OFF to disable compile of OSG components that use C++ exceptions." ON)
|
||||
ENDIF()
|
||||
|
||||
SET(OSG_GL_CONTEXT_VERSION "1.0" CACHE STRING "GL Context String to pass when creaing graphics contexts")
|
||||
|
||||
# Map the OSG_GL*_AVAILABLE settings to OpenGL header settings
|
||||
IF (OSG_GL3_AVAILABLE)
|
||||
|
||||
SET(OSG_GL_CONTEXT_VERSION "3.3")
|
||||
|
||||
IF (APPLE)
|
||||
SET(OPENGL_HEADER1 "#include <OpenGL/gl.h>" CACHE STRING "#include<> line for OpenGL Header")
|
||||
SET(OPENGL_HEADER2 "#include <OpenGL/gl3.h>" CACHE STRING "#include<> line for additional OpenGL Headers if required")
|
||||
|
||||
358
ChangeLog
358
ChangeLog
@@ -1,3 +1,361 @@
|
||||
Wed, 23 May 2018 19:53:12 +0100
|
||||
Author : Robert Osfield
|
||||
Updates for 3.6.1-rc7
|
||||
|
||||
Wed, 23 May 2018 17:02:28 +0100
|
||||
Author : Robert Osfield
|
||||
Updated REMOVE_SERIALIZER( ImageAttachment ); block to use 154 version to retain compatibility with binaries made with 153 SOVERSION prior to the Imageattachement change
|
||||
|
||||
Wed, 23 May 2018 14:30:31 +0100
|
||||
Author : Robert Osfield
|
||||
Implemented StateGraph reuse in in scene graph Canera's RenderStage.
|
||||
|
||||
Wed, 23 May 2018 14:13:27 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed warning of RenderLeaf's having multiple references in CullVisitor::createOrReuseRenderLeaf() but forcing a clean up of the StateGraph at the end of RenderStage::draw()
|
||||
|
||||
Wed, 23 May 2018 07:47:15 +0100
|
||||
Author : Robert Osfield
|
||||
Added check to make sure that glEnablei and glDisablei are only called when the capability is non zero to fix GL invalid value error.
|
||||
|
||||
Wed, 23 May 2018 06:32:42 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed type of Timer_t under Windows
|
||||
|
||||
Tue, 22 May 2018 09:04:48 +0100
|
||||
Author : Robert Osfield
|
||||
Updates for rc6
|
||||
|
||||
Mon, 21 May 2018 13:26:04 -0400
|
||||
Author : gwaldron
|
||||
osgText: perform pixel size computation in double-precision to prevent coordinate jitter
|
||||
|
||||
Mon, 21 May 2018 18:14:18 +0100
|
||||
Author : Robert Osfield
|
||||
Moved the rotation to before the scale
|
||||
|
||||
Mon, 21 May 2018 13:18:29 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed typos
|
||||
|
||||
Mon, 21 May 2018 13:10:40 +0100
|
||||
Author : Robert Osfield
|
||||
Restored the REGISTER_WINDOWINGSYSTEMINTERFACE macro to the include/osg/GraphicsContext header and removed the OSGVIEWER_EXPORT as this was causing compatibility issues with osgQt.In GraphicsWindowWin32 replaced REGISTER_WINDOWINGSYSTEMINTERFACE usage with locally implemented equivilant with the required OSGVIEWER_EXPORT.
|
||||
|
||||
|
||||
Sun, 20 May 2018 13:39:44 +0100
|
||||
Author : Robert Osfield
|
||||
Updated ChangeLog and README.md for rc5
|
||||
|
||||
Sun, 20 May 2018 13:22:58 +0100
|
||||
Author : Robert Osfield
|
||||
Restructed SCREEN auto scaling so that it's removes the rotation of the modelview matrix so that the XY coords of the text map directly to window xy coords for all text alignment types
|
||||
|
||||
Fri, 18 May 2018 15:49:28 +0100
|
||||
Author : Robert Osfield
|
||||
Updates in prep for 3.6.1-rc5
|
||||
|
||||
Fri, 18 May 2018 14:58:53 +0100
|
||||
Author : Robert Osfield
|
||||
Moved REGISTER_WINDOWINGSYSTEMINTERFACE from include/osg/GraphicsContext to include/osgViewer/GraphicsWindow and added OSGVIEWER_EXPORT
|
||||
|
||||
Fri, 18 May 2018 13:53:39 +0100
|
||||
Author : Robert Osfield
|
||||
Added GL_RED and GL_RG support to _readColor()/Image::getColor();
|
||||
|
||||
Fri, 18 May 2018 12:52:50 +0100
|
||||
Author : Robert Osfield
|
||||
Cleaned up the WindowingSystemInterface registration
|
||||
|
||||
Fri, 18 May 2018 12:47:34 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed create of graphics context by explicting adding USE_GRAPHICSWINDOW to force the WindowingSystemInterface to initialize
|
||||
|
||||
Fri, 18 May 2018 12:42:20 +0100
|
||||
Author : Robert Osfield
|
||||
Quitened down unsupport compression output when passing in a file with a non rgb extension
|
||||
|
||||
Fri, 18 May 2018 10:00:10 +0100
|
||||
Author : Robert Osfield
|
||||
Introduced a local StateGraph hierarchy into CullVisitor::apply(osg::Camera&) and RenderBin to fixed RTT Camera bug where multiple RTT Camera end up with the rendering back end results assigned to them which occured when RTT Camera's share the same StateSet or null StateSet.
|
||||
|
||||
Mon, 14 May 2018 09:34:04 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed support for update and event callbacks on StateSet/Uniform/StateAttributes on View(er) Cameras.
|
||||
|
||||
Mon, 14 May 2018 08:43:08 +0100
|
||||
Author : Robert Osfield
|
||||
Renamed the counter used to enable traversal order sorting
|
||||
|
||||
Mon, 14 May 2018 08:24:02 +0100
|
||||
Author : Robert Osfield
|
||||
Improved the handling of precision
|
||||
|
||||
Sun, 13 May 2018 11:52:06 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed crash when using ShapeDrawable with a TriangleMesh or ConvexHull shape due to missing texture coords
|
||||
|
||||
Sun, 13 May 2018 09:23:38 +0100
|
||||
Author : Robert Osfield
|
||||
Updated for rc
|
||||
|
||||
Sun, 13 May 2018 09:18:31 +0100
|
||||
Author : Robert Osfield
|
||||
Removed _traverseNumber variable that was duplicating the one in NodeVisitor base class
|
||||
|
||||
Sat, 12 May 2018 12:47:08 +0100
|
||||
Author : Robert Osfield
|
||||
Updates for 3.6.1-rc4
|
||||
|
||||
Sat, 12 May 2018 12:41:42 +0100
|
||||
Author : Robert Osfield
|
||||
Build fixes for OSG_USE_REF_PTR_IMPLICIT_OUTPUT set to OFF
|
||||
|
||||
Sat, 12 May 2018 11:40:25 +0100
|
||||
Author : Robert Osfield
|
||||
Rewrote TextBase::computeMatrix(..) computation of the scaling factor with slower but easier to understand and more robust code
|
||||
|
||||
Sat, 12 May 2018 07:51:51 +0100
|
||||
Author : Robert Osfield
|
||||
Removed use of deprecated cmake policy
|
||||
|
||||
Fri, 11 May 2018 11:15:45 +0100
|
||||
Author : Robert Osfield
|
||||
Moved constructors and destructors to .cpp
|
||||
|
||||
Fri, 11 May 2018 11:11:48 +0100
|
||||
Author : Robert Osfield
|
||||
Revert "Moved the Options constructors and destructor implementaions into the cpp to make it easier to do debugging"This reverts commit 0fc7aa8cc096e59b9366df60c1fdbd0803ac4481.
|
||||
|
||||
|
||||
Fri, 11 May 2018 09:00:22 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed crash the occurred when passing in a osgDB::Options to the ObjectCache that doesn't have any references to it.
|
||||
|
||||
Fri, 11 May 2018 08:58:30 +0100
|
||||
Author : Robert Osfield
|
||||
Moved the Options constructors and destructor implementaions into the cpp to make it easier to do debugging
|
||||
|
||||
Thu, 10 May 2018 18:58:29 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed build when OSG_ENVVAR_SUPPORTED is disabled and quietened down warnings using OSG_UNUSED* macros
|
||||
|
||||
Thu, 10 May 2018 18:50:17 +0100
|
||||
Author : Robert Osfield
|
||||
Changed the ordering of the build include directory and the source include directory to avoid build issues on systems where a different version of the OSG has been built in-source then another built out-of-source resulting in conflicts
|
||||
|
||||
Thu, 10 May 2018 16:59:56 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed typo
|
||||
|
||||
Sun, 6 May 2018 07:47:23 +0100
|
||||
Author : Robert Osfield
|
||||
Updates for 3.6.1-rc3
|
||||
|
||||
Sat, 5 May 2018 15:47:28 +0100
|
||||
Author : Robert Osfield
|
||||
Restructed the handling of SCREEN_COORD scaling to better handle window resizing
|
||||
|
||||
Sat, 5 May 2018 12:31:00 +0100
|
||||
Author : Robert Osfield
|
||||
Added C++ specific path for calling std::map<>::erase() to avoid issues with std::map<>::erase implementation that invalidates iterators
|
||||
|
||||
Sat, 5 May 2018 12:28:45 +0100
|
||||
Author : Robert Osfield
|
||||
Replaced std::auto_ptr<> usage as it's deprecated in C++11 and will be removed in C++17
|
||||
|
||||
Fri, 4 May 2018 16:11:31 +0100
|
||||
Author : OpenSceneGraph git repository
|
||||
Merge pull request #545 from emminizer/fix-gl3-text-bad-modeText only applies GL_TEXTURE_2D modes when fixed function is availabl…
|
||||
|
||||
Fri, 4 May 2018 06:44:13 -0400
|
||||
Author : Daniel Emminizer
|
||||
Text only applies GL_TEXTURE_2D modes when fixed function is available. Prevents GL3 Core Profile console spam.
|
||||
|
||||
Fri, 4 May 2018 10:54:02 +0100
|
||||
Author : Robert Osfield
|
||||
Added non const version of State::getActiveDisplaySettings()
|
||||
|
||||
Fri, 4 May 2018 09:44:43 +0100
|
||||
Author : Robert Osfield
|
||||
Added check for null to prevent null entries getting into the cache
|
||||
|
||||
Fri, 18 Nov 2016 14:56:05 +0000
|
||||
Author : Robert Osfield
|
||||
Added osg::MakeString class to make it easier to create std::string's using std::ostream style << usage.
|
||||
|
||||
Fri, 4 May 2018 09:22:54 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed null pointer warning
|
||||
|
||||
Thu, 3 May 2018 12:56:08 +0200
|
||||
Author : Björn Blissing
|
||||
Check existence of path before reading imageWhen loading texture images inside the FBX plugin check that the path
|
||||
exists before trying to read the image. This is done to avoid
|
||||
unnecessary warnings inside the readRefImageFile function.
|
||||
|
||||
|
||||
Wed, 2 May 2018 09:14:04 +0100
|
||||
Author : Robert Osfield
|
||||
Updated ChangeLog
|
||||
|
||||
Wed, 2 May 2018 09:10:54 +0100
|
||||
Author : Robert Osfield
|
||||
Updates for the 3.6.1-rc2
|
||||
|
||||
Mon, 30 Apr 2018 11:55:17 +0100
|
||||
Author : Robert Osfield
|
||||
Updated SO version to reflect change in ABI
|
||||
|
||||
Mon, 30 Apr 2018 11:44:02 +0100
|
||||
Author : OpenSceneGraph git repository
|
||||
Merge pull request #542 from psyinf/fix_particle_system_headerFIX: <osgParticle> removed unimplemented functions from header
|
||||
|
||||
Mon, 30 Apr 2018 11:16:02 +0200
|
||||
Author : Sebastian Messerschmidt
|
||||
FIX: <osgParticle> removed unimplemented functions from header
|
||||
|
||||
Fri, 27 Apr 2018 11:23:07 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed particle update bug where a ParticleSystem wouldn't start when loaded during the frame loop due to the _last_frame value not being set.
|
||||
|
||||
Thu, 26 Apr 2018 10:21:53 +0100
|
||||
Author : Robert Osfield
|
||||
Updated ChangeLog, README.md and rc number for 3.6.1-rc1
|
||||
|
||||
Thu, 26 Apr 2018 09:49:35 +0100
|
||||
Author : Robert Osfield
|
||||
Split up #pragma so that there only three parameters per line to aovid Intel driver bug crash
|
||||
|
||||
Thu, 26 Apr 2018 09:36:52 +0100
|
||||
Author : Robert Osfield
|
||||
Renamed text.vert and text.frag to osgText_Text.vert and .frag to avoid name overlapping with user shaders.
|
||||
|
||||
Wed, 25 Apr 2018 09:48:02 +0100
|
||||
Author : Julien Valentin
|
||||
add wrapper for osg::DrawIndirectBufferObject
|
||||
|
||||
Tue, 24 Apr 2018 17:05:03 +0100
|
||||
Author : Robert Osfield
|
||||
Renamed CMake variable + C++ #define to OSG_GL_CONTEXT_VERSION
|
||||
|
||||
Tue, 24 Apr 2018 16:22:13 +0100
|
||||
Author : Robert Osfield
|
||||
Added OSG_GL_CONTEXT_STRING cmake variable to set include/osg/GL headers that sets Traits::glContextVersion.
|
||||
|
||||
Tue, 24 Apr 2018 15:38:02 +0100
|
||||
Author : OpenSceneGraph git repository
|
||||
Merge pull request #537 from openscenegraph/revert-536-default-gl3-contextRevert "When GL3 build is enabled, default context requested is version 3.3, …"
|
||||
|
||||
Tue, 24 Apr 2018 15:37:44 +0100
|
||||
Author : OpenSceneGraph git repository
|
||||
Revert "When GL3 build is enabled, default context requested is version 3.3, …"
|
||||
|
||||
Tue, 24 Apr 2018 15:36:11 +0100
|
||||
Author : OpenSceneGraph git repository
|
||||
Merge pull request #536 from emminizer/default-gl3-contextWhen GL3 build is enabled, default context requested is version 3.3, …
|
||||
|
||||
Tue, 24 Apr 2018 15:33:03 +0100
|
||||
Author : Robert Osfield
|
||||
Refactored the handling of glyph and shadow alpha values to make the text and shadow clearer for fonts with narrow glyphs
|
||||
|
||||
Tue, 24 Apr 2018 13:52:53 +0100
|
||||
Author : Robert Osfield
|
||||
Refactored the handling of text bounding box to provide more stable bounding box computation
|
||||
|
||||
Tue, 24 Apr 2018 06:31:32 -0400
|
||||
Author : Daniel Emminizer
|
||||
When GL3 build is enabled, default context requested is version 3.3, enabling core profile by default.
|
||||
|
||||
Fri, 20 Apr 2018 21:16:46 +0200
|
||||
Author : Alberto Luaces
|
||||
Small fix for uncaught typo.
|
||||
|
||||
Fri, 20 Apr 2018 18:18:22 +0200
|
||||
Author : Alberto Luaces
|
||||
Fix typos and spelling.
|
||||
|
||||
Mon, 23 Apr 2018 11:02:03 +0100
|
||||
Author : OpenSceneGraph git repository
|
||||
Merge pull request #534 from emminizer/fix-msvc-includesFix includes for MSVC 2015 build.
|
||||
|
||||
Fri, 20 Apr 2018 13:16:43 -0400
|
||||
Author : Daniel Emminizer
|
||||
Fix includes for MSVC 2015 build.
|
||||
|
||||
Fri, 20 Apr 2018 15:58:27 +0100
|
||||
Author : Robert Osfield
|
||||
Updated ChangeLog
|
||||
|
||||
Fri, 20 Apr 2018 14:32:34 +0100
|
||||
Author : Robert Osfield
|
||||
Replaced osgUtil::IntersectVisitor usage with osgUtil::InteresectionVisitor
|
||||
|
||||
Fri, 20 Apr 2018 10:24:17 +0100
|
||||
Author : Robert Osfield
|
||||
Removed TriStripVisitor for default set of Optimizer passes as it doesn't generate efficient scene graphs
|
||||
|
||||
Fri, 20 Apr 2018 09:57:04 +0100
|
||||
Author : Robert Osfield
|
||||
Added osgUtil::optimizeMesh(osg::Node* node) convinience method
|
||||
|
||||
Fri, 20 Apr 2018 11:42:31 +0100
|
||||
Author : Robert Osfield
|
||||
Removed usage of the osgUtil::TriStripVisitor is it generates osg::Geometry that perform very poorly when using VBO and VAO's vs GL DisplayLists. With DisplayLists being deprecated in GL and VBO and VAO becoming standard it's best to standardize on using the osgUtil::MeshOptimizers instead of TripStrupVisitor
|
||||
|
||||
Thu, 19 Apr 2018 19:43:14 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed the set*Binding() methods so that they assign BufferObjects when required
|
||||
|
||||
Thu, 19 Apr 2018 19:42:51 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed messages
|
||||
|
||||
Thu, 19 Apr 2018 19:41:51 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed the GLBufferObject size computation so that it takes into account padding.
|
||||
|
||||
Thu, 19 Apr 2018 19:36:19 +0100
|
||||
Author : Robert Osfield
|
||||
Replaced the use of osgUtil::TriStripVisitor with ogUtil::MeshOptimizer usage to improve performance. Fixed set setColorArray assignement to pass in the color binding
|
||||
|
||||
Wed, 18 Apr 2018 10:02:43 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed the handle of boundary equalization
|
||||
|
||||
Wed, 18 Apr 2018 09:33:12 +0100
|
||||
Author : Robert Osfield
|
||||
Added --equalize-boundaries -e command line option to call terrain->setEqualizeBoundaries(true)
|
||||
|
||||
Mon, 16 Apr 2018 17:53:38 +0100
|
||||
Author : Robert Osfield
|
||||
Updated version number in prep for future 3.6.1 release.
|
||||
|
||||
Mon, 16 Apr 2018 15:08:24 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed inline Drawable::draw(..) method
|
||||
|
||||
Mon, 16 Apr 2018 15:05:11 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed Geometry::drawImplmentation() handling of VBO's to prevent them from being used when display lists are used.
|
||||
|
||||
Sun, 15 Apr 2018 08:25:57 +0100
|
||||
Author : Robert Osfield
|
||||
Replaced osgViewer::GraphicsWindow dynamic_cast as it's not neccessary.
|
||||
|
||||
Sat, 7 Apr 2018 18:35:19 +0100
|
||||
Author : Robert Osfield
|
||||
Fixed typo
|
||||
|
||||
Sat, 7 Apr 2018 17:59:55 +0100
|
||||
Author : Robert Osfield
|
||||
Renamed osg::ComputeDispatch to osg::DispatchCompute to make sure the nameing between GL and OSG is consistent i.e glDispatchCompute -> osg::DispatchComputeUpdated AUTHORS.txt, NEWS.txt and README.txt for CMakeLists.txt for 3.6.0 release
|
||||
|
||||
|
||||
Sat, 7 Apr 2018 07:19:14 +0100
|
||||
Author : Robert Osfield
|
||||
Updated ChangeLog
|
||||
|
||||
Sat, 7 Apr 2018 07:18:41 +0100
|
||||
Author : Robert Osfield
|
||||
Updated for rc7
|
||||
|
||||
@@ -25,7 +25,7 @@ If details below are not sufficient then head over to the openscenegraph.org to
|
||||
|
||||
Robert Osfield.
|
||||
Project Lead.
|
||||
7th April 2018.
|
||||
28th May 2018.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0">
|
||||
<uses-sdk android:targetSdkVersion="8" android:minSdkVersion="8"></uses-sdk>
|
||||
<uses-feature android:glEsVersion="0x00010001"/> <!-- OpenGL min requierements (1.1) -->
|
||||
<uses-feature android:glEsVersion="0x00010001"/> <!-- OpenGL min requirements (1.1) -->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
|
||||
<application android:label="@string/app_name" android:icon="@drawable/osg">
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0">
|
||||
<uses-sdk android:targetSdkVersion="8" android:minSdkVersion="8"></uses-sdk>
|
||||
<uses-feature android:glEsVersion="0x00020000"/> <!-- OpenGL min requierements (2.0) -->
|
||||
<uses-feature android:glEsVersion="0x00020000"/> <!-- OpenGL min requirements (2.0) -->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
|
||||
<application android:label="@string/app_name" android:icon="@drawable/osg">
|
||||
|
||||
@@ -393,8 +393,6 @@ public:
|
||||
while (arguments.read("--dl")) { modifyDrawableSettings = true; useDisplayLists = true; }
|
||||
|
||||
while (arguments.read("-s", simplificatioRatio)) {}
|
||||
while (arguments.read("--tristripper")) { useTriStripVisitor=true; }
|
||||
while (arguments.read("--no-tristripper")) { useTriStripVisitor=false; }
|
||||
while (arguments.read("--smoother")) { useSmoothingVisitor=true; }
|
||||
while (arguments.read("--no-smoother")) { useSmoothingVisitor=false; }
|
||||
|
||||
@@ -426,7 +424,6 @@ public:
|
||||
OSG_NOTICE<<"Running simplifier with simplification ratio="<<simplificatioRatio<<std::endl;
|
||||
float maxError = 4.0f;
|
||||
osgUtil::Simplifier simplifier(simplificatioRatio, maxError);
|
||||
simplifier.setDoTriStrip(useTriStripVisitor);
|
||||
simplifier.setSmoothing(useSmoothingVisitor);
|
||||
node->accept(simplifier);
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ struct MyRigTransformHardware : public osgAnimation::RigTransformHardware
|
||||
CommonProgram = new osg::Program;
|
||||
CommonProgram->setName("HardwareSkinning");
|
||||
|
||||
//set default source if _shader is not user setted
|
||||
//set default source if _shader is not user set
|
||||
if (!vertexshader.valid())
|
||||
{
|
||||
vertexshader = osgDB::readRefShaderFile(osg::Shader::VERTEX,"skinning.vert");
|
||||
|
||||
@@ -245,7 +245,7 @@ int main( int argc, char **argv )
|
||||
traits->depth = src_traits->depth;
|
||||
traits->pbuffer = true;
|
||||
} else {
|
||||
//viewer would use fullscreen size (unknown here) pbuffer will use 4096 x4096 (or best avaiable)
|
||||
//viewer would use fullscreen size (unknown here) pbuffer will use 4096 x4096 (or best available)
|
||||
traits->width = 1 << 12;
|
||||
traits->height = 1 << 12;
|
||||
traits->pbuffer = true;
|
||||
|
||||
@@ -509,7 +509,7 @@ int main( int argc, char **argv )
|
||||
// any option left unread are converted into errors to write out later.
|
||||
arguments.reportRemainingOptionsAsUnrecognized();
|
||||
|
||||
// report any errors if they have occurred when parsing the program aguments.
|
||||
// report any errors if they have occurred when parsing the program arguments.
|
||||
if (arguments.errors())
|
||||
{
|
||||
arguments.writeErrorMessages(std::cout);
|
||||
|
||||
@@ -91,7 +91,7 @@ private:
|
||||
bool createMap(MapMode mapMode, bool first=false);
|
||||
|
||||
/*!
|
||||
Creates a two dimensional noise map and initalizes _noiseMap with it
|
||||
Creates a two dimensional noise map and initializes _noiseMap with it
|
||||
*/
|
||||
bool createNoiseMap();
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ class DePeePass
|
||||
DePeePass();
|
||||
|
||||
/*!
|
||||
Desctructor cleans the whole depth peeling pass
|
||||
Destructor cleans the whole depth peeling pass
|
||||
*/
|
||||
~DePeePass();
|
||||
|
||||
|
||||
@@ -381,7 +381,7 @@ AppState::AppState(osgViewer::Viewer* viewer_)
|
||||
textProjection = new Projection;
|
||||
textProjection->setMatrix(Matrix::ortho2D(0,1280,0,1024));
|
||||
textProjection->addChild(textGeode);
|
||||
// "texture not available" text displayed when the user trys to
|
||||
// "texture not available" text displayed when the user tries to
|
||||
// display the depth texture while multisampling.
|
||||
osgText::Text* noCanDo = new osgText::Text;
|
||||
noCanDo->setFont(fontName);
|
||||
|
||||
@@ -74,7 +74,7 @@ int main( int argc, char **argv )
|
||||
arguments.getApplicationUsage()->setCommandLineUsage(arguments.getApplicationName()+" [options]");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("-h or --help","Display this information");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("-i <filename>","Input scene (or presentation) filename.");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("-o <filename>","Base ouput filename of the images, recommended to use something like Images/image.png");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("-o <filename>","Base output filename of the images, recommended to use something like Images/image.png");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("--cs <filename>","Load pre-generated configuration file for run.");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("--ouput-cs <filename>","Output configuration file with settings provided on commandline.");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("-p <filename>","Use specificied camera path file to control camera position.");
|
||||
|
||||
@@ -96,7 +96,7 @@ int main(int argc, char *argv[])
|
||||
osg::ArgumentParser arguments(&argc,argv);
|
||||
|
||||
// set up the usage document, in case we need to print out how to use this program.
|
||||
arguments.getApplicationUsage()->setDescription(arguments.getApplicationName()+" is the example which demonstrates ping pong rendering with FBOs and mutliple rendering branches. It uses Conway's Game of Life to illustrate the concept.");
|
||||
arguments.getApplicationUsage()->setDescription(arguments.getApplicationName()+" is the example which demonstrates ping pong rendering with FBOs and multiple rendering branches. It uses Conway's Game of Life to illustrate the concept.");
|
||||
arguments.getApplicationUsage()->setCommandLineUsage(arguments.getApplicationName()+" [options] --startim start_image");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("-h or --help","Display this information");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("--startim","The initial image to seed the game of life with.");
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
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
|
||||
- I used BufferTemplate class written 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.
|
||||
@@ -1145,7 +1145,7 @@ osg::Group* createAirplane( float detailRatio, const osg::Vec4& hullColor, const
|
||||
return root.release();
|
||||
}
|
||||
|
||||
// createStaticRendering() shows how to use any OSG graph ( wheter it is single osg::Geode, or sophisticated osg::PagedLOD tree covering whole earth )
|
||||
// createStaticRendering() shows how to use any OSG graph ( whether it is single osg::Geode, or sophisticated osg::PagedLOD tree covering whole earth )
|
||||
// as a source of instance data. This way, the OSG graph of arbitrary size is at first culled using typical OSG mechanisms, then remaining osg::Geometries
|
||||
// are sent to cull shader ( cullProgram ). Cull shader does not draw anything to screen ( thanks to GL_RASTERIZER_DISCARD mode ), but calculates if particular
|
||||
// instances - sourced from above mentioned osg::Geometries - are visible and what LODs for these instances should be rendered.
|
||||
|
||||
@@ -125,7 +125,7 @@ int main( int argc, char **argv )
|
||||
osg::ArgumentParser arguments(&argc,argv);
|
||||
|
||||
// set up the usage document, in case we need to print out how to use this program.
|
||||
arguments.getApplicationUsage()->setDescription(arguments.getApplicationName()+" is the example which demonstrates how to create a scene programatically, in this case a hang gliding flying site.");
|
||||
arguments.getApplicationUsage()->setDescription(arguments.getApplicationName()+" is the example which demonstrates how to create a scene programmatically, in this case a hang gliding flying site.");
|
||||
arguments.getApplicationUsage()->setCommandLineUsage(arguments.getApplicationName()+" [options] filename ...");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("-h or --help","Display this information");
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
#include "stdio.h"
|
||||
|
||||
|
||||
// callback to make the loaded model oscilate up and down.
|
||||
// callback to make the loaded model oscillate up and down.
|
||||
class ModelTransformCallback : public osg::NodeCallback
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -326,7 +326,7 @@ int main( int argc, char **argv )
|
||||
arguments.getApplicationUsage()->addCommandLineOption("--texture <width> <height> <depth>","Allocate a 3D texture of specified dimensions.");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("--texture <width> <height>","Allocate a 2D texture of specified dimensions.");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("--texture <width>","Allocate a 1D texture of specified dimensions.");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("--geometry <width> <height>","Allocate a osg::Geometry representing a grid of specified size, using OpenGL Dislay Lists.");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("--geometry <width> <height>","Allocate a osg::Geometry representing a grid of specified size, using OpenGL Display Lists.");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("--geometry-va <width> <height>","Allocate a osg::Geometry representing a grid of specified size, using Vertex Arrays.");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("--geometry-vbo <width> <height>","Allocate a osg::Geometry representing a grid of specified size, using Vertex Buffer Objects.");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("--fbo <width> <height>","Allocate a FrameBufferObject of specified dimensions.");
|
||||
|
||||
@@ -290,7 +290,7 @@ int main( int argc, char **argv )
|
||||
arguments.getApplicationUsage()->setDescription(arguments.getApplicationName()+" is the example which demonstrates use of convex planer occluders.");
|
||||
arguments.getApplicationUsage()->setCommandLineUsage(arguments.getApplicationName()+" [options] filename ...");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("-h or --help","Display this information");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("-m","Mannually create occluders");
|
||||
arguments.getApplicationUsage()->addCommandLineOption("-m","Manually create occluders");
|
||||
|
||||
// initialize the viewer.
|
||||
osgViewer::Viewer viewer;
|
||||
|
||||
@@ -444,7 +444,7 @@ void build_world(osg::Group *root)
|
||||
// the second one will be a little bit more complex, showing how to
|
||||
// create custom operators.
|
||||
// To avoid inserting too much code in a single function, we have
|
||||
// splitted the work into two functions which accept a Group node as
|
||||
// split the work into two functions which accept a Group node as
|
||||
// parameter, and return a pointer to the particle system they created.
|
||||
|
||||
osgParticle::ParticleSystem *ps1 = create_simple_particle_system(root);
|
||||
|
||||
@@ -317,7 +317,7 @@ public:
|
||||
// insert particle effects alongside the hit node, therefore able to track that nodes movement,
|
||||
// however, this does require us to insert the ParticleSystem itself into the root of the scene graph
|
||||
// separately from the main particle effects group which contains the emitters and programs.
|
||||
// the follow code block implements this, note the path for handling particle effects which arn't attached to
|
||||
// the follow code block implements this, note the path for handling particle effects which aren't attached to
|
||||
// moving models is easy - just a single line of code!
|
||||
|
||||
// tell the effects not to attach to the particle system locally for rendering, as we'll handle add it into the
|
||||
|
||||
@@ -155,7 +155,7 @@ int main( int argc, char** argv )
|
||||
root->addChild( parent.get() );
|
||||
root->addChild( updater.get() );
|
||||
|
||||
// FIXME 2010.9.19: the updater can't be a drawable; otehrwise the ParticleEffect will not work properly. why?
|
||||
// FIXME 2010.9.19: the updater can't be a drawable; otherwise the ParticleEffect will not work properly. why?
|
||||
updater->addParticleSystem( ps.get() );
|
||||
|
||||
osg::ref_ptr<osg::Geode> geode = new osg::Geode;
|
||||
|
||||
@@ -747,7 +747,7 @@ int main( int argc, char **argv )
|
||||
|
||||
osg::ref_ptr<Album> album = new Album(arguments,width,height);
|
||||
|
||||
// creat the scene from the file list.
|
||||
// create the scene from the file list.
|
||||
osg::ref_ptr<osg::Group> rootNode = album->getScene();
|
||||
|
||||
if (!rootNode) return 0;
|
||||
|
||||
@@ -16,9 +16,7 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* osgpick sample
|
||||
* demonstrate use of osgUtil/PickVisitor for picking in a HUD or
|
||||
* in a 3d scene,
|
||||
/* osgpick sample - Mouse picking in a 3d scene,
|
||||
*/
|
||||
|
||||
#include <osgUtil/Optimizer>
|
||||
|
||||
@@ -50,7 +50,7 @@ int main(int argc, char** argv)
|
||||
if (script.valid()) scripts.push_back(script.get());
|
||||
}
|
||||
|
||||
// assgin script engine to scene graphs
|
||||
// assign script engine to scene graphs
|
||||
model->getOrCreateUserDataContainer()->addUserObject(osgDB::readFile<osg::ScriptEngine>("ScriptEngine.lua"));
|
||||
model->getOrCreateUserDataContainer()->addUserObject(osgDB::readFile<osg::ScriptEngine>("ScriptEngine.python"));
|
||||
model->getOrCreateUserDataContainer()->addUserObject(osgDB::readFile<osg::ScriptEngine>("ScriptEngine.js"));
|
||||
|
||||
@@ -120,7 +120,7 @@ int main(int argc, char* argv[])
|
||||
sampler2=(osg::Sampler*)(*it)->getTextureAttribute(0, osg::StateAttribute::SAMPLER);
|
||||
}
|
||||
if(sampler1.valid()&&sampler2.valid()){
|
||||
OSG_WARN<<"2samplers manipulator setted"<<std::endl;
|
||||
OSG_WARN<<"2samplers manipulator set"<<std::endl;
|
||||
viewer.addEventHandler(new SamplersKeyboardEventHandler(sampler1.get(), sampler2.get()));
|
||||
}
|
||||
}
|
||||
@@ -185,7 +185,7 @@ int main(int argc, char* argv[])
|
||||
im->dirty();
|
||||
tex2->setImage(im);
|
||||
}
|
||||
///Overrided Filtering setup
|
||||
///Overridden Filtering setup
|
||||
tex1->setFilter(osg::Texture::MAG_FILTER,osg::Texture::NEAREST);
|
||||
tex1->setFilter(osg::Texture::MIN_FILTER,osg::Texture::NEAREST);
|
||||
|
||||
|
||||
@@ -26,11 +26,16 @@
|
||||
#include <osgDB/ReadFile>
|
||||
#include <osgDB/WriteFile>
|
||||
|
||||
#include <osgViewer/GraphicsWindow>
|
||||
|
||||
#include <sstream>
|
||||
#include <iostream>
|
||||
|
||||
#define MIN_NEARFAROFFSET 0.1
|
||||
|
||||
// force the WIndowingSystem to initialize to allow us to create a graphics context.
|
||||
USE_GRAPHICSWINDOW()
|
||||
|
||||
class SliceProcessor
|
||||
{
|
||||
public:
|
||||
@@ -187,7 +192,7 @@ int main( int argc, char **argv )
|
||||
// pass frame stamp to the SceneView so that the update, cull and draw traversals all use the same FrameStamp
|
||||
sceneView->setFrameStamp(frameStamp.get());
|
||||
|
||||
// update the viewport dimensions, incase the window has been resized.
|
||||
// update the viewport dimensions, in case the window has been resized.
|
||||
sceneView->setViewport(0,0,traits->width,traits->height);
|
||||
|
||||
|
||||
|
||||
@@ -610,7 +610,7 @@ int main( int argc, char **argv )
|
||||
osg::TexMat* texmatLeft = new osg::TexMat;
|
||||
osg::TexMat* texmatRight = new osg::TexMat;
|
||||
|
||||
// creat the scene from the file list.
|
||||
// create the scene from the file list.
|
||||
osg::ref_ptr<osg::Switch> rootNode;
|
||||
if (!onDisk) rootNode = createScene(fileList,texmatLeft,texmatRight,radius,height,length);
|
||||
else rootNode=new osg::Switch();
|
||||
|
||||
@@ -235,7 +235,7 @@ class Teapot : public osg::Drawable
|
||||
// of OpenGL primitives.
|
||||
virtual void drawImplementation(osg::RenderInfo&) const
|
||||
{
|
||||
// teapot(..) doens't use vertex arrays at all so we don't need to toggle their state
|
||||
// teapot(..) doesn't use vertex arrays at all so we don't need to toggle their state
|
||||
// if we did we'd need to something like following call
|
||||
// state.disableAllVertexArrays(), see src/osg/Geometry.cpp for the low down.
|
||||
|
||||
|
||||
@@ -379,6 +379,11 @@ int main(int argc, char** argv)
|
||||
terrain->setVerticalScale(verticalScale);
|
||||
terrain->setBlendingPolicy(blendingPolicy);
|
||||
|
||||
if (arguments.read("--equalize-boundaries") || arguments.read("-e"))
|
||||
{
|
||||
terrain->setEqualizeBoundaries(true);
|
||||
}
|
||||
|
||||
|
||||
if (useDisplacementMappingTechnique)
|
||||
{
|
||||
|
||||
@@ -61,7 +61,7 @@ class /*OSGTEXT_EXPORT*/ TextTechnique : public osg::Object
|
||||
/// default TextTechnique implementation used if no other is specified on TextNode
|
||||
static osg::ref_ptr<TextTechnique>& getDefaultTextTechinque();
|
||||
|
||||
/// start building a new charater layout
|
||||
/// start building a new character layout
|
||||
virtual void start();
|
||||
|
||||
/// called by Layout engine to place individual characters
|
||||
@@ -70,7 +70,7 @@ class /*OSGTEXT_EXPORT*/ TextTechnique : public osg::Object
|
||||
/// called by Layout engine to place individual characters
|
||||
virtual void addCharacter(const osg::Vec3& position, const osg::Vec3& size, Glyph3D* glyph, Style* style);
|
||||
|
||||
/// finish building new charater layout
|
||||
/// finish building new character layout
|
||||
virtual void finish();
|
||||
|
||||
/// provide traversal control
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <osgGA/TrackballManipulator>
|
||||
|
||||
// This is an implementation of SimpleViewer that is designed to be subclassed
|
||||
// and used as a GtkDrawingArea in a GTK application. Because of the implemention
|
||||
// and used as a GtkDrawingArea in a GTK application. Because of the implementation
|
||||
// of GTK, I was unable to derive from GtkWidget and instead had to "wrap" it.
|
||||
// Conceptually, however, you can think of an OSGGTKDrawingArea as both an OSG
|
||||
// Viewer AND GtkDrawingArea.
|
||||
|
||||
@@ -211,7 +211,7 @@ osg::Node * CreateAdvancedHierarchy( osg::Node * model )
|
||||
|
||||
// Set default VirtualProgram in root StateSet
|
||||
// With main vertex and main fragment shaders calling
|
||||
// lighting and texture functions defined in aditional shaders
|
||||
// lighting and texture functions defined in additional shaders
|
||||
// Lighting is done per vertex using simple directional light
|
||||
// Texture uses stage 0 TexCoords and TexMap
|
||||
|
||||
|
||||
@@ -45,10 +45,10 @@ public:
|
||||
Affinity& operator = (const Affinity& rhs) { if (&rhs!=this) { activeCPUs = rhs.activeCPUs; } return *this; }
|
||||
|
||||
|
||||
/** add a specfied cpu core from the list to have affinity to. */
|
||||
/** add a specified cpu core from the list to have affinity to. */
|
||||
void add(unsigned int cpuNmber) { activeCPUs.insert(cpuNmber); }
|
||||
|
||||
/** remove a specfied cpu core from the list to have affinity to. */
|
||||
/** remove a specified cpu core from the list to have affinity to. */
|
||||
void remove(unsigned int cpuNmber) { activeCPUs.erase(cpuNmber); }
|
||||
|
||||
/** return true if affinity has been provided for specific CPU cores.*/
|
||||
|
||||
@@ -190,7 +190,7 @@ public:
|
||||
/**
|
||||
* Set the thread's schedule priority. This is a complex method.
|
||||
* Beware of thread priorities when using a many-to-many kernel
|
||||
* entity implemenation (such as IRIX pthreads). If one is not careful
|
||||
* entity implementation (such as IRIX pthreads). If one is not careful
|
||||
* to manage the thread priorities, a priority inversion deadlock can
|
||||
* easily occur (Although the OpenThreads::Mutex & OpenThreads::Barrier
|
||||
* constructs have been designed with this scenario in mind). Unless
|
||||
|
||||
@@ -152,6 +152,14 @@ class BufferObjectProfile
|
||||
class GLBufferObjectSet;
|
||||
class GLBufferObjectManager;
|
||||
|
||||
inline unsigned int computeBufferAlignment(unsigned int pos, unsigned int bufferAlignment)
|
||||
{
|
||||
if (bufferAlignment<2) return pos;
|
||||
if ((pos%bufferAlignment)==0) return pos;
|
||||
return ((pos/bufferAlignment)+1)*bufferAlignment;
|
||||
}
|
||||
|
||||
|
||||
class OSG_EXPORT GLBufferObject : public GraphicsObject
|
||||
{
|
||||
public:
|
||||
@@ -235,9 +243,7 @@ class OSG_EXPORT GLBufferObject : public GraphicsObject
|
||||
|
||||
unsigned int computeBufferAlignment(unsigned int pos, unsigned int bufferAlignment) const
|
||||
{
|
||||
if (bufferAlignment<2) return pos;
|
||||
if ((pos%bufferAlignment)==0) return pos;
|
||||
return ((pos/bufferAlignment)+1)*bufferAlignment;
|
||||
return osg::computeBufferAlignment(pos, bufferAlignment);
|
||||
}
|
||||
|
||||
unsigned int _contextID;
|
||||
@@ -431,10 +437,10 @@ class OSG_EXPORT BufferObject : public Object
|
||||
const BufferObjectProfile& getProfile() const { return _profile; }
|
||||
|
||||
|
||||
/** Set whether the BufferObject should use a GLBufferObject just for copying the BufferData and release it immmediately so that it may be reused.*/
|
||||
/** Set whether the BufferObject should use a GLBufferObject just for copying the BufferData and release it immediately so that it may be reused.*/
|
||||
void setCopyDataAndReleaseGLBufferObject(bool copyAndRelease) { _copyDataAndReleaseGLBufferObject = copyAndRelease; }
|
||||
|
||||
/** Get whether the BufferObject should use a GLBufferObject just for copying the BufferData and release it immmediately.*/
|
||||
/** Get whether the BufferObject should use a GLBufferObject just for copying the BufferData and release it immediately.*/
|
||||
bool getCopyDataAndReleaseGLBufferObject() const { return _copyDataAndReleaseGLBufferObject; }
|
||||
|
||||
|
||||
|
||||
@@ -158,7 +158,7 @@ public:
|
||||
|
||||
};
|
||||
|
||||
/** Convenience function for getting the CallbackObject associated with specificed name from an Object's UserDataContainer.*/
|
||||
/** Convenience function for getting the CallbackObject associated with specified name from an Object's UserDataContainer.*/
|
||||
inline CallbackObject* getCallbackObject(osg::Object* object, const std::string& name)
|
||||
{
|
||||
osg::UserDataContainer* udc = object->getUserDataContainer();
|
||||
@@ -171,7 +171,7 @@ inline CallbackObject* getCallbackObject(osg::Object* object, const std::string&
|
||||
}
|
||||
|
||||
|
||||
/** Convenience function for getting the CallbackObject associated with specificed name from an Object's UserDataContainer.*/
|
||||
/** Convenience function for getting the CallbackObject associated with specified name from an Object's UserDataContainer.*/
|
||||
inline const CallbackObject* getCallbackObject(const osg::Object* object, const std::string& name)
|
||||
{
|
||||
const osg::UserDataContainer* udc = object->getUserDataContainer();
|
||||
|
||||
@@ -566,7 +566,7 @@ inline void Drawable::draw(RenderInfo& renderInfo) const
|
||||
|
||||
State::SetCurrentVertexArrayStateProxy setVASProxy(state, vas);
|
||||
|
||||
vas->bindVertexArrayObject();
|
||||
state.bindVertexArrayObject(vas);
|
||||
|
||||
drawInner(renderInfo);
|
||||
|
||||
@@ -576,7 +576,11 @@ inline void Drawable::draw(RenderInfo& renderInfo) const
|
||||
}
|
||||
|
||||
// TODO, add check against whether VAO is active and supported
|
||||
if (state.getCurrentVertexArrayState()) state.getCurrentVertexArrayState()->bindVertexArrayObject();
|
||||
if (state.getCurrentVertexArrayState())
|
||||
{
|
||||
//OSG_NOTICE<<"state.getCurrentVertexArrayState()->getVertexArrayObject()="<< state.getCurrentVertexArrayState()->getVertexArrayObject()<<std::endl;
|
||||
state.bindVertexArrayObject(state.getCurrentVertexArrayState());
|
||||
}
|
||||
|
||||
|
||||
#ifdef OSG_GL_DISPLAYLISTS_AVAILABLE
|
||||
|
||||
@@ -56,6 +56,13 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// helper macro's for quieten unused variable warnings
|
||||
#define OSG_UNUSED(VAR) (void)(VAR)
|
||||
#define OSG_UNUSED2(VAR1, VAR2) (void)(VAR1); (void)(VAR2);
|
||||
#define OSG_UNUSED3(VAR1, VAR2, VAR3) (void)(VAR1); (void)(VAR2); (void)(VAR2);
|
||||
#define OSG_UNUSED4(VAR1, VAR2, VAR3, VAR4) (void)(VAR1); (void)(VAR2); (void)(VAR3); (void)(VAR4);
|
||||
#define OSG_UNUSED5(VAR1, VAR2, VAR3, VAR4, VAR5) (void)(VAR1); (void)(VAR2); (void)(VAR3); (void)(VAR4); (void)(VAR5);
|
||||
|
||||
/**
|
||||
|
||||
\namespace osg
|
||||
|
||||
@@ -433,7 +433,7 @@ class OSG_EXPORT Image : public BufferData
|
||||
|
||||
/** Ensure image dimensions are a power of two.
|
||||
* Mipmapped textures require the image dimensions to be
|
||||
* power of two and are within the maxiumum texture size for
|
||||
* power of two and are within the maximum texture size for
|
||||
* the host machine.
|
||||
*/
|
||||
void ensureValidSizeForTexturing(GLint maxTextureSize);
|
||||
|
||||
@@ -194,11 +194,11 @@ class OSG_EXPORT Node : public Object
|
||||
|
||||
|
||||
/** Get the list of node paths parent paths.
|
||||
* The optional Node* haltTraversalAtNode allows the user to prevent traversal beyond a specifed node. */
|
||||
* The optional Node* haltTraversalAtNode allows the user to prevent traversal beyond a specified node. */
|
||||
NodePathList getParentalNodePaths(osg::Node* haltTraversalAtNode=0) const;
|
||||
|
||||
/** Get the list of matrices that transform this node from local coordinates to world coordinates.
|
||||
* The optional Node* haltTraversalAtNode allows the user to prevent traversal beyond a specifed node. */
|
||||
* The optional Node* haltTraversalAtNode allows the user to prevent traversal beyond a specified node. */
|
||||
MatrixList getWorldMatrices(const osg::Node* haltTraversalAtNode=0) const;
|
||||
|
||||
|
||||
|
||||
@@ -154,7 +154,7 @@ class OSG_EXPORT PagedLOD : public LOD
|
||||
/** Get the number of children that the PagedLOD must keep around, even if they are older than their expiry time.*/
|
||||
unsigned int getNumChildrenThatCannotBeExpired() const { return _numChildrenThatCannotBeExpired; }
|
||||
|
||||
/** Set wether you want to disable the paging in of external nodes.*/
|
||||
/** Set whether you want to disable the paging in of external nodes.*/
|
||||
void setDisableExternalChildrenPaging(bool flag) { _disableExternalChildrenPaging = flag; }
|
||||
|
||||
bool getDisableExternalChildrenPaging() const { return _disableExternalChildrenPaging; }
|
||||
|
||||
@@ -47,7 +47,7 @@ class OSG_EXPORT Referenced
|
||||
|
||||
Referenced();
|
||||
|
||||
/** Deprecated, Referenced is now always uses thread safe ref/unref, use default Refernced() constructor instead */
|
||||
/** Deprecated, Referenced is now always uses thread safe ref/unref, use default Referenced() constructor instead */
|
||||
explicit Referenced(bool threadSafeRefUnref);
|
||||
|
||||
Referenced(const Referenced&);
|
||||
|
||||
@@ -747,7 +747,7 @@ class TessellationHints : public Object
|
||||
// forward declare;
|
||||
class Geometry;
|
||||
|
||||
/** Convenience class for populating an Geomtry with vertex, normals, texture coords and primitives that can render a Shape. */
|
||||
/** Convenience class for populating an Geometry with vertex, normals, texture coords and primitives that can render a Shape. */
|
||||
class OSG_EXPORT BuildShapeGeometryVisitor : public ConstShapeVisitor
|
||||
{
|
||||
public:
|
||||
@@ -768,10 +768,13 @@ class OSG_EXPORT BuildShapeGeometryVisitor : public ConstShapeVisitor
|
||||
virtual void apply(const CompositeShape&);
|
||||
|
||||
void Normal(const Vec3f& v) { _normals->push_back(v); }
|
||||
void Normal3f(float x, float y, float z) { _normals->push_back(Vec3(x,y,z)); }
|
||||
void TexCoord2f(float x, float y) { _texcoords->push_back(Vec2(x,y)); }
|
||||
void Vertex(const Vec3f& v) { _vertices->push_back(v); }
|
||||
void Vertex3f(float x, float y, float z) { _vertices->push_back(Vec3(x,y,z)); }
|
||||
void Normal3f(float x, float y, float z) { Normal(Vec3(x,y,z)); }
|
||||
|
||||
void TexCoord(const Vec2f& tc) { _texcoords->push_back(tc); }
|
||||
void TexCoord2f(float x, float y) { TexCoord(Vec2(x,y)); }
|
||||
|
||||
void Vertex(const Vec3f& v);
|
||||
void Vertex3f(float x, float y, float z) { Vertex(Vec3(x,y,z)); }
|
||||
|
||||
void setMatrix(const Matrixd& m);
|
||||
|
||||
|
||||
@@ -834,11 +834,13 @@ class OSG_EXPORT State : public Referenced
|
||||
/** Get the const DisplaySettings */
|
||||
inline const DisplaySettings* getDisplaySettings() const { return _displaySettings.get(); }
|
||||
|
||||
/** Get the DisplaySettings that is current active DisplaySettings to be used by osg::State, - if DisplaySettings is not directly assigned then fallback to DisplaySettings::instance(). */
|
||||
inline DisplaySettings* getActiveDisplaySettings() { return _displaySettings.valid() ? _displaySettings.get() : osg::DisplaySettings::instance().get(); }
|
||||
|
||||
/** Get the const DisplaySettings that is current active DisplaySettings to be used by osg::State, - if DisplaySettings is not directly assigned then fallback to DisplaySettings::instance(). */
|
||||
inline const DisplaySettings* getActiveDisplaySettings() const { return _displaySettings.valid() ? _displaySettings.get() : osg::DisplaySettings::instance().get(); }
|
||||
|
||||
|
||||
|
||||
/** Set flag for early termination of the draw traversal.*/
|
||||
void setAbortRenderingPtr(bool* abortPtr) { _abortRenderingPtr = abortPtr; }
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
namespace osg {
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
typedef __int64 Timer_t;
|
||||
typedef unsigned __int64 Timer_t;
|
||||
#else
|
||||
typedef unsigned long long Timer_t;
|
||||
#endif
|
||||
|
||||
@@ -203,14 +203,14 @@ protected:
|
||||
};
|
||||
|
||||
|
||||
/** Convenience function for getting the User Object associated with specificed name from an Object's UserDataContainer.*/
|
||||
/** Convenience function for getting the User Object associated with specified name from an Object's UserDataContainer.*/
|
||||
inline Object* getUserObject(osg::Object* object, const std::string& name)
|
||||
{
|
||||
osg::UserDataContainer* udc = object->getUserDataContainer();
|
||||
return udc ? udc->getUserObject(name) : 0;
|
||||
}
|
||||
|
||||
/** Convenience function for getting the User Object associated with specificed name from an Object's UserDataContainer.*/
|
||||
/** Convenience function for getting the User Object associated with specified name from an Object's UserDataContainer.*/
|
||||
inline const Object* getUserObject(const osg::Object* object, const std::string& name)
|
||||
{
|
||||
const osg::UserDataContainer* udc = object->getUserDataContainer();
|
||||
|
||||
@@ -28,7 +28,7 @@ class Vec2i
|
||||
/** Number of vector components. */
|
||||
enum { num_components = 2 };
|
||||
|
||||
/** Vec member varaible. */
|
||||
/** Vec member variable. */
|
||||
value_type _v[2];
|
||||
|
||||
Vec2i() { _v[0]=0; _v[1]=0; }
|
||||
|
||||
@@ -28,7 +28,7 @@ class Vec2ui
|
||||
/** Number of vector components. */
|
||||
enum { num_components = 2 };
|
||||
|
||||
/** Vec member varaible. */
|
||||
/** Vec member variable. */
|
||||
value_type _v[2];
|
||||
|
||||
Vec2ui() { _v[0]=0; _v[1]=0; }
|
||||
|
||||
@@ -28,7 +28,7 @@ class Vec3i
|
||||
/** Number of vector components. */
|
||||
enum { num_components = 3 };
|
||||
|
||||
/** Vec member varaible. */
|
||||
/** Vec member variable. */
|
||||
value_type _v[3];
|
||||
|
||||
Vec3i() { _v[0]=0; _v[1]=0; _v[2]=0; }
|
||||
|
||||
@@ -28,7 +28,7 @@ class Vec3ui
|
||||
/** Number of vector components. */
|
||||
enum { num_components = 3 };
|
||||
|
||||
/** Vec member varaible. */
|
||||
/** Vec member variable. */
|
||||
value_type _v[3];
|
||||
|
||||
Vec3ui() { _v[0]=0; _v[1]=0; _v[2]=0; }
|
||||
|
||||
@@ -28,7 +28,7 @@ class Vec4i
|
||||
/** Number of vector components. */
|
||||
enum { num_components = 4 };
|
||||
|
||||
/** Vec member varaible. */
|
||||
/** Vec member variable. */
|
||||
value_type _v[4];
|
||||
|
||||
Vec4i() { _v[0]=0; _v[1]=0; _v[2]=0; _v[3]=0; }
|
||||
|
||||
@@ -28,7 +28,7 @@ class Vec4ui
|
||||
/** Number of vector components. */
|
||||
enum { num_components = 4 };
|
||||
|
||||
/** Vec member varaible. */
|
||||
/** Vec member variable. */
|
||||
value_type _v[4];
|
||||
|
||||
Vec4ui() { _v[0]=0; _v[1]=0; _v[2]=0; _v[3]=0; }
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#include <ostream>
|
||||
#include <istream>
|
||||
#include <sstream>
|
||||
|
||||
#include <osg/Vec4d>
|
||||
#include <osg/Vec4ub>
|
||||
@@ -35,6 +36,43 @@
|
||||
namespace osg {
|
||||
|
||||
|
||||
/** Convinience class for building std::string using stringstream.
|
||||
* Usage:
|
||||
* MakeString str;
|
||||
* std::string s = str<<"Mix strings with numbers "<<0" ;
|
||||
* std::string s2 = str.clear()<<"and other classes such as ("<<osg::Vec3(0.0,1.0,3.0)<<)" ; */
|
||||
class MakeString
|
||||
{
|
||||
public:
|
||||
MakeString() {}
|
||||
|
||||
std::stringstream sstream;
|
||||
|
||||
template<typename T>
|
||||
MakeString& operator << (const T& t)
|
||||
{
|
||||
sstream << t;
|
||||
return *this;
|
||||
}
|
||||
|
||||
MakeString& operator << (std::ostream& (*fun)(std::ostream&))
|
||||
{
|
||||
sstream << fun;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline MakeString& clear() { sstream.str("") ; return *this; }
|
||||
|
||||
inline operator std::string () const { return sstream.str(); }
|
||||
|
||||
inline std::string str() const { return sstream.str(); }
|
||||
inline const char* c_str() const { return sstream.str().c_str(); }
|
||||
};
|
||||
|
||||
|
||||
|
||||
inline std::ostream& operator << (std::ostream& output, const MakeString& str) { output << str.str(); return output; }
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Vec2f streaming operators
|
||||
inline std::ostream& operator << (std::ostream& output, const Vec2f& vec)
|
||||
|
||||
@@ -30,6 +30,8 @@ extern OSG_EXPORT int osg_system(const char* str);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <string>
|
||||
|
||||
#if defined(OSG_ENVVAR_SUPPORTED)
|
||||
#include <stdlib.h>
|
||||
#include <sstream>
|
||||
@@ -47,11 +49,16 @@ inline unsigned int getClampedLength(const char* str, unsigned int maxNumChars=4
|
||||
|
||||
inline std::string getEnvVar(const char* name)
|
||||
{
|
||||
#ifdef OSG_ENVVAR_SUPPORTED
|
||||
std::string value;
|
||||
const char* ptr = getenv(name);
|
||||
if (ptr) value.assign(ptr, getClampedLength(ptr));
|
||||
return value;
|
||||
}
|
||||
#else
|
||||
OSG_UNUSED(name);
|
||||
return std::string();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
template<typename T>
|
||||
@@ -65,6 +72,7 @@ inline bool getEnvVar(const char* name, T& value)
|
||||
str >> value;
|
||||
return !str.fail();
|
||||
#else
|
||||
OSG_UNUSED2(name, value);
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
@@ -79,6 +87,7 @@ inline bool getEnvVar(const char* name, std::string& value)
|
||||
value.assign(ptr, getClampedLength(ptr));
|
||||
return true;
|
||||
#else
|
||||
OSG_UNUSED2(name, value);
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
@@ -94,6 +103,7 @@ inline bool getEnvVar(const char* name, T1& value1, T2& value2)
|
||||
str >> value1 >> value2;
|
||||
return !str.fail();
|
||||
#else
|
||||
OSG_UNUSED3(name, value1, value2);
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
@@ -109,6 +119,7 @@ inline bool getEnvVar(const char* name, T1& value1, T2& value2, T3& value3)
|
||||
str >> value1 >> value2 >> value3;
|
||||
return !str.fail();
|
||||
#else
|
||||
OSG_UNUSED4(name, value1, value2, value3);
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
@@ -124,6 +135,7 @@ inline bool getEnvVar(const char* name, T1& value1, T2& value2, T3& value3, T4&
|
||||
str >> value1 >> value2 >> value3 >> value4;
|
||||
return !str.fail();
|
||||
#else
|
||||
OSG_UNUSED5(name, value1, value2, value3, value4);
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ class ref_ptr
|
||||
bool operator < (const ref_ptr& rp) const { return (_ptr<rp._ptr); }
|
||||
|
||||
|
||||
// follows is an implmentation of the "safe bool idiom", details can be found at:
|
||||
// follows is an implementation of the "safe bool idiom", details can be found at:
|
||||
// http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Safe_bool
|
||||
// http://lists.boost.org/Archives/boost/2003/09/52856.php
|
||||
|
||||
|
||||
@@ -135,15 +135,15 @@ namespace osgAnimation
|
||||
template <class V>
|
||||
inline void compute(const osg::Matrix& transform, const osg::Matrix& invTransform, const V* src, V* dst)
|
||||
{
|
||||
// the result of matrix mult should be cached to be used for vertexes transform and normal transform and maybe other computation
|
||||
// the result of matrix mult should be cached to be used for vertices transform and normal transform and maybe other computation
|
||||
for(VertexGroupList::iterator itvg=_uniqVertexGroupList.begin(); itvg!=_uniqVertexGroupList.end(); ++itvg)
|
||||
{
|
||||
VertexGroup& uniq = *itvg;
|
||||
uniq.computeMatrixForVertexSet();
|
||||
osg::Matrix matrix = transform * uniq.getMatrix() * invTransform;
|
||||
|
||||
const IndexList& vertexes = uniq.getVertices();
|
||||
for(IndexList::const_iterator vertIDit=vertexes.begin(); vertIDit!=vertexes.end(); ++vertIDit)
|
||||
const IndexList& vertices = uniq.getVertices();
|
||||
for(IndexList::const_iterator vertIDit=vertices.begin(); vertIDit!=vertices.end(); ++vertIDit)
|
||||
{
|
||||
dst[*vertIDit] = src[*vertIDit] * matrix;
|
||||
}
|
||||
@@ -160,8 +160,8 @@ namespace osgAnimation
|
||||
uniq.computeMatrixForVertexSet();
|
||||
osg::Matrix matrix = transform * uniq.getMatrix() * invTransform;
|
||||
|
||||
const IndexList& vertexes = uniq.getVertices();
|
||||
for(IndexList::const_iterator vertIDit=vertexes.begin(); vertIDit!=vertexes.end(); ++vertIDit)
|
||||
const IndexList& vertices = uniq.getVertices();
|
||||
for(IndexList::const_iterator vertIDit=vertices.begin(); vertIDit!=vertices.end(); ++vertIDit)
|
||||
{
|
||||
dst[*vertIDit] = osg::Matrix::transform3x3(src[*vertIDit],matrix);
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ namespace osgAnimation
|
||||
///normalize per vertex weights given numvert of the attached mesh
|
||||
void normalize(unsigned int numvert);
|
||||
|
||||
///remove weakest influences in order to fit targetted numbonepervertex
|
||||
///remove weakest influences in order to fit targeted numbonepervertex
|
||||
void cullInfluenceCountPerVertex(unsigned int maxnumbonepervertex, float minweight=0, bool renormalize=true);
|
||||
|
||||
//compute PerVertexInfluenceList
|
||||
|
||||
@@ -110,12 +110,12 @@ DECLARE_TYPE(osg::BoundingBoxd, BOUNDINGBOXD)
|
||||
DECLARE_TYPE(osg::BoundingSpheref, BOUNDINGSPHEREF)
|
||||
DECLARE_TYPE(osg::BoundingSphered, BOUNDINGSPHERED)
|
||||
|
||||
// forward decalare
|
||||
// forward declare
|
||||
class PropertyOutputIterator;
|
||||
class PropertyInputIterator;
|
||||
|
||||
|
||||
/** ClassInterface provides a general means of checking for supported properties of classes, and getting/setting thoses properties.
|
||||
/** ClassInterface provides a general means of checking for supported properties of classes, and getting/setting those properties.
|
||||
Uses the osgDB serializers to do the actual object query/get/set.
|
||||
*/
|
||||
class OSGDB_EXPORT ClassInterface
|
||||
@@ -166,10 +166,10 @@ public:
|
||||
/// run method of object
|
||||
bool run(osg::Object* object, const std::string& methodName, osg::Parameters& inputParameters, osg::Parameters& outputParameters) const;
|
||||
|
||||
/// checked for support of specificed method
|
||||
/// checked for support of specified method
|
||||
bool hasMethod(const std::string& compoundClassName, const std::string& methodName) const;
|
||||
|
||||
/// checked for support of specificed method
|
||||
/// checked for support of specified method
|
||||
bool hasMethod(const osg::Object* object, const std::string& methodName) const;
|
||||
|
||||
|
||||
|
||||
@@ -434,7 +434,7 @@ class OSGDB_EXPORT DatabasePager : public osg::NodeVisitor::DatabaseRequestHandl
|
||||
void compileCompleted(DatabaseRequest* databaseRequest);
|
||||
|
||||
/** Iterate through the active PagedLOD nodes children removing
|
||||
* children which havn't been visited since specified expiryTime.
|
||||
* children which haven't been visited since specified expiryTime.
|
||||
* note, should be only be called from the update thread. */
|
||||
virtual void removeExpiredSubgraphs(const osg::FrameStamp &frameStamp);
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ extern OSGDB_EXPORT std::string getNameLessAllExtensions(const std::string& file
|
||||
extern OSGDB_EXPORT std::string getStrippedName(const std::string& fileName);
|
||||
/** If 'to' is in a subdirectory of 'from' then this function returns the subpath, otherwise it just returns the file name.
|
||||
* The function does \b not automagically resolve paths as the system does, so be careful to give canonical paths.
|
||||
* However, the function interprets slashes ('/') ans backslashes ('\') as they were equal.
|
||||
* However, the function interprets slashes ('/') and backslashes ('\') as they were equal.
|
||||
*/
|
||||
extern OSGDB_EXPORT std::string getPathRelative(const std::string& from, const std::string& to);
|
||||
/** Gets root part of a path ("/" or "C:"), or an empty string if none found. */
|
||||
|
||||
@@ -181,10 +181,10 @@ public:
|
||||
else return 0;
|
||||
}
|
||||
|
||||
/// set an input iterator, used directly when not using InputStream with a traditional file releated stream.
|
||||
/// set an input iterator, used directly when not using InputStream with a traditional file related stream.
|
||||
void setInputIterator( InputIterator* ii ) { _in = ii; }
|
||||
|
||||
/// start reading from InputStream treating it as a traditional file releated stream, handles headers and versioning
|
||||
/// start reading from InputStream treating it as a traditional file related stream, handles headers and versioning
|
||||
ReadType start( InputIterator* );
|
||||
|
||||
void decompress();
|
||||
|
||||
@@ -70,14 +70,17 @@ class OSGDB_EXPORT ObjectCache : public osg::Referenced
|
||||
|
||||
typedef std::pair<std::string, osg::ref_ptr<const osgDB::Options> > FileNameOptionsPair;
|
||||
|
||||
class ClassComp {
|
||||
public:
|
||||
struct ClassComp
|
||||
{
|
||||
bool operator() (const ObjectCache::FileNameOptionsPair& lhs, const ObjectCache::FileNameOptionsPair& rhs) const;
|
||||
};
|
||||
|
||||
|
||||
typedef std::pair<osg::ref_ptr<osg::Object>, double > ObjectTimeStampPair;
|
||||
typedef std::map<FileNameOptionsPair, ObjectTimeStampPair, ClassComp> ObjectCacheMap;
|
||||
|
||||
ObjectCacheMap::iterator find(const std::string& fileName, const osgDB::Options* options);
|
||||
|
||||
ObjectCacheMap _objectCache;
|
||||
OpenThreads::Mutex _objectCacheMutex;
|
||||
|
||||
|
||||
@@ -95,21 +95,9 @@ class OSGDB_EXPORT Options : public osg::Object
|
||||
};
|
||||
|
||||
|
||||
Options():
|
||||
osg::Object(true),
|
||||
_objectCacheHint(CACHE_ARCHIVES),
|
||||
_precisionHint(FLOAT_PRECISION_ALL),
|
||||
_buildKdTreesHint(NO_PREFERENCE) {}
|
||||
Options();
|
||||
|
||||
Options(const std::string& str):
|
||||
osg::Object(true),
|
||||
_str(str),
|
||||
_objectCacheHint(CACHE_ARCHIVES),
|
||||
_precisionHint(FLOAT_PRECISION_ALL),
|
||||
_buildKdTreesHint(NO_PREFERENCE)
|
||||
{
|
||||
parsePluginStringData(str);
|
||||
}
|
||||
Options(const std::string& str);
|
||||
|
||||
Options(const Options& options,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
|
||||
|
||||
@@ -257,10 +245,11 @@ class OSGDB_EXPORT Options : public osg::Object
|
||||
|
||||
bool operator < (const Options &rhs) const;
|
||||
bool operator == (const Options &rhs) const;
|
||||
virtual ~Options() {}
|
||||
|
||||
protected:
|
||||
|
||||
virtual ~Options();
|
||||
|
||||
std::string _str;
|
||||
FilePathList _databasePaths;
|
||||
|
||||
|
||||
@@ -173,10 +173,10 @@ public:
|
||||
void writeObjectFields( const osg::Object* obj );
|
||||
void writeObjectFields( const osg::Object* obj, const std::string& compoundName );
|
||||
|
||||
/// set an output iterator, used directly when not using OutputStream with a traditional file releated stream.
|
||||
/// set an output iterator, used directly when not using OutputStream with a traditional file related stream.
|
||||
void setOutputIterator( OutputIterator* oi ) { _out = oi; }
|
||||
|
||||
/// start writing to OutputStream treating it as a traditional file releated stream, handles headers and versioning
|
||||
/// start writing to OutputStream treating it as a traditional file related stream, handles headers and versioning
|
||||
void start( OutputIterator* outIterator, WriteType type );
|
||||
|
||||
void compress( std::ostream* ostream );
|
||||
|
||||
@@ -554,7 +554,7 @@ class OSGDB_EXPORT Registry : public osg::Referenced
|
||||
|
||||
public:
|
||||
/** Functor used in internal implementations.*/
|
||||
struct ReadFunctor
|
||||
struct ReadFunctor : public osg::Referenced
|
||||
{
|
||||
ReadFunctor(const std::string& filename, const Options* options):
|
||||
_filename(filename),
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace osgFX
|
||||
Cartoon();
|
||||
Cartoon(const Cartoon& copy, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
|
||||
|
||||
// effect class informations
|
||||
// effect class information
|
||||
META_Effect(
|
||||
osgFX,
|
||||
Cartoon,
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace osgFX
|
||||
Scribe();
|
||||
Scribe(const Scribe& copy, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
|
||||
|
||||
// effect class informations
|
||||
// effect class information
|
||||
META_Effect(
|
||||
osgFX,
|
||||
Scribe,
|
||||
|
||||
@@ -107,7 +107,7 @@ class OSGGA_EXPORT EventVisitor : public osg::NodeVisitor
|
||||
}
|
||||
|
||||
// The following overrides are technically redundant as the default implementation would eventually trickle down to
|
||||
// apply(osg::Node&); - however defining these explicitely should save a couple of virtual function calls
|
||||
// apply(osg::Node&); - however defining these explicitly should save a couple of virtual function calls
|
||||
virtual void apply(osg::Geode& node) { handle_callbacks_and_traverse(node); }
|
||||
virtual void apply(osg::Billboard& node) { handle_callbacks_and_traverse(node); }
|
||||
virtual void apply(osg::LightSource& node) { handle_callbacks_and_traverse(node); }
|
||||
|
||||
@@ -66,7 +66,7 @@ as appropriate for the viewer.
|
||||
|
||||
Events from the windowing environment are adpated, and then fed into the GUIEventHandlers.
|
||||
The GUIEventHandlers analyse and take action, and make requests of the windowing
|
||||
environemnt via the GUIActionAdapter. The viewer writer should then honour these
|
||||
environment via the GUIActionAdapter. The viewer writer should then honour these
|
||||
requests, translating them into calls to the windowing API.
|
||||
|
||||
*/
|
||||
|
||||
@@ -44,7 +44,7 @@ class OSGGA_EXPORT KeySwitchMatrixManipulator : public CameraManipulator
|
||||
void addMatrixManipulator(int key, std::string name, CameraManipulator *cm);
|
||||
|
||||
/**
|
||||
Add a camera manipulator with an autogenerated keybinding which is '1' + previous number of camera's registerd.
|
||||
Add a camera manipulator with an autogenerated keybinding which is '1' + previous number of camera's registered.
|
||||
*/
|
||||
void addNumberedMatrixManipulator(CameraManipulator *cm);
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
#include <osg/BoundingSphere>
|
||||
#include <osg/MatrixTransform>
|
||||
#include <osgUtil/SceneView>
|
||||
#include <osgUtil/IntersectVisitor>
|
||||
#include <osgGA/GUIEventAdapter>
|
||||
#include <osgGA/GUIActionAdapter>
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <osgManipulator/RotateSphereDragger>
|
||||
#include <osg/ShapeDrawable>
|
||||
#include <osg/Geometry>
|
||||
#include <osg/Geode>
|
||||
#include <osg/LineWidth>
|
||||
|
||||
namespace osgManipulator {
|
||||
|
||||
@@ -279,10 +279,6 @@ namespace osgParticle
|
||||
ParticleSystem& operator=(const ParticleSystem&) { return *this; }
|
||||
|
||||
inline void update_bounds(const osg::Vec3& p, float r);
|
||||
void single_pass_render(osg::RenderInfo& renderInfo, const osg::Matrix& modelview) const;
|
||||
void render_vertex_array(osg::RenderInfo& renderInfo) const;
|
||||
|
||||
void new_drawImplementation(osg::RenderInfo& renderInfo) const;
|
||||
|
||||
typedef std::vector<Particle> Particle_vector;
|
||||
typedef std::stack<Particle*> Death_stack;
|
||||
|
||||
@@ -90,7 +90,7 @@ class OSGSHADOW_EXPORT MinimalShadowMap : public StandardShadowMap
|
||||
// when scene objects are put on earth ellipsoid surface.
|
||||
|
||||
// Other scenarios are also possible for example when models are
|
||||
// built in XZY space which would require identity matrix with swapped colums
|
||||
// built in XZY space which would require identity matrix with swapped columns
|
||||
|
||||
osg::Matrix _modellingSpaceToWorld;
|
||||
float _maxFarPlane;
|
||||
|
||||
@@ -61,7 +61,7 @@ class OSGSHADOW_EXPORT StandardShadowMap : public DebugShadowMap
|
||||
// Example: Imagine we want to swap base(0) and shadow(1) indices:
|
||||
// We have to do an extra step to make sure both do not end up as 1
|
||||
//
|
||||
// // initialy change base to something else than 1
|
||||
// // initially change base to something else than 1
|
||||
// setBaseTextureCoordIndex( 100 );
|
||||
// // now search and replace all gl_TexCord[1] to gl_TexCord[0]
|
||||
// setShadowTextureCoordIndex( 0 );
|
||||
|
||||
@@ -53,7 +53,7 @@ Caveats:
|
||||
- It's possible to render the whole sphere by specifying elevation
|
||||
and azimuth ranges round the full 360 degrees. When doing
|
||||
so you may consider switching the planes, spokes, and edge lines
|
||||
off, to avoid rendering artefacts, e.g. the upper and lower
|
||||
off, to avoid rendering artifacts, e.g. the upper and lower
|
||||
planes will be coincident.
|
||||
|
||||
*/
|
||||
@@ -214,27 +214,27 @@ public:
|
||||
/** A list of vertex arrays representing a list of lines.*/
|
||||
typedef std::vector< osg::ref_ptr<osg::Vec3Array> > LineList;
|
||||
|
||||
/** Compute the interesection lines between subgraph and this sphere segment.
|
||||
* The matrix is the transform that takes the subgraph into the same coordiante frame as the sphere segment.
|
||||
/** Compute the intersection lines between subgraph and this sphere segment.
|
||||
* The matrix is the transform that takes the subgraph into the same coordinate frame as the sphere segment.
|
||||
* The resulting intersections are in the coordinate frame of the sphere segment. */
|
||||
LineList computeIntersection(const osg::Matrixd& matrix, osg::Node* subgraph);
|
||||
|
||||
/** Compute the interesection lines between specified drawable and this sphere segment.
|
||||
* The matrix is the transform that takes the subgraph into the same coordiante frame as the sphere segment.
|
||||
/** Compute the intersection lines between specified drawable and this sphere segment.
|
||||
* The matrix is the transform that takes the subgraph into the same coordinate frame as the sphere segment.
|
||||
* The resulting intersections are in the coordinate frame of the sphere segment. */
|
||||
LineList computeIntersection(const osg::Matrixd& matrix, osg::Drawable* drawable);
|
||||
|
||||
/** Compute the interesection lines between subgraph and this sphere segment.
|
||||
* The matrix is the transform that takes the subgraph into the same coordiante frame as the sphere segment.
|
||||
/** Compute the intersection lines between subgraph and this sphere segment.
|
||||
* The matrix is the transform that takes the subgraph into the same coordinate frame as the sphere segment.
|
||||
* The resulting intersections are in the coordinate frame of the sphere segment. */
|
||||
osg::Node* computeIntersectionSubgraph(const osg::Matrixd& matrix, osg::Node* subgraph);
|
||||
|
||||
/** Compute the interesection lines between specified drawable and this sphere segment.
|
||||
* The matrix is the transform that takes the subgraph into the same coordiante frame as the sphere segment.
|
||||
/** Compute the intersection lines between specified drawable and this sphere segment.
|
||||
* The matrix is the transform that takes the subgraph into the same coordinate frame as the sphere segment.
|
||||
* The resulting intersections are in the coordinate frame of the sphere segment. */
|
||||
osg::Node* computeIntersectionSubgraph(const osg::Matrixd& matrix, osg::Drawable* drawable);
|
||||
|
||||
/** recompute the vertex positions of the rendering meshes/lines thtat represent the sphere segment.*/
|
||||
/** recompute the vertex positions of the rendering meshes/lines that represent the sphere segment.*/
|
||||
void updatePositions();
|
||||
|
||||
/** recompute the primitives rendering meshes/lines thtat represent the sphere segment.*/
|
||||
|
||||
@@ -73,7 +73,7 @@ public:
|
||||
* placing text against noisy backgrounds.
|
||||
* The color of the background shadow text is specified by setBackdropColor().
|
||||
* DROP_SHADOW_BOTTOM_RIGHT will draw backdrop text to the right and down of
|
||||
* the normal text. Other DROW_SHADOW_* modes do the same for their repective directions.
|
||||
* the normal text. Other DROP_SHADOW_* modes do the same for their respective directions.
|
||||
* OUTLINE will draw backdrop text so that it appears the text has an outline
|
||||
* or border around the normal text. This mode is particularly useful against
|
||||
* really noisy backgrounds that may put text on top of things that have
|
||||
|
||||
@@ -354,10 +354,10 @@ class OSGUTIL_EXPORT CullVisitor : public osg::NodeVisitor, public osg::CullStac
|
||||
RenderBin* _currentRenderBin;
|
||||
std::vector<RenderBin*> _renderBinStack;
|
||||
|
||||
unsigned int _traversalNumber;
|
||||
value_type _computed_znear;
|
||||
value_type _computed_zfar;
|
||||
|
||||
value_type _computed_znear;
|
||||
value_type _computed_zfar;
|
||||
unsigned int _traversalOrderNumber;
|
||||
|
||||
|
||||
typedef std::vector< osg::ref_ptr<RenderLeaf> > RenderLeafList;
|
||||
@@ -466,7 +466,7 @@ inline RenderLeaf* CullVisitor::createOrReuseRenderLeaf(osg::Drawable* drawable,
|
||||
while (_currentReuseRenderLeafIndex<_reuseRenderLeafList.size() &&
|
||||
_reuseRenderLeafList[_currentReuseRenderLeafIndex]->referenceCount()>1)
|
||||
{
|
||||
osg::notify(osg::NOTICE)<<"Warning:createOrReuseRenderLeaf() skipping multiply refrenced entry."<< std::endl;
|
||||
osg::notify(osg::INFO)<<"CullVisitor:createOrReuseRenderLeaf() skipping multiply referenced entry. _reuseRenderLeafList.size()="<< _reuseRenderLeafList.size()<<" _reuseRenderLeafList["<<_currentReuseRenderLeafIndex<<"]->referenceCount()="<<_reuseRenderLeafList[_currentReuseRenderLeafIndex]->referenceCount()<<std::endl;
|
||||
++_currentReuseRenderLeafIndex;
|
||||
}
|
||||
|
||||
@@ -474,19 +474,19 @@ inline RenderLeaf* CullVisitor::createOrReuseRenderLeaf(osg::Drawable* drawable,
|
||||
if (_currentReuseRenderLeafIndex<_reuseRenderLeafList.size())
|
||||
{
|
||||
RenderLeaf* renderleaf = _reuseRenderLeafList[_currentReuseRenderLeafIndex++].get();
|
||||
renderleaf->set(drawable,projection,matrix,depth,_traversalNumber++);
|
||||
renderleaf->set(drawable,projection,matrix,depth,_traversalOrderNumber++);
|
||||
return renderleaf;
|
||||
}
|
||||
|
||||
|
||||
// Otherwise need to create new renderleaf.
|
||||
RenderLeaf* renderleaf = new RenderLeaf(drawable,projection,matrix,depth,_traversalNumber++);
|
||||
RenderLeaf* renderleaf = new RenderLeaf(drawable,projection,matrix,depth,_traversalOrderNumber++);
|
||||
_reuseRenderLeafList.push_back(renderleaf);
|
||||
|
||||
++_currentReuseRenderLeafIndex;
|
||||
return renderleaf;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ public:
|
||||
virtual bool outside(const osg::Vec3 &testpoint) const;
|
||||
|
||||
/** Tessellate the constraint loops so that the crossing points are interpolated
|
||||
* and added to the contraints for the triangulation. */
|
||||
* and added to the constraints for the triangulation. */
|
||||
void handleOverlaps(void);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -107,7 +107,7 @@ class OSGUTIL_EXPORT IncrementalCompileOperation : public osg::GraphicsOperation
|
||||
/** ConservativeTimeRatio governs how much of the measured spare time in each frame is used for flushing deleted and compile new OpenGL objects.
|
||||
* Default value is 0.5, valid range is 0.1 to 1.0.
|
||||
* A ratio near 1.0 will lead to paged databases being compiled and merged quicker but increase the chances of frame drop.
|
||||
* A ratio near 0.1 will lead to paged databases being compiled and merged closer but reduse the chances of frame drop.*/
|
||||
* A ratio near 0.1 will lead to paged databases being compiled and merged closer but reduce the chances of frame drop.*/
|
||||
void setConservativeTimeRatio(double ratio) { _conservativeTimeRatio = ratio; }
|
||||
double getConservativeTimeRatio() const { return _conservativeTimeRatio; }
|
||||
|
||||
|
||||
@@ -29,9 +29,9 @@
|
||||
namespace osgUtil {
|
||||
|
||||
|
||||
/** Deprecated */
|
||||
class OSGUTIL_EXPORT Hit
|
||||
{
|
||||
/** Deprecated */
|
||||
public:
|
||||
|
||||
Hit();
|
||||
@@ -200,7 +200,7 @@ class OSGUTIL_EXPORT IntersectVisitor : public osg::NodeVisitor
|
||||
osg::Vec3 _pseudoEyePoint;
|
||||
};
|
||||
|
||||
/** Picking intersection visitor specialises the IntersectVistor to allow more convenient handling of mouse picking.*/
|
||||
/** Deprecated Use LineSegmentIntersector/IntersectionVisitor or View::computeIntersections(..).*/
|
||||
class OSGUTIL_EXPORT PickVisitor : public osgUtil::IntersectVisitor
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -121,5 +121,21 @@ protected:
|
||||
std::map<unsigned int, unsigned int> _deduplicateUvs;
|
||||
}; // SharedArrayOptimizer
|
||||
|
||||
|
||||
inline void optimizeMesh(osg::Node* node)
|
||||
{
|
||||
IndexMeshVisitor imv;
|
||||
node->accept(imv);
|
||||
imv.makeMesh();
|
||||
|
||||
VertexCacheVisitor vcv;
|
||||
node->accept(vcv);
|
||||
vcv.optimizeVertices();
|
||||
|
||||
VertexAccessOrderVisitor vaov;
|
||||
node->accept(vaov);
|
||||
vaov.optimizeOrder();
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -73,6 +73,9 @@ class OSGUTIL_EXPORT RenderBin : public osg::Object
|
||||
|
||||
virtual void reset();
|
||||
|
||||
void setStateGraph(StateGraph* sg) { _rootStateGraph = sg; }
|
||||
StateGraph* getStateGraph() { return _rootStateGraph.get(); }
|
||||
|
||||
void setStateSet(osg::StateSet* stateset) { _stateset = stateset; }
|
||||
osg::StateSet* getStateSet() { return _stateset.get(); }
|
||||
const osg::StateSet* getStateSet() const { return _stateset.get(); }
|
||||
@@ -157,6 +160,8 @@ class OSGUTIL_EXPORT RenderBin : public osg::Object
|
||||
|
||||
virtual ~RenderBin();
|
||||
|
||||
osg::ref_ptr<StateGraph> _rootStateGraph;
|
||||
|
||||
int _binNum;
|
||||
RenderBin* _parent;
|
||||
RenderStage* _stage;
|
||||
|
||||
@@ -35,20 +35,20 @@ class OSGUTIL_EXPORT RenderLeaf : public osg::Referenced
|
||||
public:
|
||||
|
||||
|
||||
inline RenderLeaf(osg::Drawable* drawable,osg::RefMatrix* projection,osg::RefMatrix* modelview, float depth=0.0f, unsigned int traversalNumber=0):
|
||||
inline RenderLeaf(osg::Drawable* drawable,osg::RefMatrix* projection,osg::RefMatrix* modelview, float depth=0.0f, unsigned int traversalOrderNumber=0):
|
||||
osg::Referenced(false),
|
||||
_parent(0),
|
||||
_drawable(drawable),
|
||||
_projection(projection),
|
||||
_modelview(modelview),
|
||||
_depth(depth),
|
||||
_traversalNumber(traversalNumber)
|
||||
_traversalOrderNumber(traversalOrderNumber)
|
||||
{
|
||||
_dynamic = (drawable->getDataVariance()==osg::Object::DYNAMIC);
|
||||
}
|
||||
|
||||
|
||||
inline void set(osg::Drawable* drawable,osg::RefMatrix* projection,osg::RefMatrix* modelview, float depth=0.0f, unsigned int traversalNumber=0)
|
||||
inline void set(osg::Drawable* drawable,osg::RefMatrix* projection,osg::RefMatrix* modelview, float depth=0.0f, unsigned int traversalOrderNumber=0)
|
||||
{
|
||||
_parent = 0;
|
||||
_drawable = drawable;
|
||||
@@ -56,7 +56,7 @@ class OSGUTIL_EXPORT RenderLeaf : public osg::Referenced
|
||||
_modelview = modelview;
|
||||
_depth = depth;
|
||||
_dynamic = (drawable->getDataVariance()==osg::Object::DYNAMIC);
|
||||
_traversalNumber = traversalNumber;
|
||||
_traversalOrderNumber = traversalOrderNumber;
|
||||
}
|
||||
|
||||
inline void reset()
|
||||
@@ -67,7 +67,7 @@ class OSGUTIL_EXPORT RenderLeaf : public osg::Referenced
|
||||
_modelview = 0;
|
||||
_depth = 0.0f;
|
||||
_dynamic = false;
|
||||
_traversalNumber = 0;
|
||||
_traversalOrderNumber = 0;
|
||||
}
|
||||
|
||||
virtual void render(osg::RenderInfo& renderInfo,RenderLeaf* previous);
|
||||
@@ -92,7 +92,7 @@ class OSGUTIL_EXPORT RenderLeaf : public osg::Referenced
|
||||
osg::ref_ptr<osg::RefMatrix> _modelview;
|
||||
float _depth;
|
||||
bool _dynamic;
|
||||
unsigned int _traversalNumber;
|
||||
unsigned int _traversalOrderNumber;
|
||||
|
||||
private:
|
||||
|
||||
@@ -104,7 +104,7 @@ class OSGUTIL_EXPORT RenderLeaf : public osg::Referenced
|
||||
_projection(0),
|
||||
_modelview(0),
|
||||
_depth(0.0f),
|
||||
_traversalNumber(0) {}
|
||||
_traversalOrderNumber(0) {}
|
||||
|
||||
/// disallow copy construction.
|
||||
RenderLeaf(const RenderLeaf&):osg::Referenced(false) {}
|
||||
|
||||
@@ -323,7 +323,7 @@ class OSGUTIL_EXPORT SceneView : public osg::Object, public osg::CullSettings
|
||||
/** search through any pre and post RenderStages that reference a Camera, and take a reference to each of these cameras to prevent them being deleted while they are still be used by the drawing thread.*/
|
||||
void collateReferencesToDependentCameras();
|
||||
|
||||
/** clear the refence to any any dependent cameras.*/
|
||||
/** clear the reference to any any dependent cameras.*/
|
||||
void clearReferencesToDependentCameras();
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
#include <vector>
|
||||
|
||||
#ifndef CALLBACK
|
||||
/* Win32 calling conventions. (or a least thats what the GLUT example tess.c uses.)*/
|
||||
/* Win32 calling conventions. (or a least that's what the GLUT example tess.c uses.)*/
|
||||
#define CALLBACK
|
||||
#endif
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ class OSGUTIL_EXPORT UpdateVisitor : public osg::NodeVisitor
|
||||
}
|
||||
|
||||
// The following overrides are technically redundant as the default implementation would eventually trickle down to
|
||||
// apply(osg::Node&); - however defining these explicitely should save a couple of virtual function calls
|
||||
// apply(osg::Node&); - however defining these explicitly should save a couple of virtual function calls
|
||||
virtual void apply(osg::Geode& node) { handle_callbacks_and_traverse(node); }
|
||||
virtual void apply(osg::Billboard& node) { handle_callbacks_and_traverse(node); }
|
||||
virtual void apply(osg::LightSource& node) { handle_callbacks_and_traverse(node); }
|
||||
|
||||
@@ -273,6 +273,7 @@ class GraphicsWindowEmbedded : public GraphicsWindow
|
||||
virtual void raiseWindow() {}
|
||||
};
|
||||
|
||||
|
||||
struct GraphicsWindowFunctionProxy
|
||||
{
|
||||
GraphicsWindowFunctionProxy(CGraphicsWindowFunction function) { (function)(); }
|
||||
|
||||
@@ -47,7 +47,7 @@ class OSGVIEWER_EXPORT ViewConfig : public osg::Object
|
||||
/** configure method that is overridden by Config subclasses.*/
|
||||
virtual void configure(osgViewer::View& /*view*/) const {}
|
||||
|
||||
/** convenience method for getting the relavent display settings to use.*/
|
||||
/** convenience method for getting the relevant display settings to use.*/
|
||||
virtual osg::DisplaySettings* getActiveDisplaySetting(osgViewer::View& view) const;
|
||||
};
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace osgWidget {
|
||||
// Externally defined; does this work in Windows?
|
||||
struct LuaEngineData;
|
||||
|
||||
// The actual Engine itself. Every attempt is made to export the implemenation into the
|
||||
// The actual Engine itself. Every attempt is made to export the implementation into the
|
||||
// source file, rather than having it here.
|
||||
class OSGWIDGET_EXPORT LuaEngine: public ScriptEngine
|
||||
{
|
||||
|
||||
@@ -638,7 +638,7 @@ class OSGWIDGET_EXPORT Window:
|
||||
// This method is passed the additional values by which width and height should be
|
||||
// modified as calculed by the parent method, Window::resize. Keep in mind that these
|
||||
// values can be negative (indicating a potential "shrink" request) or positive (which
|
||||
// would indicate a "grow" reqeust).
|
||||
// would indicate a "grow" request).
|
||||
virtual void _resizeImplementation(point_type, point_type) = 0;
|
||||
|
||||
// These are made into implementation functions since getting the width or height
|
||||
|
||||
@@ -401,7 +401,7 @@ int Thread::GetConcurrency()
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: Constructor
|
||||
// Description: Constructor
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
@@ -418,7 +418,7 @@ Thread::Thread()
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: Destructor
|
||||
// Description: Destructor
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
|
||||
@@ -97,7 +97,7 @@ Barrier::Barrier(int numThreads) {
|
||||
|
||||
}
|
||||
|
||||
#endif // ] Priority sheduling
|
||||
#endif // ] Priority scheduling
|
||||
|
||||
#endif // ] ALLOW_PRIORITY_SCHEDULING
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ void condition_cleanup_handler(void *arg) {
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: Constructor
|
||||
// Description: Constructor
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
@@ -97,7 +97,7 @@ Condition::Condition() {
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: Destructor
|
||||
// Description: Destructor
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
@@ -118,7 +118,7 @@ Condition::~Condition() {
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: wait on a condition
|
||||
// Description: wait on a condition
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
@@ -145,7 +145,7 @@ int Condition::wait(Mutex *mutex) {
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: wait on a condition, for a specified period of time
|
||||
// Description: wait on a condition, for a specified period of time
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
@@ -191,7 +191,7 @@ int Condition::wait(Mutex *mutex, unsigned long int ms) {
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: signal a thread to wake up.
|
||||
// Description: signal a thread to wake up.
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
@@ -205,7 +205,7 @@ int Condition::signal() {
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: signal many threads to wake up.
|
||||
// Description: signal many threads to wake up.
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
|
||||
@@ -26,7 +26,7 @@ using namespace OpenThreads;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: Constructor
|
||||
// Description: Constructor
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
@@ -101,7 +101,7 @@ Mutex::Mutex(MutexType type):
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: Destructor
|
||||
// Description: Destructor
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
@@ -118,7 +118,7 @@ Mutex::~Mutex() {
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: lock the mutex
|
||||
// Description: lock the mutex
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
@@ -133,7 +133,7 @@ int Mutex::lock() {
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: unlock the mutex
|
||||
// Description: unlock the mutex
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
@@ -148,7 +148,7 @@ int Mutex::unlock() {
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Decription: test if the mutex may be locked
|
||||
// Description: test if the mutex may be locked
|
||||
//
|
||||
// Use: public.
|
||||
//
|
||||
|
||||
@@ -622,7 +622,7 @@ void ArgumentParser::reportRemainingOptionsAsUnrecognized(ErrorSeverity severity
|
||||
|
||||
for(int pos=1;pos<argc();++pos)
|
||||
{
|
||||
// if an option and havn't been previous querried for report as unrecognized.
|
||||
// if an option and haven't been previous querried for report as unrecognized.
|
||||
if (isOption(pos) && options.find(_argv[pos])==options.end())
|
||||
{
|
||||
reportError(std::string("unrecognized option ")+std::string(_argv[pos]),severity);
|
||||
|
||||
@@ -140,7 +140,7 @@ void GLBufferObject::compileBuffer()
|
||||
entry.dataSource != bd ||
|
||||
entry.dataSize != bd->getTotalDataSize())
|
||||
{
|
||||
unsigned int previousEndOfBufferDataMarker = computeBufferAlignment(entry.offset + entry.dataSize, bufferAlignment);
|
||||
unsigned int previousEndOfBufferDataMarker = osg::computeBufferAlignment(entry.offset + entry.dataSize, bufferAlignment);
|
||||
|
||||
// OSG_NOTICE<<"GLBufferObject::compileBuffer(..) updating BufferEntry"<<std::endl;
|
||||
|
||||
@@ -158,7 +158,7 @@ void GLBufferObject::compileBuffer()
|
||||
}
|
||||
else
|
||||
{
|
||||
newTotalSize = computeBufferAlignment(newTotalSize + entry.dataSize, bufferAlignment);
|
||||
newTotalSize = osg::computeBufferAlignment(newTotalSize + entry.dataSize, bufferAlignment);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -620,7 +620,7 @@ osg::ref_ptr<GLBufferObject> GLBufferObjectSet::takeFromOrphans(BufferObject* bu
|
||||
|
||||
osg::ref_ptr<GLBufferObject> GLBufferObjectSet::takeOrGenerate(BufferObject* bufferObject)
|
||||
{
|
||||
// see if we can recyle GLBufferObject from the orphan list
|
||||
// see if we can recycle GLBufferObject from the orphan list
|
||||
{
|
||||
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_mutex);
|
||||
if (!_pendingOrphanedGLBufferObjects.empty())
|
||||
@@ -1188,13 +1188,14 @@ void BufferObject::removeBufferData(BufferData* bd)
|
||||
|
||||
unsigned int BufferObject::computeRequiredBufferSize() const
|
||||
{
|
||||
unsigned int bufferAlignment = 4;
|
||||
unsigned int newTotalSize = 0;
|
||||
for(BufferDataList::const_iterator itr = _bufferDataList.begin();
|
||||
itr != _bufferDataList.end();
|
||||
++itr)
|
||||
{
|
||||
BufferData* bd = *itr;
|
||||
if (bd) newTotalSize += bd->getTotalDataSize();
|
||||
if (bd) newTotalSize = osg::computeBufferAlignment(newTotalSize + bd->getTotalDataSize(), bufferAlignment);
|
||||
else
|
||||
{
|
||||
OSG_NOTICE<<"BufferObject::"<<this<<":"<<className()<<"::BufferObject::computeRequiredBufferSize() error, BufferData is 0x0"<<std::endl;
|
||||
|
||||
@@ -42,7 +42,7 @@ void Enablei::apply(State& state) const
|
||||
if (extensions->glEnablei)
|
||||
{
|
||||
OSG_INFO<<"extensions->glEnablei("<<_capability<<", "<<_index<<")"<<std::endl;
|
||||
extensions->glEnablei(_capability, static_cast<GLuint>(_index));
|
||||
if (_capability) extensions->glEnablei(_capability, static_cast<GLuint>(_index));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -56,7 +56,7 @@ void Disablei::apply(State& state) const
|
||||
if (extensions->glDisablei)
|
||||
{
|
||||
OSG_INFO<<"extensions->glDisablei("<<_capability<<", "<<_index<<")"<<std::endl;
|
||||
extensions->glDisablei(_capability, static_cast<GLuint>(_index));
|
||||
if (_capability) extensions->glDisablei(_capability, static_cast<GLuint>(_index));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -156,7 +156,7 @@ void CollectOccludersVisitor::apply(osg::OccluderNode& node)
|
||||
if (node.getOccluder())
|
||||
{
|
||||
// computeOccluder will check if the occluder is the view frustum,
|
||||
// if it ins't then the it will return false, when in it will
|
||||
// if it isn't then the it will return false, when in it will
|
||||
// clip the occluder's polygons in clip space, then create occluder
|
||||
// planes, all with their normals facing inward towards the volume,
|
||||
// and then transform them back into projection space.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user