#include "WindowBuilder.hxx"
#include "WindowSystemAdapter.hxx"
-#if (FG_OSG_VERSION >= 19008)
-#define OSG_HAS_MOUSE_CURSOR_PATCH
+// Static linking of OSG needs special macros
+#ifdef OSG_LIBRARY_STATIC
+#include <osgDB/Registry>
+USE_GRAPHICSWINDOW();
+// Image formats
+USE_OSGPLUGIN(bmp);
+USE_OSGPLUGIN(dds);
+USE_OSGPLUGIN(hdr);
+USE_OSGPLUGIN(pic);
+USE_OSGPLUGIN(pnm);
+USE_OSGPLUGIN(rgb);
+USE_OSGPLUGIN(tga);
+#ifdef OSG_JPEG_ENABLED
+ USE_OSGPLUGIN(jpeg);
+#endif
+#ifdef OSG_PNG_ENABLED
+ USE_OSGPLUGIN(png);
+#endif
+#ifdef OSG_TIFF_ENABLED
+ USE_OSGPLUGIN(tiff);
+#endif
+// Model formats
+USE_OSGPLUGIN(3ds);
+USE_OSGPLUGIN(ac);
+USE_OSGPLUGIN(ive);
+USE_OSGPLUGIN(osg);
+USE_OSGPLUGIN(txf);
#endif
// fg_os implementation using OpenSceneGraph's osgViewer::Viewer class
void fgOSOpenWindow(bool stencil)
{
- osg::GraphicsContext::WindowingSystemInterface* wsi
- = osg::GraphicsContext::getWindowingSystemInterface();
-
viewer = new osgViewer::Viewer;
viewer->setDatabasePager(FGScenery::getPagerSingleton());
CameraGroup* cameraGroup = 0;
ref_ptr<FGEventHandler> manipulator
= globals->get_renderer()->getEventHandler();
viewer->setReleaseContextAtEndOfFrameHint(false);
+ if (!viewer->isRealized())
+ viewer->realize();
while (!viewer->done()) {
fgIdleHandler idleFunc = manipulator->getIdleHandler();
fgDrawHandler drawFunc = manipulator->getDrawHandler();
{
}
-#ifdef OSG_HAS_MOUSE_CURSOR_PATCH
static void setMouseCursor(osg::Camera* camera, int cursor)
{
if (!camera)
gw->setCursor(mouseCursor);
}
-#endif
static int _cursor = -1;
void fgSetMouseCursor(int cursor)
{
_cursor = cursor;
-#ifdef OSG_HAS_MOUSE_CURSOR_PATCH
setMouseCursor(viewer->getCamera(), cursor);
for (unsigned i = 0; i < viewer->getNumSlaves(); ++i)
setMouseCursor(viewer->getSlave(i)._camera.get(), cursor);
-#endif
}
int fgGetMouseCursor()