Commit Graph

6978 Commits

Author SHA1 Message Date
Robert Osfield
edd4b2fc84 Added enabling of threadsafe ref/unref in FileCache. 2010-02-09 19:30:52 +00:00
Robert Osfield
8d8037ee12 Converted osg::notify usage to NOTIFY 2010-02-09 18:24:37 +00:00
Robert Osfield
7103707815 From Wang Rui, "I also did a small fix to the ObjectWrapper header, to add a
OSGDB_EXPORT macro to RegisterCompressorProxy, and modified the
findCompressor() method to look for custom compressors in libraries
such like osgdb_compressor_name.so, which was described in the wiki
page chapter 2.4."
2010-02-04 10:20:17 +00:00
Robert Osfield
bdcddc10f8 Added #define for GL3 build 2010-02-03 09:35:36 +00:00
Robert Osfield
f3575e6a40 Added #defines for GL3 build 2010-02-03 09:35:05 +00:00
Robert Osfield
3a2cd32ea5 From Ryan Kawicki, added removal of TXPArchive from ReaderWriterTXP when the TXPNode destructs to fix memory consumption issue relating to leaving unused archives in memory. 2010-02-02 11:16:10 +00:00
Robert Osfield
2d91b15489 Fixed indentation. 2010-02-02 11:02:42 +00:00
Robert Osfield
a492e2b631 From Serge Lages, build fix 2010-02-01 10:04:56 +00:00
Robert Osfield
380fb17fa9 Build fixes for build without ref_ptr<> automatic type conversion 2010-01-31 18:24:01 +00:00
Robert Osfield
b2270e7f38 From Jan Peciva, "I am sending improved version of Inventor plugin. Attaching just
modified files, while GroupSoLOD.h and .cpp was deleted. Please, delete
it from repository, it is not used any longer and I doubt if it is
probably not used for anything meaningful for a while. In the new code,
there is no GroupSoLOD. Please, delete it.

I am using new plugin version for about 1.5 month so I consider it
stable by myself.

List of changes:
- rewritten Inventor state stack
- shaders support
- light attenuation support
- support for reading from stream (readNode(std::istream& fin, options))
- improved grouping node handling (SoSeparator, SoGroup,...)
- fixed transformation bug when two SoShapes/Drawables with different transformations are placed bellow one grouping node
- introduced preprocessing to handle more advanced usage schemes of SoLOD and SoSwitch nodes
- unused code clean up
- improved notify messages
- animation callbacks fixes
- FindInventor.cmake improved finding routines, support for Coin3 and Coin4"
2010-01-31 12:55:29 +00:00
Robert Osfield
874296cbb3 Changed GeometryTechnique::private to protected, updated wrappers 2010-01-29 17:20:58 +00:00
Robert Osfield
ff5d1fc195 From Trajce Nikolov, bug fixes 2010-01-29 14:55:52 +00:00
Robert Osfield
f02beb657b Removed redudent string; 2010-01-29 11:58:14 +00:00
Robert Osfield
94e3b5a345 From Wang Rui, osgText serializers and support for PagedLOD+ProxyNode 2010-01-29 11:35:09 +00:00
Robert Osfield
4ae1c275f2 Updated wrappers 2010-01-28 12:10:17 +00:00
Robert Osfield
8d614df6b1 Updated wrappers 2010-01-28 11:47:28 +00:00
Robert Osfield
82f49fc566 Fixed typo 2010-01-28 11:44:19 +00:00
Robert Osfield
a5f3d0c661 From Martin Lambers, "Fix static linking with EXR plugin on MinGW" 2010-01-28 10:59:00 +00:00
Robert Osfield
2af633352b Fom Sukender, "Added copyFile() and comments in FileUtils."
From Robert Osfield, build fix for linux/gcc and reformating to keep coding style consistent with rest of OSG
2010-01-28 10:45:40 +00:00
Robert Osfield
56cf703094 Added files back in with the execution bit correctly disabled. 2010-01-28 08:59:23 +00:00
Robert Osfield
91f8306d63 Removed files as they all have the incorrectly have the execution bit enabled, will add back in with this fixed. 2010-01-28 08:58:05 +00:00
Robert Osfield
db275d7c26 From Wang Rui, added osgParticle serializers 2010-01-28 08:53:48 +00:00
Robert Osfield
13531757c4 From Serge Lages, "Here is a fix for the Quicktime plugin, with the previous version, the size for some videos was not correct, using GetMovieBoundsRgn instead of GetMovieBox returns the real movie size.
"
2010-01-27 17:12:40 +00:00
Robert Osfield
0a9263d50e From Wang Rui, "Changes:
1. Rewrite the reading/writing exception handlers to work like the ive
plugin exceptions.
2. Write a header writing/checking function in ReaderWriterOSG2.cpp,
which may help decide if the stream is ascii or binary. The
readInputIterator() function will return null pointer if the input
file is nither osgb nor osgt format, which indicates that the old .osg
format could be used here, in case we've merged the two plugins
together.
3. Add a new ForceReadingImage option in the InputStream, which will
allocate an empty image object with the filename if specifed external
image file is missed. It may be useful for format converting in some
cases.
4. Add new osgParticle wrappers, as well as some modification to the
osgParticle headers, for instance, change isEnabled() to getEnabled().
5. Some fixes to the osg serialization wrappers."
2010-01-27 17:09:05 +00:00
Robert Osfield
00c17c6cff From Trajce Nikolov, improvements to osgWidget::Input including selection support 2010-01-27 16:31:34 +00:00
Cedric Pinson
d730a6bdb5 From Cedric Pinson, remove unused file, fix crash for old files 2010-01-27 15:37:45 +00:00
Robert Osfield
6af9f0819b Updated wrappers 2010-01-27 15:00:01 +00:00
Robert Osfield
23624aad04 Updated wrappers 2010-01-27 13:12:49 +00:00
Robert Osfield
60d7411fdf Updated wrappers 2010-01-27 13:12:26 +00:00
Robert Osfield
db4d58b01d From Cedric Pinson, "Here a list of changes:
Bone now inherit from MatrixTransform. It simplify a lot the update of
Bone matrix. It helps to have the bone system more generic. eg it's now
possible to have animation data with precomputed bind matrix. The other
benefit, is now the collada plugin will be able to use osgAnimation to
display skinned mesh. Michael Plating did a great work to improve this
aspect, he is working on the collada plugin and should be able to submit
a new version soon.
The RigGeometry has been refactored so now it works when you save and
reload RigGeometry because the source is not touched anymore. The
benefit with this update is that it should be now possible to use a
MorphGeometry as source for a RigGeometry.

The bad news is that the format has changed, so i have rebuild osg-data
related to osgAnimation data, updated the blender exporter to export to
the new format.
The fbx plugin could be touched about this commit, i dont compile it so
i can't give more information about it.
The bvh plugin has been updated by Wang rui so this one is fixed with
the new code of osgAnimation.
The examples has been updated to work with the new code too...

The example osg-data/example.osg should be remove, it's an old example
that does not work.

For people using blender the blender exporter up to date is here:
http://hg.plopbyte.net/osgexport2/
it will be merge to http://hg.plopbyte.net/osgexport/ as soon as the
modification will be push in the trunk.
"
2010-01-27 12:24:55 +00:00
Robert Osfield
0abf08b806 Updated wrappers 2010-01-26 17:07:11 +00:00
Robert Osfield
306f45fbf2 From Laurens Voerman, "Wile working with pbuffers I noticed that the Win32 implementation uses the attribute WGL_PBUFFER_LARGEST_ARB.
> quote from http://www.opengl.org/registry/specs/ARB/wgl_pbuffer.txt
>    The following attributes are supported by wglCreatePbufferARB:
>
>      WGL_PBUFFER_LARGEST_ARB     If this attribute is set to a
>                                  non-zero value, the largest
>                                  available pbuffer is allocated
>                                  when the allocation of the pbuffer
>                                  would otherwise fail due to
>                                  insufficient resources.  The width
>                                  or height of the allocated pbuffer
>                                  never exceeds <iWidth> and <iHeight>,
>                                  respectively.  Use wglQueryPbufferARB
>                                  to retrieve the dimensions of the
>                                  allocated pbuffer.

It notifies the user when the size is not as requested, but I could find no way for the program to detect this. I've added two lines to write the new size back into the _traits, I think this is appropriate, but I am not absolutely sure.

In PixelBufferX11 was no support, so I've added GLX_LARGEST_PBUFFER(_SGIX) support, with the same writeback to the _trais.


I have tested the GLX_LARGEST_PBUFFER version on linux and the WGL_PBUFFER_LARGEST_ARB with windows, all tested with the modified autocapture I just submitted.


