Hi Aurelien,
It seems that already works! I attached code...
Code:
_qtViewer = new osgGenerals::ViewerQT(this);
ui.OSGRenderLayout->addWidget(_qtViewer);
_qtViewer->updateCamera(center,eye,up);
_qtViewer->setSceneData(_mainLogic->getRootGroup());
_qtViewer->startRendering();
Thank you!
Cheers,
Aitor
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=46582#46582
#ifndef _OSG_QT_RENDER_H_
#define _OSG_QT_RENDER_H_
#include <osgViewer/Viewer>
#include <osgViewer/GraphicsWindow>
#include <osgViewer/CompositeViewer>
#include <osgViewer/ViewerEventHandlers>
#include <osgGA/TrackballManipulator>
#include <osg/Notify>
#define USE_QT4 1
#if USE_QT4
#include <QtCore/QString>
#include <QtCore/QTimer>
#include <QtGui/QKeyEvent>
#include <QtOpenGL/QGLWidget>
#include <QtCore/QThread>
#include <QtCore/QMutex>
using Qt::WindowFlags;
#else
class QWidget;
#include <qtimer.h>
#include <qgl.h>
#include <qapplication.h>
#define WindowFlags WFlags
#endif
#include <iostream>
namespace osgGenerals{
class LogFileHandler : public osg::NotifyHandler
{
public:
LogFileHandler( const std::string& file )
{ _log.open( file.c_str() ); }
virtual ~LogFileHandler() { _log.close(); }
virtual void notify(osg::NotifySeverity severity,
const char* msg)
{ _log << msg; }
protected:
std::ofstream _log;
};
class ViewerQT;
class GLPainter : public QObject
{
Q_OBJECT
public:
GLPainter(ViewerQT *widget);
void stop();
void resizeViewport(const QSize &size);
void updateCamera(osg::Vec3f center, osg::Vec3f eye, osg::Vec3f up);
public slots:
void start();
protected:
void timerEvent(QTimerEvent *event);
private:
QMutex mutex;
ViewerQT *glWidget;
bool doRendering;
};
class AdapterWidget : public QGLWidget
{
public:
AdapterWidget( QWidget * parent = 0, const char * name = 0, const
QGLWidget * shareWidget = 0, WindowFlags f = 0 );
virtual ~AdapterWidget() {}
osgViewer::GraphicsWindow* getGraphicsWindow() { return _gw.get(); }
const osgViewer::GraphicsWindow* getGraphicsWindow() const { return
_gw.get(); }
protected:
void init();
virtual void resizeGL( int width, int height );
virtual void keyPressEvent( QKeyEvent* event );
virtual void keyReleaseEvent( QKeyEvent* event );
virtual void mousePressEvent( QMouseEvent* event );
virtual void mouseReleaseEvent( QMouseEvent* event );
virtual void mouseMoveEvent( QMouseEvent* event );
virtual void wheelEvent(QWheelEvent *event);
osg::ref_ptr<osgViewer::GraphicsWindowEmbedded> _gw;
};
class ViewerQT : public osgViewer::Viewer, public AdapterWidget
{
public:
ViewerQT(QWidget * parent = 0, const char * name = 0, const QGLWidget *
shareWidget = 0, WindowFlags f = 0);
~ViewerQT();
void startRendering();
void stopRendering();
virtual void paintGL();
void updateCamera(osg::Vec3f center, osg::Vec3f eye, osg::Vec3f
up);
protected:
void resizeEvent(QResizeEvent *evt);
void paintEvent(QPaintEvent *);
void closeEvent(QCloseEvent *evt);
GLPainter glPainter;
QThread glThread;
};
}
#endifÿþ# i n c l u d e "