I modified the OsgCPackConfig.cmake.in and OsgCPack.cmake files to expose access to select the package generator mechanism through cmake CPACK_GENERATOR option. The user can specify the type of package generator (i.e. rpms. deb, NSIS, tar, zip, etc) that they would like to use from the CPack supported packages/installation methods.
I also changed the CPACK_PACKAGE_FILE_NAME to use OSG_PACKAGE_FILE_NAME which contains the name of each component so all of the component packages can be generated without renaming the files.
This should make it even easier to create distribution packages for the various linux, windows and mac distribution methods supported by CPack."
used to avoid dual update traversals of the scene, which is not
allowed in my application (but I forgot the reason ;-) Now the blank
problem will disappear.
Inactive mode is also available, using the --inactive mode and
--camera-eye and --camera-hpr to set camera position:
./osgposter --output-poster --poster output.bmp --tilesize 800 600
--finalsize 8000 6000 cow.osg --inactive --camera-eye 0 0 20
"
I uses a queue of Camera objects to do offscreen rendering with the Camera::attach() function. The entire picture is split into many tiles and it will take a few seconds while attaching and detaching cameras with tiles. You may select to output every tile as an image file, or combine them together to create a large poster, for example, a 12800 x 9600 image.
Start the program like this:
./osgposter --output-poster --poster output.bmp --tilesize 800 600 --finalsize 8000 6000 cow.osg
Adjust the scene camera to a suitable position and press 'p' or 'P' on the keyboard. Wait until sub-cameras dispatching is finished. And the poster file will be created while closing window. A 8000 x 6000 output.bmp will be created to show a fine-printed cow. :)
The command below may also help:
./osgposter --help
"
* the glsl plugin now supports processing #includes. The file extension sets the shader type.
* the registry releases gl objects of the shared state manager
"
changes from the DirectInput devices and add events to the event
queue. I've tested with the keyboard and joystick supports. Because of
only having a very old 6-button gamepad, I can't do more experiments.
Hope this will bring more ideas to those who face similar problems,
especially simulation game designers. :)
I didn't map all DirectInput key values to GUIEventAdapter key
symbols. Users may add more in the buildKeyMap() function freely. The
mouse handling operations are also ignored, but will be easily
improved in the same way of creating keyboard and joystick devices.
Please add a line:
FIND_PACKAGE(DirectInput)
in the CMakeLists of root directory. And in the examples/CMakeLists.txt:
IF(DIRECTINPUT_FOUND)
ADD_SUBDIRECTORY(osgdirectinput)
ENDIF(DIRECTINPUT_FOUND)
DirectX SDK 2009 is used here, but an older version like DX8 should
also work in my opinion.
"
requests to a removed archive file. ReaderWriterTXP::getArchiveName
will create an archive if it doesn't exist. This is causing a crash
if the terrain is removed and there are outstanding database requests
in the database pager. The request will create a new archive, and as
the archive is newly create doesn't have the materials etc to support
the subtile that was just loaded. To fix the problem getArchiveName
will only return existing archives. createArchiveName was added to
create archives.
"
I see that we should expect some performance penalty for using this method. It won’t be painful in my current case because I have only a few animated characters. But I suspect some day I will have to fix osgCal to use int UniformIds natively for larger crowds."
(with a great 'crease angle' feature), which will crash if the normal
array is already set but without BIND_PER_VERTEX. I just believe that
we should reallocate the normal array in these cases, as the old
implementation does.
"
setup the log level to INFO it does not work. It's because of this line:
OSG_INFO << " GetGeoTransform == "<<
dataset->GetGeoTransform(geoTransform)<<"
I have just put the function outside of an stream stuff, and it works.
It's possible we have other code like that in other plugins, I guess
it's a side effect of the MACRO stuff about notification."
I found two indirect calls to the glTexEnv in the file Text.cpp:
state.applyTextureAttribute(0,getActiveFont()->getTexEnv());
In the attached fix I surrounded these calls with #ifdef's checking for OSG_GL_FIXED_FUNCTION_AVAILABLE to ensure that the above function is only called when the fixed function pipeline is available.
"