"autocapture --pbuffer --window 100 100 18192 18192 cow.osg.\[0,0,-22.7\].trans"
gives me a 4096x4096 image on my windows machine,
and a 8192x8192 image on linux."
2010-01-26 17:04:55 +00:00
Robert Osfield
bad5a4d43a From Trajce Nikolov, various improvements of the workings of osgWidget::Input. 2010-01-26 16:59:17 +00:00
Robert Osfield
490f832a28 Updated wrappers 2010-01-26 16:41:53 +00:00
Robert Osfield
6a30b04dd9 From Tony Horrobin, "This fix just makes a couple of calls to ref_ptr<>::get() to satisfy the compiler.
The changes make the build successful under Windows 7/VC2005 and Ubuntu 9.10 with OSG_USE_REF_PTR_IMPLICIT_OUTPUT_CONVERSION set to OFF.
"
2010-01-26 16:30:48 +00:00
Robert Osfield
56b384d880 From Jan Peciva, "I am sending one more improvement (separately from Inventor plugin).
I found very useful to have a control whether osgView::setCameraManipulator does or does not reset camera to home position.

I extended method signature as follows:
void setCameraManipulator(osgGA::MatrixManipulator* manipulator, bool resetPosition = true);

keeping the current usage intact (default parameter), while enabling user to disable the position reset. That can be useful in the situation when manipulator position was already loaded, for example from a file (user specification), or defined any other way, while we do not want to be reset to home position. Other usability is usage of two manipulators in a modeling program (orbiting around the model, walking on the model) and changing between them while we want to preserve the position of a camera in the change. Games may benefit from it as well when we change from user-defined helicopter manipulator to soldier manipulator because the user escaped the helicopter. The camera will change manipulator but the position is expected to be kept in the transition (provided that user makes the state transition between the two manipulators himself).
"
2010-01-26 15:08:25 +00:00
Robert Osfield
cb7181b7a5 Removal of redundant spaces at ends of lines 2010-01-26 14:57:44 +00:00
Robert Osfield
6ca22f2904 updated wrappers 2010-01-26 14:54:46 +00:00
Robert Osfield
144d3e7af3 From Lars Nilsson, "Attached is a small program doing intersection calculations, both with and without KdTree. The geometry is a TRIANGLE_STRIP consisting of five vertices, all with the same rather high Z-value. If the intersection calculation uses KdTree, it fails. When I changed osg::Vec3 to osg::Vec3d in a few places in osg::KdTree it finds the correct intersection point."
From Robert Osfield, I didn't merge the change of parameter type of IntersectKdTree::intersect() as the internal maths is all done in Vec3s. Keeping Vec3 here hasn't effected the test results.
2010-01-26 13:05:05 +00:00
Robert Osfield
a08241d481 From Laurens Voerman, "I've removed an underscore in
OpenSceneGraph/src/osgUtil/SceneView.cpp
introduced in svn
10915 (5 Jan 2010): "Added support for call root Camera CullCallbacks"



It causes a segfault in osgViewer based apps on our linux system (OSG_STEREO=ON OSG_STEREO_MODE=QUAD_BUFFER)

Problem does not show when OSG_STEREO=OFF.


< 976        else _cullVisitor->traverse(*_camera);
> 976        else cullVisitor->traverse(*_camera);

Looks like a typo, and removing the _ does fix the problem."
2010-01-26 11:16:38 +00:00
Robert Osfield
27c99ff0c8 Refactored the DotOsgWrapper support in osgDB::Registry so it's now provided by the osgDB::DeprecatedDotOsgWrapperManager. 2010-01-25 17:07:25 +00:00
Robert Osfield
470abf4527 Updated wrappers 2010-01-25 15:25:16 +00:00
Robert Osfield
65127f5b34 Moved the declaration of osgDB::Field, FieldReader and FieldReaderIterator into include/osg/Input to centralise all the deprecated .osg parsing code into one place. 2010-01-25 15:24:47 +00:00
Robert Osfield
5c0e5a5720 Removed deprecated classes 2010-01-25 12:48:25 +00:00
Robert Osfield
a520e8b6bd From Wang Rui, refactored the InputStream/OutputStream operations so that the binar/ascii foramts are implemented via subclasses. 2010-01-25 11:03:21 +00:00
Robert Osfield
f8fc4f66a8 Added RequestQueue destructor and DatabaseRequest::invalidate() and valid() methods to allow the
destruction of RequestQueue to remove any pointers held in DatabaseRequest attached to the scene graph, and to
prevent their subsequent use in cases where the scene graph is attached to a new DatabasePager.
2010-01-22 20:47:39 +00:00
Robert Osfield
40a6a1afd0 Seting the notifcation level of debug message to INFO. 2010-01-22 20:35:11 +00:00
Robert Osfield
16e48d1724 Reverted fixes for Mingw as they break OSX build 2010-01-22 16:13:28 +00:00
Robert Osfield
7ab759c97f Renamed ObjectRegistry to ObjectWrapperManager, and replaced it's instance() method usage with assigning a ObjectWrapperManager
to the osgDB::Registry.  Added a osgDB::Registry::getObjectWrapperManager() for access of this object wrapper manager.  This
change centralises the singleton management in osgDB.

