9d0c950bb0
The win32 pbuffer implementation returned an error unless both the WGL_ARB_pbuffer and the WGL_ARB_render_texture functions were present. This was too restrictive, as a pbuffer can usefully be created without render-to-texture, e.g. for use with glReadPixels. The osg 1.2/Producer pbuffers worked without RTT, and osgUtil::RenderStage has all the code to handle both RTT and non-RTT pbuffers, doing a read and copy in the latter case. With these changes I have successfully tested the osgprerender example on a graphics card which supports RTT, and one which doesn't. Plus tested in my own application. In order to aid diagnostics I have also added more function status return checks, and associated error messages. I have included the win32 error text in all error messages output. And there were some errors with multi-threaded handling of "bind to texture" and a temporary window context which I have corrected. These is one (pre-existing) problem with multi-threaded use of pbuffers in osgViewer & osgprerender, which I have not been able to fix. A win32 device context (HDC) can only be destroyed from the thread that created it. The pbuffers for pre-render cameras are created in osgUtil::RenderStage::runCameraSetUp, from the draw thread. But closeImplementation is normally invoked from the destructor in the main application thread. With the additional error messages I have added, osgprerender will now output a couple of warnings from osgViewer::PixelBufferWin32::closeImplementation() at exit, after running multi-threaded on windows. I think that is a good thing, to highlight the problem. I looked into fixing it in osgViewer::Renderer & osgUtil::RenderStage, but it was too involved for me. My own application requirements are only single-threaded. Unrelated fix - an uninitialised variable in osg::GraphicsThread::FlushDeletedGLObjectsOperation(). " |
||
---|---|---|
applications | ||
CMakeModules | ||
doc/Doxyfiles | ||
examples | ||
include | ||
packaging/pkgconfig | ||
PlatformSpecifics/Windows | ||
src | ||
Xcode | ||
AUTHORS.txt | ||
ChangeLog | ||
CMakeLists.txt | ||
configure | ||
genwrapper.conf | ||
LICENSE.txt | ||
NEWS.txt | ||
README.txt | ||
runexamples.bat |
Welcome to the OpenSceneGraph (OSG). For up-to-date information on the project, in-depth details on how to compile and run libraries and examples, see the documentation on the OpenSceneGraph website: http://www.openscenegraph.org For the impatient, read the simplified build notes below. Robert Osfield. Project Lead. 29th January 2008. -- How to build the OpenSceneGraph =============================== The OpenSceneGraph uses the CMake build system to generate a platform-specific build environment. CMake reads the CMakeLists.txt files that you'll find throughout the OpenSceneGraph directories, checks for installed dependenciesand then generates the appropriate build system. If you don't already have CMake installed on your system you can grab it from http://www.cmake.org, use version 2.4.6 or later. Details on the OpenSceneGraph's CMake build can be found at: http://www.openscenegraph.org/projects/osg/wiki/Build/CMake Under unices (i.e. Linux, IRIX, Solaris, Free-BSD, HP-Ux, AIX, OSX) use the cmake or ccmake command-line utils, or use the included tiny configure script that'll run cmake for you. The configure script simply runs 'cmake . -DCMAKE_BUILD_TYPE=Release' to ensure that you get the best performance from your final libraries/applications. cd OpenSceneGraph ./configure make sudo make install Alternatively, you can create an out-of-source build directory and run cmake or ccmake from there. The advantage to this approach is that the temporary files created by CMake won't clutter the OpenSceneGraph source directory, and also makes it possible to have multiple independent build targets by creating multiple build directories. In a directory alongside the OpenSceneGraph use: mkdir build cd build cmake ../OpenSceneGraph -DCMAKE_BUILD_TYPE=Release make sudo make install Under Windows use the GUI tool CMakeSetup to build your VisualStudio files. The following page on our wiki dedicated to the CMake build system should help guide you through the process: http://www.openscenegraph.org/projects/osg/wiki/Support/PlatformSpecifics/VisualStudio Under OSX you can either use the CMake build system above, or use the Xcode projects that you will find in the OpenSceneGraph/Xcode directory. For further details on compilation, installation and platform-specific information read "Getting Started" guide: http://www.openscenegraph.org/projects/osg/wiki/Support/GettingStarted