Merged the osgDB::GlobalLookUpTable functionality into ObjectWrapperManger to keep down the number of singletons in use.
2010-01-22 15:16:22 +00:00
Robert Osfield
8839736818 Added extra export for windows build 2010-01-21 16:26:48 +00:00
Robert Osfield
793932a227 Added extra includes to bring in their local definitions of OpenGL enums that don't exist across all GL versions 2010-01-21 16:07:19 +00:00
Robert Osfield
f795770fed Added support for passing on slave Camera's StateSet's to the rendering backend. 2010-01-21 10:24:48 +00:00
Robert Osfield
219696f1ee From Wang Rui, new native binary/ascii format infrastructure and wrappers.
From Robert Osfield, refactor of Wang Rui's original osg2 into 3 parts - parts placed into osgDB, the ReaderWriter placed into src/osg/Plugin/osg and wrappers into src/osgWrappers/serializers/osg
2010-01-20 20:13:33 +00:00
Robert Osfield
9806aebaf3 Introduced file globbing to deprecated-dotosg directories and added new serializers direcotory in prep for new serializers 2010-01-20 10:35:40 +00:00
Robert Osfield
78280fa1ed Replaced osgDB::RegisterDotOsgWrapperProxy usage with REGISTER_DOTOSGWRAPPER proxy to aid static linking 2010-01-19 13:31:06 +00:00
Robert Osfield
29b73591a6 Added CmakeList.txt for new wrapper plugins 2010-01-19 12:36:57 +00:00
Robert Osfield
995398441e Refactored the old style .osg plugin support so that the DotOsgWrappers are placed in their own dedicated plugins found in src/osgWrappers/deprecated_osg 2010-01-19 12:26:37 +00:00
Robert Osfield
7377e2ec98 Added deprecated-dot/osg directory from the contents of the src/osgPlugins/osg and CMakeLists.txt in prep for creating the plugin mechanism for .osg support 2010-01-19 10:31:38 +00:00
Robert Osfield
46ea02d439 Added introspection directory 2010-01-18 20:49:40 +00:00
Robert Osfield
52f398aba2 Regenerated introspection wrappers in their new location 2010-01-18 19:56:16 +00:00
Robert Osfield
76ae0920ad Cleaned out all wrappers as will be moving them all into src/osgWrappers/introspection directory, and use genwrapper to generate the new ones 2010-01-18 19:43:14 +00:00
Robert Osfield
0f7c0de714 Added #include <stdio.h> for Mingw build 2010-01-18 16:39:12 +00:00
Robert Osfield
9f58a20e0b Restructure the includes of freetype 2010-01-18 16:38:07 +00:00
Robert Osfield
2a6719b7d8 From Jean-Sebastien Guay, build fixes for Mingw 2010-01-18 14:27:20 +00:00
Robert Osfield
613606dc7e Updated wrappers 2010-01-18 13:00:41 +00:00
Robert Osfield
6f3966038f From Serge Lages, "Here is a patch to allow setting an audio volume with the AudioSink interface, I've also modified the ffmpeg plugin code to implement the ImageStream's setVolume method with its AudioSink." 2010-01-18 12:43:02 +00:00
Robert Osfield
5a37ed8a9f Removed the old style Serializer, moving it back into VirtuaLPlanetBuilder to make way for the new Serializer that exists in support for the new binary/ascii format. 2010-01-15 15:34:17 +00:00
Robert Osfield
8f6db66e59 Added setting of the charcode during construction of osgText::Font::Glyph() 2010-01-14 15:15:42 +00:00
Robert Osfield
327406df69 Updated wrappers and supported shadow texture formats 2010-01-13 18:50:17 +00:00
Robert Osfield
8541761fe7 For backwards compatiblity add a staic void BufferObject::deleteBufferObject(unsigned int contextID,GLuint globj) method. 2010-01-13 18:46:52 +00:00
Robert Osfield
2db1625201 Updated wrappers 2010-01-13 14:57:02 +00:00
Robert Osfield
ca3cfab4f3 Updated wrappers 2010-01-13 13:31:03 +00:00
Robert Osfield
1202b98acc Changed get methods to new style ones. 2010-01-13 13:30:45 +00:00
Robert Osfield
3491e29bb0 Added missing .get() to fix build when compiling with no automatic type convention in ref_ptr<> 2010-01-13 11:45:19 +00:00
Robert Osfield
7c3b0a16a4 From Sukender, warning fix. 2010-01-13 10:46:40 +00:00
Robert Osfield
80846a1b71 Convert dos line endings 2010-01-12 11:12:06 +00:00
Robert Osfield
2813748627 Updated wrappers 2010-01-12 10:00:24 +00:00
Robert Osfield
cbd9a1370e From Jean-Sebastien Guay, "OK, so here are new changes.
1. The node type will be set to ATOM on read of <tag prop="..." ... /> type tags.
2. GROUP and NODE are now written using the same code (and not just duplicated code). Also NODE will not be written as an ATOM if it has no children or contents, so you need to set the type to ATOM if you want the <tag ... /> style.
3. You had put the write of "/>" for ATOM after the "return true", so it had no effect... Moved to before the return.
4. ATOM did not write its properties correctly, fixed.
5. As an added bonus, I made the write() method indent the output so it's more readable. It brings a small public interface change but the indent argument has a default value so client code doesn't need to change (if there even is any).
6. Another added bonus, I've simplified the write() method a bit by factoring out the write for children and properties into protected methods."
2010-01-11 17:36:03 +00:00
Robert Osfield
8bef9c57a3 Added missing .get() 2010-01-11 17:27:09 +00:00
Robert Osfield
1f56509430 From Sukender, introduced usage of ref_ptr<> and local scoped_array to address more robust memory management. 2010-01-11 16:09:18 +00:00
Robert Osfield
5288f380c6 Added desctructor with jas_cleanup(). 2010-01-11 16:03:13 +00:00
Robert Osfield
5dad3a0afb From Laurens Voerman,"the current ReaderWriterJP2 has all the code for writing jp2 files (jpeg 2000), but the writing fails on my windows machine (jasper-1.900.1) because the ID for the "jp2" extention is requested before the jas_init() call. (bug introduced in svn 7645 - 10 dec 2007)" 2010-01-11 14:28:33 +00:00
Robert Osfield
22a63fa5b7 From Sukender, "a small fix about using non 3-charcacters long file extensions (such as "jpeg", to be converted to "jpg")." 2010-01-11 14:04:55 +00:00
Robert Osfield
6faa6985cf Updated wrappers 2010-01-08 11:47:31 +00:00
Robert Osfield
28723e6fef From Jean-Sebastien Guay, "was testing an osgWidget-based test app I have and noticed that I couldn't move the windows/frames around on the screen anymore. Turns out that the virtual methods' interface changed in the EventInterface base class, the third argument to mouseDrag() is now const, but it was not changed in the derived classes, so it still compiled but the derived-class version was not being called because its arguments differed.
Here are the changes that fix it.
"
2010-01-08 11:40:43 +00:00
Robert Osfield
22ca8d2160 From Marius Heise, "osgShadow was using single precision variables for light positioning and orientation. This was causing precision problems (shadow jumping) with big databases (eg. geocentric created vpb). This patch fixes this by using double precision variables for light positioning and orientation. It works for all algorithms dreived form osgShadow::StandardShadowMap.
"
2010-01-08 11:37:35 +00:00
Robert Osfield
a31aa512d7 From Rob Radtke, "I recently ran into some issues trying to save/load a scene graph as a .ive file. The problems came about because the scene graph contained depth textures in it. I have attached a patch (against the current revision: 10919) that fixes the issues that I encountered. Both attachments contain the same patch--one is a .zip file that contains the modified files and the other is a text patch file. Here is a summary of the changes I made:
1) Add getShadowComparison() accessor function to osg::Texture class
2) Modify ReaderWriterTiff::writeTifStream() and _readColor() (in Image.cpp) to handle pixelFormat==GL_DEPTH_COMPONENT as if it were GL_LUMINANCE
3) Modify the Texture classes of the ive and osg plug-ins so that they save/load the following Texture members: _use_shadow_comparison, _shadow_compare_func and _shadow_texture_mode
"
2010-01-08 11:32:55 +00:00
Robert Osfield
b68a035d43 From Paul Martz, "OcclusionQueryNode was incorrectly marking itself as DYNAMIC, so I removed that code. And I also found some uses of dynamic_cast that could be changed to static_cast.
"
2010-01-08 11:16:22 +00:00
Robert Osfield
73921435e0 From Sukender, "ReaderWriter3DS.cpp fixes:
- Fixed creation of useless intermediate nodes

WriterNodeVisitor.cpp fixes:
- Fixed naming of textures (path and extension)
"

Note from Robert Osfield, this submission also came with changes to use of ref_ptr<> and removal of delete[]'s, but these were not merged as they didn't actually fix any memory leaks, and in once instance introduced one.
2010-01-08 10:52:03 +00:00
Robert Osfield
ec9020a23a Added newline at end of file to fix warning 2010-01-08 10:12:02 +00:00
Robert Osfield
1543aee9bd Fixed writing out of ATOM. 2010-01-07 19:13:40 +00:00
Robert Osfield
182d6595a6 From Jean-Sebastien Guay, fix to handling of xml node with contents by not children 2010-01-07 19:08:53 +00:00
Robert Osfield
0e23193122 From Jean-Sebastien Guay, fixed handling of < tag /> xml syntax 2010-01-07 17:36:44 +00:00
Robert Osfield
248a0813db From Lilith Bryant, "As discussed previously on the users list. Fixes the redundant calls to
glActiveTexture on every State::apply after more than one texunits have been
used.

This is against 2.9.6 (I think SVN head is the same)

Quick Synopsis:

New functions:

State::applyModeOnTexUnit
State::applyAttributeOnTexUnit
State::applyModeMapOnTexUnit
State::applyAttributeMapOnTexUnit
State::applyModeListOnTexUnit
State::applyAttributeListOnTexUnit

All copies of the normal versions, but they also set the active tex unit if
absolutely necessary (i.e. only if they call something OpenGL).

State::apply (*2)
State::applyTextureAttribute

Changed to call the above functions and no longer call setActiveTextureUnit
themselves.

State::setActiveTextureUnit

Made inline, so the benefit of having applyModeOnTexUnit (etc) inline
is retained.
"
2010-01-07 16:49:12 +00:00
Robert Osfield
5d9bf9f4d5 Added virtual pause() method into osg::AudioSink to support pausing of a movie thread and it's associated audio.
Updated osgmovie plugin to use the pause support.
2010-01-07 14:35:17 +00:00
Robert Osfield
47af634399 Refactored the way that osg::Image/ImageSequence manages the update callback that needs to be attached to Textures to make it possible to use the Image::update() mechansim in other subclasses from osg::Image.
To enable the automatic attachment of the required update callback to call osg::Image::update(..) subclasses from osg::Image will
need to implement the osg::Image::requestUpdateCall() and return true, and implement the osg::Image::update(NodeVisitor*) method to recieve the update call during the update traversal.
2010-01-07 12:14:47 +00:00
Robert Osfield
3d4169689d From Serge Lages, "Here is a modified fix. It doesn't break the other patch for this plugin as they are for different files. I've only added the file formats handled by default with DirectShow (based on its Wikipedia page)." 2010-01-07 09:45:34 +00:00
Robert Osfield
4352dee4ce Imporoved spacing 2010-01-07 09:43:54 +00:00
Robert Osfield
6902390d87 Reordered the readAllDataIntoBuffer() to avoid bug in failing on all calls to readXmlParser(..) 2010-01-07 09:11:42 +00:00
Robert Osfield
170ed5c9df Updated wrappers 2010-01-06 15:43:06 +00:00
Robert Osfield
54694194a5 Updated wrappers 2010-01-05 11:15:17 +00:00
Robert Osfield
e54c855467 Added support for call root Camera CullCallbacks 2010-01-05 11:15:03 +00:00
Robert Osfield
79ba6dace4 Fixed indentation 2010-01-05 11:10:21 +00:00
Robert Osfield
bbf1ef45ee Added set/getDistance() method 2010-01-05 11:09:18 +00:00
Cedric Pinson
ceb06d7532 From Cedric Pinson, remove unused file Skinning, cleanup file Timeline.cpp 2009-12-22 14:09:46 +00:00
Robert Osfield
6cd8a23570 From Lilith Bryant, "This patch fixes a regression (introduced in @ rev 9228), where simple .dae files, that have no material assignments, will cause a crash on load.
In particular, the case when the "instance_geometry" element has no "bind_material" sub-element.   This is valid, according to the official collada 1.4.1 specification."
2009-12-16 15:05:14 +00:00
Robert Osfield
7362b8b49f Removed old texture object manage code. 2009-12-16 12:17:45 +00:00
Robert Osfield
68710d43be From Sukender, warning fix 2009-12-15 17:25:12 +00:00
Robert Osfield
ff35d0b9b0 Fixed compile warnings 2009-12-15 14:44:12 +00:00
Robert Osfield
6f4c60a024 Fixed warning 2009-12-15 14:40:06 +00:00
Robert Osfield
1977338cce From Tanguy Fautre and Robert Osfield, updated tristripper code to use the latest tristripper_r94 code. 2009-12-15 12:37:49 +00:00
Robert Osfield
9d82266032 From Julen Garcia, "So here is the code with a proper audio sync (at least in my computer)" 2009-12-15 11:27:28 +00:00
Robert Osfield
ce2459a539 Changed GL_BGRA_EXT to GL_BGRA and added include of include/osg/Image to make sure define is declared 2009-12-15 09:16:20 +00:00
Robert Osfield
22de011107 Renamed osg::GraphicsContext::OperationQueue typedef to GraphicsOperationQueue to avoid naming conflict with osg::OperationQueue 2009-12-14 13:42:00 +00:00
Robert Osfield
b7b86ba5f4 From Stephan Huber, "attached you'll find the missing GraphicsHandleCocoa-implementation." 2009-12-10 17:52:40 +00:00
Robert Osfield
8dc2a86e4d Updated wrappers 2009-12-10 11:30:51 +00:00
Robert Osfield
cac4da38bf From Stephan Huber, " I am getting a warning that the class DataOutputStream has virtual
methods but no virtual d'tor, so I added the keyword virtual to the destructor."
2009-12-10 11:30:09 +00:00
Robert Osfield
69bcbcd0a3 Fixed bug in positioning of 3d text characters 2009-12-10 11:16:41 +00:00
Cedric Pinson
8d6a01b62d From Cedric Pinson, add missing file 2009-12-09 23:42:29 +00:00
Cedric Pinson
53d5b56202 From Cedric Pinson,
Add check in RigTransformSoftware if bones are null
Indent TimelineAnimationManager
Add check for NaN in UpdateCallback.cpp
Fix TimelineAnimationManager clear target (a refactore of Timeline is require for futur)
Fix Computation of bounding box for RigGeometry
2009-12-09 18:45:46 +00:00
Robert Osfield
f099dab160 Updated wrappers 2009-12-09 14:34:24 +00:00
Robert Osfield
5f61d14dc6 Fixed support for compiling VBO's 2009-12-09 13:55:10 +00:00
Robert Osfield
6e7c02b5d8 Added a Geometry::compileGLObjects() to handle compilation of VBO + EBO's. 2009-12-09 13:51:02 +00:00
Robert Osfield
db7528386f From Ulrich Hertlein, .osg support for osgFX::Outline 2009-12-09 10:18:13 +00:00
Robert Osfield
8c7b2c097c Compile fixes for GLES 2009-12-09 09:37:19 +00:00
Robert Osfield
e0154c2d28 From Ulrich Hertlein, "attached is a stencil buffer-based constant-width outline f/x with example. I've also modified osgfxbrowser to setup the stencil buffer accordingly." 2009-12-08 17:41:44 +00:00
Robert Osfield
65c6fdd8ca Added check for image compatibility with existing texture object, releasing the existing texture object in cases when the new image size/pixel format is not compatible. 2009-12-08 17:33:01 +00:00
Robert Osfield
248386861b From Sukender, "I experienced as some users before: I tried to rescale an image without a valid rendering context... And had problems to unserstand what the "GL_OUT_OF_MEMORY" meant! So I added a few comments for future users." 2009-12-08 17:25:45 +00:00
Robert Osfield
d54b6907b8 Fixed typo 2009-12-08 16:58:21 +00:00
Robert Osfield
6c0d321e3d From Fabien Lavignotte, "i have a problem with my application, i am currently playing with Texture2D::SubloadCallback to optimize my image data transfer, and also avoid double buffering when using a drawing thread.
There is a small bug with your change and SubloadCallback, the texture object is destroy at each call of Texture2D::apply because the modified count is never updated when using SubloadCallback.
I have made a small fix to avoid that, see attachement."

From Robert Osfield, added an if (_image.valid()) before the getModified() that Fabien added to avoid problems when no _image is assigned but an subload callback is.
2009-12-08 16:02:43 +00:00
Robert Osfield
57d0729484 Updated wrappers 2009-12-08 15:39:04 +00:00
Robert Osfield
7603931eb4 Added catch for changes in image pixel format and dimensions so that the texture object is released when the image changes enough to warrant a new texture object. 2009-12-08 14:25:16 +00:00
Robert Osfield
78a31776be Re-order the setting of the VBO's 2009-12-07 16:45:33 +00:00
Robert Osfield
9e9b6b8843 Updated wrappers 2009-12-05 10:13:43 +00:00
Robert Osfield
8c11e7be48 From Tatsuhiro Nishioka, "> The workaround/solution was to add a block of code at the end of the
> loader to un-premultiply the alpha (now in the codebase).

Applying the code brightens the semi-transparent portion, but the black edges are still there (same on both osgviewer and FlightGear).
Therefore I believe that the alpha channel is completely ignored (on png, gif, tiff, etc...). I tweaked and tweaked and finally got a workaround.

Please commit the enclosed file to fix these issues.

My workaround is a bit tricky (and some lines are even weird for me), but it resolves the black edges.
These workarounds also work on GIF, TIFF, TGA, and PSD as long as I've tested so far.

Please read this for more info on this issue:
http://macflightgear.sourceforge.net/home/development-notes/devnote-dec-02-2009
http://macflightgear.sourceforge.net/home/development-notes/devnote-dec-03-2009

I'm very happy if some of you guys find a better means of solving the black edges.

"
2009-12-04 17:25:23 +00:00
Robert Osfield
039455ef30 Converted tabs to four space 2009-12-04 17:24:27 +00:00
Robert Osfield
6773aca87a From Sukender,
"Here is our freshly baked 3DS reader/writer (named 'v0.5' to differentiate from previous one). Changes are against trunk rev. 10819.
Short changelog (from rev 10819):
- Added 3DS writer
- Sync'd with latest lib3DS
- Added options, especially "flattenMatrixTransforms" to get the "old" behaviour (else the reader correctly maps to OSG the transforms from the 3DS file).

What should be done:
- Check with pivot points, with and without "flattenMatrixTransforms" option.
- We ran tests on it, but we can never be 100% sure there is no bug. Testing from the community would of course be helpful."
2009-12-04 11:31:04 +00:00
Robert Osfield
c262112fbb From Mathieu Marache, "I replaced the Vec4 by a float and used only the x component of the shadow2DProj . This works on my apple box." 2009-12-04 09:57:08 +00:00
Robert Osfield
8080f46444 From Julen Garcia,"I've been lately working also with the ffmpeg plugin and I implemented pause(), seek() and getReferenceTime(). I think that I have solved the internal clock issues (maybe not in the most elegant way :?" 2009-12-02 18:58:45 +00:00
Robert Osfield
11abf29c14 From Farshid Lashkari, "I had to make a few small changes to some cmake files to enable the OSG_MSVC_GENERATE_PLUGINS_AND_WRAPPERS_MANIFESTS option for Visual Studio 2008." 2009-12-02 14:58:47 +00:00
Robert Osfield
b278660799 From Nico Kruithof, "Attached is a patch that makes the spherical manipulator frame rate independent. This is similar to what Lee did for the trackball manipulator a couple of months ago." 2009-12-02 14:21:13 +00:00
Robert Osfield
3c8fe13194 Quitened down debug info 2009-12-02 12:37:45 +00:00
Robert Osfield
2be82dd8d7 Quiten down debugging message 2009-12-01 19:40:29 +00:00
Robert Osfield
4d762a81a6 Updated wrappers 2009-11-30 13:44:41 +00:00
Robert Osfield
3a71cd80fa Attempted compile fix. 2009-11-27 18:14:27 +00:00
Robert Osfield
41ba8ce585 From Christian Ehrlicher, "during profiling my program I found out that there's a lot of memory
(de)allocation going on in OverlayNode::cut().

So instead creating inner-loop variables 'distances' and 'newVertices'
every time, I moved the creation out of the loop and just do a clear() +
reserve() inside the loop. This allows std::vector<> to reuse the old
memory instead allocating new when the new size <= oldsize."
2009-11-27 16:47:38 +00:00
Robert Osfield
9b3e02f4e9 From Jason Daly, "The DDS reader test for DXT1 images with 1-bit alpha wasn't thorough enough. It performed the first check (color_0 <= color_1), but it didn't actually scan the texel block to see if the transparent color (0x03) was there. As a result, DXT1 files without any alpha were getting switched to RGBA format (instead of being left just RGB).
The attached code fixes this problem."
2009-11-27 15:48:57 +00:00
Robert Osfield
6ff21888f3 From Wang Rui, "I just successfully built the pdf plugin on Windows XP and MSVC and
fixed a small bug then:

ReaderWriterPDF.cpp, line 133, change:

std::string uri = std::string("file:") + foundFile;

to:

#if defined(WIN32) && !defined(__CYGWIN__)
           std::string uri = std::string("file:///") + foundFile;
#else
           std::string uri = std::string("file:") + foundFile;
#endif


That's because glib accepts "file:///C:\\data\\file.pdf" as URIs on
Windows, as well as "file:/home/data/file.pdf" on Unix, but
"file:C:\\data\\file.pdf" is not recognized.

Now I could read my Chinese translation of OSGQSG with osgpdf. :P"
2009-11-27 15:35:57 +00:00
Robert Osfield
36b5e59019 From Paul Martz, "This change address the following issue: an app opens a Viewer on a multidisplay system, configured to setUpViewAcrossAllDisplays, with a non-default clear mask. In this case, OSG failed to propagate the clear mask to the slave Cameras, resulting in the clear mask being ignored. To fix this issue, this revision adds a new CullSettings::VariablesMask bit, CLEAR_MASK, to explicitly control inheritance of the clear mask. This bit is set by default, which means that the clear mask now inherits by default, whereas previously it did not." 2009-11-27 15:32:43 +00:00
Robert Osfield
9ce90775c2 From Chris Denham, "I discovered what seems to be a missing call to FreeLibrary for osgDB.dll The result of this is that it prevents me from dynamically unloading my DLL (which uses OSG). This is because initialisation of the osg::Registry instance results in a call to GetModuleHandleEx (to get the filename of the DLL). This call to GetModuleHandleEx increments the module refcount, but there was no matching call to FreeLibrary for the returned handle. Unlike the old GetModuleHandle function, GetModuleHandle does (by default) increment the refcount.
I have added the missing call to FreeLibrary in osgDB::FileUtils., and now my the runtime unload of MY dll is working properly. It has also cured some related problems I was having with memory leak checks being reported.

I have attached a fix to osgDB/FileUtils.cpp based on version 2.9.5 svn revision 10374
"
2009-11-27 12:21:44 +00:00
Robert Osfield
5d6ce1a25f From Cory Riddell, "Small edit to ReaderWriterDOT.cpp. It wasn't checking the file extension
and so, if the .dot plugin was loaded, it would happily handle any file
name extension.

To reproduce the bug, first save a scene to a dot file (to load the dot
plugin), then try to write the scene to an osg file. If you look at the
osg file, you will see that it is a dot file."
2009-11-27 12:17:20 +00:00
Robert Osfield
980db2c772 Updated wrappers 2009-11-27 11:48:21 +00:00
Robert Osfield
6ebeff658a Implement deleteAllTextureObject/BufferObjects functionality.
Cleaned up warnings.
2009-11-27 11:43:18 +00:00
Robert Osfield
ab8d93a181 Introduced preliminary osg::deleteAllGLObjects() and osg::discardAllGLObjects() functions and associated support into Texture and BufferObjects 2009-11-26 12:33:07 +00:00
Robert Osfield
7255941cf6 Updated wrappers 2009-11-24 15:26:54 +00:00
Robert Osfield
a3adc3d07c From Martin Scheffler, "osgParticle: method to set start and end tile for particle texture (for animated particles). I also updated examples/osgParticle to show the feature.
The texture in data/Images should be copied to osg-data. I created the texture myself with the help of an explosion generator, so no license issues there.
"
2009-11-24 15:00:11 +00:00
Robert Osfield
f79f465467 From Farshid Lashkari,
"I've attached a small fix to osgUtil::SceneView so that is uses a scissor test when clearing the stencil buffer for stencil based stereo."

and

"I've added another small change for stencil based stereo, so please use this newer version. This newer version simplifies the calls to glOrtho and glRecti when drawing the stipple pattern. This change also happens to fix an issue where the stencil stereo would not work with certain viewport settings. I'm not exactly sure why this was happening, it might be a graphics driver issue, but either way I think the changes should be fine."
2009-11-24 14:32:51 +00:00
Robert Osfield
49d6a96a5a From Lilin Xiong, "when using stlport5.3 (vc 2003) , this line cann't be compiled:
_instances[0] = new WGLExtensions;
    change to:
   _instances[HGLRC(0)] = new WGLExtensions;"
2009-11-24 14:22:12 +00:00
Robert Osfield
5f04576abd Updated wrappers 2009-11-24 14:20:59 +00:00
Robert Osfield
6d3e7f83e2 From Terry Welsh, "As I mentioned here
http://www.mail-archive.com/osg-users@lists.openscenegraph.org/msg33967.html
, interpolating through HSV space gives a rainbow color effect which
does not mimic the simple RGB color interpolation that OpenGL does.
It's overkill and causes unexpected visual artifacts.  In the attached
files I've removed the conversion to HSV so that interpolation happens
in RGB space."
2009-11-24 14:12:54 +00:00
Robert Osfield
3599be9708 From Wojciech Lewandowski, "I have extended a list of texture targets that can be used with shadow comparison. These targets are avaialble in in OpenGL 3.x shadow sampler variants. Changes are based on current SVN." 2009-11-24 13:24:30 +00:00
Robert Osfield
b3abc0842f From Chris Hanson, " Add support for "OutputTextureFiles" option to IVE plugin to permit creation of external
.dds texture files from internally-embedded textures during IVE writes."

From Robert Osfield, fixed a bug in the above submission, and changed the way that the filename of the file is passed into DataOutputStream to avoid issues with the .ive's plugins ability to read from istreams.
2009-11-23 11:00:07 +00:00
Robert Osfield
d09323f93e From Chris Hanson, " Add support for requesting and setting the current directory (a la getcwd/chdir) via a
C++-friendly string-class API.

 Prevent osgDB::concatPaths from faulting if the supplied "left" path string is empty."
2009-11-23 10:19:37 +00:00
Robert Osfield
6365810f8b From Paul Martz, typo fixes 2009-11-23 09:53:08 +00:00
Robert Osfield
4759cb951e From Colin MacDonald, "In my application I have a custom graphics context class, derived from
osg::GraphicsContext, in order to give good integration with the
application's GUI toolkit.  This works really well.

However, I need to share OpenGL texture resources with the standard
osgViewer GraphicsContext implementations, in particular the
PixelBuffers.  This is essential for my application to conserve graphics
memory on low-end hardware.  Currently the standard osg implementations
will not share resources with another derived osg::GraphicsContext,
other than the pre-defined osgViewer classes e.g. PixelBufferX11 is
hardcoded to only share resources with GraphicsWindowX11 and
PixelBufferX11 objects, and no other osg::GraphicsContext object.

To address this in the cleanest way I could think of, I have moved the
OpenGL handle variables for each platform into a small utility class,
e.g. GraphicsHandleX11 for unix.  Then GraphicsWindowX11, PixelBufferX11
and any other derived osg::GraphicsContext class can inherit from
GraphicsHandleX11 to share OpenGL resources.

I have updated the X11, Win32 and Carbon implementations to use this.
The changes are minor.  I haven't touched the Cocoa implmentation as
I'm not familiar with it at all and couldn't test it - it will work
unchanged.

Without this I had some horrible hacks in my application, this greatly
simplifies things for me.  It also simplifies the osgViewer
implementations slightly.  Perhaps it may help with other users'
desires to share resources with external graphics contexts, as was
discussed on the user list recently."

Notes from Robert Osfield, adapted Colin's submission to work with the new EGL related changes.
2009-11-21 16:41:02 +00:00
Robert Osfield
40d46a8687 From Chris Hanson, " Remove vestigial (and because it was undocumented, potentially harmful) code to ignore
filenames starting with a dash "-" character from the (std::vector<std::string>&) version
of osgDB::readNodeFiles. Handling of argument strings is properly implemented in the
osgDB::readNodeFiles(osg::ArgumentParser& arguments,const Options* options)
variant, which most code uses. The (std::vector<std::string>&) version is only called by
the osgconv utility, which does its own argument handling and stripping prior to calling
readNodeFiles().

 Also, documented this behaviour in the header comments.

 I believe this code removal is a meritful change because leavign the code in causes an
unexpected and undocumented behaviour (ignoring any filename starting with a dash) that
could bite users in the future. This behaviour is not needed for existing functionality
because existing code uses other APIs to handle dash-prefixed arguments anyway.

"
2009-11-20 14:51:43 +00:00
Robert Osfield
255f6dda41 Moved the ImagePager update to before the main scene graph update traversal 2009-11-20 14:40:58 +00:00
Robert Osfield
d9c1f45231 From Wang Rui, "I've made a small fix to osgViewer/Scene.cpp, which is already attached. I would like to explain what I've done and why.
In Scene::updateSceneGraph(), change:

if (getSceneData())
{
        updateVisitor.setImageRequestHandler(getImagePager());
        getSceneData()->accept(updateVisitor);
}
if (getDatabasePager())
{
        // synchronize changes required by the DatabasePager thread to the scene graph
        getDatabasePager()->updateSceneGraph((*updateVisitor.getFrameStamp()));
}

to

if (getDatabasePager())
{
        // synchronize changes required by the DatabasePager thread to the scene graph
        getDatabasePager()->updateSceneGraph((*updateVisitor.getFrameStamp()));
}
if (getSceneData())
{
        updateVisitor.setImageRequestHandler(getImagePager());
        getSceneData()->accept(updateVisitor);
}

That is, just swap the positions of two 'if () {...}' segments.

While working on a paged terrain, I need to collect every newly allocated PagedLODs and make them temporarily unrenderable in the next frame, which are all done in a update callback. But I found that these PagedLODs will always be shown before collecting them, because of the unsuitable sequence in Scene::updateSceneGraph(). DatabasePager is synchronized AFTER the user updating traversal, that is, user cannot IMMEDIATELY find out changes made by DatabasePager.
 "
2009-11-20 14:39:15 +00:00
Robert Osfield
3ef770a9ff From Rafa Gaitan, "Current ffmpeg plugin didn't support pause and seek, I have added this
functionality and I also modified osgmovie example to support "seek"."

Note from Robert Osfield, changes osgmovie to use '>' for the seek as '+' was already used in a separate submission that had been merged.
2009-11-20 14:31:11 +00:00
Robert Osfield
733431004a Updated wrappers 2009-11-20 14:15:42 +00:00
Robert Osfield
e107c86e1a From Farshid Lashkari, "I noticed that the code for rendering vertical interlace, horizontal interlace, and checkerboard stereo are practically identical, except for the stipple pattern. I combined the code blocks for rendering the 3 stereo modes into a single block. I also fixed a small issue with retrieving stats in checkerboard stereo mode." 2009-11-20 12:32:51 +00:00
Robert Osfield
010411e535 From David Callu, "I have a Segfault with xine plugin, when I load a video, then delete the XineStreamImage,
then reload a video and finally delete the second XineStreamImage.

In src/osgPlugins/xine/video_out_rgb.c, many code is ASM code, and 'clear()' function is one of them.
If OSG is compiled without the flag COMPILE_ASSEMBLY (default behaviours) the clear() function is an empty
function and allocated memory is never initialized to 0. So a structure which contain pointer haven't its pointer set to NULL.
And when we need to delete this pointer, all go bad.

I join the fixed file."
2009-11-20 11:46:20 +00:00
Robert Osfield
d55f447188 From Colin McDonald, "Reading from a stream the 3ds plugin crashes if the options are null." 2009-11-20 11:43:53 +00:00
Robert Osfield
f5b61191ad From Himar Carmona, " this submission resolves an issue regarding the setup of a slave camera with an (incorrect) coding style. Sharing the same instance of osg::Viewport with a camera and a slave camera causes incorrect rescaling in GraphicsContext::resizedImplementation, due to the viewport being rescaled twice (once per camera). Though viewports sharing is not intentional, it can be done with the current version of OSG and be a potential pitfall for anyone.
As Robert pointed out, i opted for modifying the resize code where the break is to minimize code changes, avoiding the duplicate resize of the viewport with the use of a vector and a search for duplicates. Not very elegant (avoiding an effect of a cause), another approach could be ripping out the method osg::Camera::setViewport(osg::Viewport*) which is more inline with Roberts rationale behind not to share viewports between cameras and left only its overloaded method setViewport(x,y,width,height). But this approach need some refactoring due to the intense use of the method. Notice also that the resize works well without this change if no sharing occurs, and the user of the method can opt for always call setViewport with a new instance.
 "

Note from Robert Osfield, changed this submission to use an std::set<Viewport*> rather than an std::vector<> as it keeps the code a bit cleaner and more compact.
2009-11-20 11:39:10 +00:00
Robert Osfield
57319d72af From Stewart Andreason, "When I open the Window Attributes (in WindowManager in X on linux) I am unable to save any changes to the attributes in the resource database, because the osg window does not have a class defined. The Window Specification and Save buttons are greyed out.
For example, when running FlightGear, I want the window to always have no title, so it opens full-screen without using the --full-screen option, which would prevent other windows from moving above the osg window.

I am attaching a patch I made to fix this problem."
2009-11-20 11:25:49 +00:00
Robert Osfield
5cd4faf05b From Jason Beverage, "I posted a question on osg users about resources not being properly released when using osgTerrain databases and multiple viewers are used a few weeks ago and I've found that at least part of the problem comes down to the fact that the nodes that are traversed by the GeometryTechnique are never actually added to the scene graph, and thus don't have releaseGLObjects called on them. I'm submitting a few changes that takes care of this by allowing the TerrainTechnique to provide a releaseGLObjects implementation. I've applied these changes in osgEarth and this example program no longer crashes on the second run, although I get corrupt geometry (see attached shot) which could be down to a driver issue. If I increment the context ID for the second viewer, I no longer get the corrupt geometry.
The attached changes are against OpenSceneGraph 2.8.2.

//Sample program.  Run against an osgEarth or VPB database based on osgTerrain.
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>

int main(int argc, char** argv)
{
   osg::ArgumentParser arguments(&argc,argv);

   osgViewer::Viewer* viewer = new osgViewer::Viewer();
   viewer->setUpViewInWindow(100,
100,500,500);
   osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFiles(arguments);
   viewer->setSceneData( loadedModel.get() );
   viewer->run();
   delete viewer;

   viewer = new osgViewer::Viewer();
   viewer->setUpViewInWindow(100,100,500,500);
   loadedModel = osgDB::readNodeFiles(arguments);
   viewer->setSceneData( loadedModel.get() );
   viewer->run();
   delete viewer;
}"
2009-11-20 11:08:40 +00:00
Robert Osfield
833e79a79a From Jeremy Moles, "Somehow, the SVG reader plugin has gone all this time without actually
being able to accurately provide the cool stuff that SVG is good for. :)
There is a one-line bug on line 68 in the
src/osgPlugins/svg/ReaderWriterSVG.cpp file where you can set the width
in the Options string, but not the height."
2009-11-20 10:56:54 +00:00
Robert Osfield
7552954ef3 From Cedric Pinson, "Here an update of the directshow plugin. It fixes issues with
synchronization, improve capture device support.

here how to use it to display a capture device:

osg::Options* options = new osg::Options;
options->setPluginStringData("captureWantedWidth", "800");
options->setPluginStringData("captureWantedHeight", "600");
options->setPluginStringData("captureWantedFps", "30");
options->setPluginStringData("captureVideoDevice", "USB Video Device" );
options->setPluginStringData("captureSoundDevice", "");
then
osgDB::readImageFile("capture.directshow", options)
you can use a graphedit application to list devices available in
directshow.


for classic avi file you just need to do a
osgDB::readImageFile("file.avi.directshow");
You will need of course to install the codec needed by directshow to
read the avi files.

I recommand this tool http://avicodec.duby.info/, that check which
video/sound codec is needed to play an avi file.


You can test it with the osgmovie example.
"
2009-11-20 10:48:51 +00:00
Robert Osfield
f45ae6a4d8 From David Fries, "I was trying to create a lot of threads under 32 bit Linux, but could
only create 376, then the program would hang.
376 * 8MB stack per thread = 3008 MB
The stack size allocated per thread blew the process address stack.
To get more threads you have to specify a smaller per thread stack,
but while the Thread::start says it will limit the stack size to the
smallest allowable stack size, it won't let it be smaller than the
default.  I included the limits.h header to use PTHREAD_STACK_MIN as
the minimum stack size.

As for the deadlock, if the pthread_create failed, the new thread
doesn't exist and doesn't call threadStartedBlock.release(), so the
existing thread deadlocks on threadStartedBlock.block().  Only block
if the thread was started."
2009-11-20 10:27:43 +00:00
Robert Osfield
65d72d7873 Added #include <osg/MatrixTransform> 2009-11-20 09:05:06 +00:00
Robert Osfield
a1c2cc7b1b From Jan Ciger, removal of declaration of now undefined method. 2009-11-20 09:03:02 +00:00
Robert Osfield
22527f6fd3 From Stephan Huber, "attached you'll find a bugfix for removeTransformUpdating and another
similar remove-method.

The old code removed an element from a vector, which invalidates the
iterator of the loop This resulted in a crash on certain platforms. Now
the erasing is done the right way without invalidating the iterator."
2009-11-19 17:42:25 +00:00
Robert Osfield
0891e011dc From Vincent Gadoury, "In osgViewer::Viewer and osgViewer::CompositveViewer, the DOUBLECLICK event type was not considered as a "pointer event" and thus was receiving the event state coordinates and button mask. As a result, a double-click event always had a button mask not including the double-clicked button, even if double-click event is a "button push" event.
The modification consists only in including osgGA::GUIEventAdapter::DOUBLECLICK in the list of "pointerEvent" events.

Test done to reproduce the problem and check the fix: in any osg application or example with an HandleInput function, break on events with a double-click event type. Without the changes, the event's buttonMask does not contain the double-clicked button. With the changes, it does.

Only simple tests (running some examples and playing with the mouse) were done to check that the changes do not break anything, since double-click is not used thoroughly in OSG.

Modification done against current SVN Trunk version (r10753).

As this is a fix, I do not wish to keep my copyright on this submission and assign it over to the project lead.
"
2009-11-19 17:22:20 +00:00
Robert Osfield
fcb94de7ed From Donn Mielcarek, "I'm surprised this hasn't come up before, but the function Thread::setProcessorAffinity
always returns -1, even if the call is successful.  I added return
statements to each of the function calls."
2009-11-19 17:18:22 +00:00
Robert Osfield
258d702d02 Fixed tabs 2009-11-19 17:17:24 +00:00
Robert Osfield
d8ba406d99 From Nico Krulthof, remove double qualifier of ReaderWriterQT constructor/destructor. 2009-11-19 16:45:35 +00:00
Robert Osfield
519db42c4f From Wojciech Lewandowski, refactor to FBO setup to use the osg::Camera implicit buffer attachements. 2009-11-19 16:39:03 +00:00
Robert Osfield
6dc3f54786 From Jan Ciger, build fixes to work with OpenVRML 0.18.3.
Tweaks to this submission from Robert Osfield to fix missing elements in submission.
2009-11-19 16:06:30 +00:00
Robert Osfield
74f7ffcd32 From Ulrich Hertlein, "ttached are some tweaks to the Obj loader that allows a program supplied osgDB::Options object to be passed through the code. This allows for caching to be used with images.
The patched loader also complains more loudly if a material library file wasn't found or if a referenced material wasn't found in the material library."
2009-11-19 12:54:52 +00:00
Robert Osfield
72b3ce7ac6 From Tugkan Calapoglu, "we started to have problems with textures after a recent svn update. I
was able to follow the problem until following addition to Texture.cpp:

// GLES doesn't cope with internal formats of 1,2,3 and 4 so map them to
the appropriate equivilants.

if (_internalFormat==1) _internalFormat = GL_ALPHA;
if (_internalFormat==2) _internalFormat = GL_LUMINANCE_ALPHA;
if (_internalFormat==3) _internalFormat = GL_RGB;
if (_internalFormat==4) _internalFormat = GL_RGBA;


The problem is that internal format "1" corresponds to GL_LUMINANCE, not
GL_ALPHA. I double checked this from the Red Book. Fixed version is
attached to the email."
2009-11-19 12:39:04 +00:00
Robert Osfield
b4a5edd82e From Jean-Sebastien Guay, "I've made a change to the ScreenCaptureHandler's addCallbackToViewer method, so that it iterates over GraphicsContexts instead of GraphicsWindows. When the viewer has a pbuffer (for offscreen rendering without a window) then it wouldn't add the WindowCaptureCallback to that context since it wasn't in the list returned by ViewerBase::getWindows(). And anyways, I originally wrote the code, and I didn't see any reason why I did it with windows instead of contexts...
I've needed to run a recorded simulation offscreen and save it to a sequence of images, and the ScreenCaptureHandler seemed to be the simplest way to do that, and with this change it's possible.


Another change: I've also added the ability to specify continuous capture of all frames, or a certain number of frames. ScreenCaptureHandler now has a setFramesToCapture(int) method. The argument will be interpreted as:

0  : don't capture
<0 : capture continuously
>0 : capture that number of frames then stop

I also added startCapture() and stopCapture() methods so that user code can start capturing (either continuously or the given number of frames) at a given point in their program. setFramesToCapture() won't start capturing, you have to call startCapture() afterwards. The handler also now has another key to toggle continuous capture (defaults to 'C').

Note that continuous capture will of course only work if the CaptureOperation writes to different files (for example, a WriteToFile with SEQUENTIAL_NUMBER mode) or does something different each time... Otherwise it will just overwrite of course. :-)

I've also taken the chance to refactor the addCallbackToViewer() method a bit too, since finding the right camera is needed in two places now.

I've tested all cases (I think). If you want to try, in osgviewer.cpp and replace the line

 // add the screen capture handler
 viewer.addEventHandler(new osgViewer::ScreenCaptureHandler);

with

 // add the screen capture handler
 osgViewer::ScreenCaptureHandler* captureHandler = new
     osgViewer::ScreenCaptureHandler(
         new osgViewer::ScreenCaptureHandler::WriteToFile(
             "screenshot", "jpg",
     osgViewer::ScreenCaptureHandler::WriteToFile::SEQUENTIAL_NUMBER),
     -1);
 viewer.addEventHandler(captureHandler);
 captureHandler->startCapture();

And vary the "-1" (put 0, 10, 50) and then use the 'c' and 'C' keys and see how it reacts.
"
2009-11-19 12:01:49 +00:00
Robert Osfield
2e11c49742 From Michael Platings, "This plugin adds support for the Autodesk FBX file format. It imports animations, including skeletal and morph animations, hence all my previous submissions to osgAnimation. The plugin won't build without the changes made in the "osgAnimation small additions" submission (14th August).
The plugin requires the FBX SDK to be installed, available from http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=6837478"
2009-11-19 11:44:44 +00:00
Robert Osfield
ec788e92f2 From Fabien Lavignotte, "I have used the osgUtil::DelaunayTriangulator to insert roads into a
terrain. The triangulator is quite tricky to use properly but works
quite well, constraint triangulation is not an easy task... I have
encounter some crash during the development that the following patch
fix.
The two fixes are :
 - Fix in removeVerticesInside() : needs to take into account UByte and
UShort version of DrawElements to avoid a crash later
 - Fix a crash in triangulate() : detect degenerate adjacency case to
exit early form the adjacent triangle traversal loop to avoid a crash
later"
2009-11-19 11:16:58 +00:00
Robert Osfield
b4dffc5bf4 Updated wrappers 2009-11-19 10:12:00 +00:00
Robert Osfield
c481f022e9 From Wojciech Lewandowski, "Building on earlier Paul's submission "[osg-users] Main branch MSFBO support change", I have added implicit buffer mask variables to DisplaySettings for setting global defaults for Camera FBOs. These mask variables are named after variables in Camera class. In Paul's submission they were named _renderBufferMask & _resolveBufferMask but I renamed them to _implicitBufferAttachmentRenderMask & _implicitBufferAttachmentResolveMask. DisplaySettings implementation includes reading of environment vars and command line options. Setters and getters follow typical OSG naming convention. I also updated names of ImplictBufferAttachment enum bits to match changed naming scheme.
DisplaySettings now define COLOR and DEPTH as defaults for implicit buffers. Consequently Camera by default uses the same defaults through USE_DISPLAY_SETTINGS_MASK. However, particular Camera mask can be easily overriden through Camera::setImplicitBufferAttachmentMask method. I hope, that in this way we can have global control over implicit buffer defaults, and we can still retain fine grained control at Camera level.

I have also replaced original unsigned ints used to store masks to signed ints because complier resolves enums as signed integer (I got a number of warnings with unsigned int)."
2009-11-19 10:10:50 +00:00
Robert Osfield
80341b896d Removed include/osg/Config as it was causing problem with Windows build 2009-11-18 18:19:29 +00:00
Robert Osfield
2191e6a48d Moved the set of include/osg/Version into Cmake 2009-11-18 16:24:01 +00:00
Robert Osfield
a3f141d4b5 From Lee Butler, "The attached ZIP file contains a modified OBJ file format reader which
makes smoothing optional for verticies which do not have a normal
associated with them in the OBJ input file.  The previous behavior was
to always smooth at all verticies which did not have surface normals.
In this new implementation smoothing is on by default to be compatible
with previous behavior.  The user can now specify the "generateFacetNormals"
option to the reader to use facet normals for verticies where the OBJ
file does not specify a normal."

Note from Robert Osfield, changed "noSmoothing" naming used by Lee to "generateFacetNormals".
2009-11-18 14:08:46 +00:00
Robert Osfield
2a0497e2c1 From Pau Garcia i Quiles, "On Linux/Unix, when you change the system time (for instance, using
settimeofday), OSG animations will freeze your application because
osg::Timer uses gettimeofday internally on non-Win32 platforms. This
is wrong and should be replace with times(2) or clock_gettime(2).

The attached patch fixes the issue in a binary-compatible way by using
clock_gettime when it's available, and falling back to gettimeofday
when it's not."
2009-11-18 13:00:35 +00:00
Robert Osfield
b7cabac990 From Mathias Froechlich, "Attached the collected fixes I needed to compile with all of them.
Most notable the __hpux define stuff. The __hpux__ variant seems to be not
defined which resulted in a compile error at this time. Consequently I have
replaced all occurances of __hpux__ with __hpux. And huge surprise: now osg
plugins are found and loaded correctly ...
The next notable one is the MSVC_IDE fix which makes the nmake Makefiles cmake
generator target behave like the ide one. Showed up because I started to do
scripted builds with nmake instead of devenv...
The rest is the usual bunch of stuff that just happens during normal
coding ..."
2009-11-18 12:15:29 +00:00
Robert Osfield
259daac9a9 Updated wrappers 2009-11-18 11:26:00 +00:00
Robert Osfield
4262d10217 Added osg::ShaderBinary::readShaderBinaryFile(..) static method 2009-11-18 11:25:28 +00:00
Robert Osfield
f8ab593c4b Moved across to use OSG_FIXED_FUNCTION_AVAILABLE 2009-11-17 15:54:20 +00:00
Robert Osfield
370deba546 <iterator>, <stdlib.h> and <ctype.h> includes required for QNX compiler 2009-11-17 14:06:07 +00:00
Robert Osfield
79f766efab Added OSG_CPP_EXCEPTIONS_AVAILABLE cmake option to enable optional build of plugins and examples that required C++ exceptions 2009-11-17 12:55:52 +00:00
Robert Osfield
f417706b06 Converted .ive plugin from using C++ exceptions to using a local equivelant, enabling the build on embedded systems. 2009-11-17 12:54:55 +00:00
Robert Osfield
a8abfd64c4 Removed usage of throw 2009-11-17 11:36:32 +00:00
Robert Osfield
817e4818aa Fixed Shader constructor 2009-11-16 17:50:33 +00:00
Robert Osfield
e5bdd460d4 Replaced catch usage 2009-11-16 16:09:50 +00:00
Robert Osfield
95cf62ec01 Removed catch 2009-11-16 15:47:32 +00:00
Robert Osfield
af906310f1 Removed throw. 2009-11-16 15:17:57 +00:00
Robert Osfield
03e95d97f1 Removed throw. 2009-11-16 14:58:31 +00:00
Robert Osfield
d4c58cf1a1 Removed usaged of throw and catch to enable better compatibility with embedded systems that don't support C++ exceptions efficiently. 2009-11-16 14:47:52 +00:00
Robert Osfield
52fbe9723f Added new osg::ShaderBinary class, and support for it in osg::Shader. 2009-11-16 12:32:41 +00:00
Robert Osfield
1049f0709b Moved the GLBeginEndAdapter support out of the blocks of the "#if defined(OSG_GL_VERTEX_FUNCS_AVAILABLE) && !defined(OSG_GLES1_AVAILABLE)" guarded blocks.
Fixed the number of components being passed as GLBeginEndAdatper::TexCoord*fv.
2009-11-13 13:42:04 +00:00
Cedric Pinson
5842677662 From Cedric Pinson, Fix Skeleton to compute correctly bind matrix, fix compile issue on osganimationhardware after fixing Skeleton 2009-11-13 13:39:21 +00:00
Robert Osfield
cd2d69506b Added optional finer grained checks for GL errors within Geometry::drawImplementation() to help track down GL errors.
Turned off the vertex attribute aliasing in ArrayDispatchers when the GLBeginEndAdapter is used.
2009-11-13 13:25:59 +00:00
Robert Osfield
b3feedaf0a Added dummy StateSet at top of scene graph when using ShaderGen to copy with subgrahs that contain no StateSet 2009-11-13 12:51:42 +00:00
Robert Osfield
6649f51ff2 From Paul Martz, osgViewer Win32 GL3 context creation support 2009-11-13 10:03:02 +00:00
Robert Osfield
d508934961 Introduced the usage of GL_MAX_TEXTURE_IMAGE_UNITS where support in place of the check of GL_MAX_TEXTURE_UNITS. 2009-11-12 19:39:50 +00:00
Robert Osfield
8b141567b9 Adapted GLBeginEndAdapter to use state.drawQuad(..) rather than use it's local GL_QUADS emulation.
Fixed to osg::Texture for GLES support.

Added automatic GLenum mode mappings in osg::PrimitiveSet to provide a fallback for non support glDrawArray/glDrawElement modes.

Added finer gained error checking during StateSet::compile().
2009-11-12 14:35:44 +00:00
Robert Osfield
efb9908644 Introdced usage of State::drawQuads 2009-11-12 12:19:09 +00:00
Robert Osfield
4374ca23f9 Introduced new State::drawQuads(..) convinience method to help out with mapping GL 1.x style calls to GLES2.0 compatible calls. 2009-11-12 12:18:33 +00:00
Robert Osfield
20a5820843 Fixed winding of GL_QUADS mapping 2009-11-12 12:14:01 +00:00
Robert Osfield
95d54ba15c Added glContexVersion, glContextFlags and glContextProfileMask members to osg::GraphicsContext::Traits to support GL3 graphics context creation.
Moved the handling of DisplaySettings into Traits constructor.

Added support for s/getGLContextVersion(), s/getGLContextFlags() and s/getGLContextProfileMask() to osg::DisplaySettings.

Added command line and env var support for setting the GLContextVersion, GLContextFlags and GLContextProfileMask to osg::DisplaySettings.
2009-11-11 15:25:42 +00:00
Robert Osfield
05b90497e1 From Paul Martz, enabled packed_depth_stencil support for GL3 2009-11-11 12:04:06 +00:00
Robert Osfield
2983bbe6c3 Merged runtime fix for Win32 OpenGLES build that avoids usage of wglGetProcAddress. 2009-11-11 09:15:03 +00:00
Robert Osfield
14838aafc5 Added OSG_GLES2_FEATURES and OSG_GL3_FEATURES usage where appropriate 2009-11-10 19:16:36 +00:00
Robert Osfield
b199a334d9 Introduced OSG_GL*_FEATURES macros defined in include/GL that are set to 0 or 1 according to what the assocoated version of GL is compiled against.
Removed EXT postfix of FrameBufferObject functions, and added support for checking non EXT versions frame buffer object GL functions.

Introduced usage of OSG_GL*_FEATURES to avoid some #if #else #endif code blocks.

Using a submissions from Paul Martz as a guide added perliminary GL3 support to a range of OSG classes
2009-11-10 17:01:08 +00:00
Robert Osfield
d3ab362eae Removed debug message 2009-11-10 14:59:42 +00:00
Robert Osfield
f159ae0516 Removed redundant include of GLU 2009-11-10 12:02:40 +00:00
Robert Osfield
d0b021568e Added support for mapping GL_QUADS, GL_QUAD_STRIP and GL_POLYGONS to GL_TRIANGLE equivalents. 2009-11-10 11:36:07 +00:00
Robert Osfield
def04324a4 Added the default usage of ShaderGenVisitor to help with GLES2 testing. 2009-11-10 11:34:57 +00:00
Robert Osfield
5b236c685b Added state.checkGLErrors() calls to help in debugging of GLES 2 port 2009-11-10 11:34:31 +00:00
Robert Osfield
126f83e5b4 Added disabling of modes that aren't supported with GLES2 2009-11-10 11:28:21 +00:00
Robert Osfield
d515b69d88 Added GL token mappings for standard GL errors numbers for when no GLU is available 2009-11-09 11:36:54 +00:00
Robert Osfield
7fb88a83ff Added remapping of internal texture formats to GL_RGBA etc when just the number of components is used i.e.
1 -> GL_ALPHA,
  2 -> GL_LUMINANCE_ALPHA
  3 -> GL_RGB
  4 -> GL_RGBA
2009-11-06 18:06:16 +00:00
Robert Osfield
4163f15052 Fixed build with no automatic conversion of ref_ptr<> to C pointer 2009-11-06 16:09:55 +00:00
Robert Osfield
4c01079d57 Added dlsymb settting for QNX 2009-11-06 13:53:16 +00:00
Robert Osfield
959cd04097 Cleaned up the EGL context config set up. 2009-11-06 10:38:22 +00:00
Robert Osfield
0c8661be5f Added EGL error checking and changed the egl context configuration settings 2009-11-06 10:31:03 +00:00
Robert Osfield
11fa315fb1 Added APIENTRY into glColor*/glNormal* calls and specialized the calls to just GLES1 2009-11-05 09:28:10 +00:00
Robert Osfield
d7d6d2b215 Moved glColor/glNormal definitions for GLES1.x from include/osg/GL to src/osg/ArrayDispatchers.cpp to avoid import/export issues on functions.
Fixed typo of GLES1 in disabling the build of OpenGL1.x/2.x specific examples
2009-11-04 17:26:59 +00:00
Robert Osfield
90d3c710c4 Reduced the number of aliased attributes to fit within the basic 8 attribute location available on basic GLES2 implementations 2009-11-04 12:17:58 +00:00
Robert Osfield
980c5bd6bb Changed notify to output warnings and normally messages to std::out 2009-11-04 12:14:57 +00:00
Robert Osfield
da90b3f90a Enabled the vertex aliasing and projection/modelview uniform setting by default for GLES2 and GL3 targets 2009-11-04 11:02:00 +00:00
Robert Osfield
72ff1f40f9 From Paul Martz, changes for compiling against OpenGL 3.x 2009-11-03 16:34:54 +00:00
Robert Osfield
08903d65a1 Fixed handling of GL function pointer setup for GLES1/GLES2 targets
Dropped the fixed function pipeline defaults from  StateSet and SceneView.
2009-11-03 11:10:41 +00:00
Robert Osfield
9c5409ad8a Disable the default LightModel for GLES1 and GLES2 targets 2009-11-01 09:51:26 +00:00
Robert Osfield
a4639398e8 Fixed compile issue with Image.cpp and osgautocapture.cpp under GLES.
Fixed handling of EGLDisplay in EGL paths of GraphicsWindowX11
2009-11-01 09:04:41 +00:00