git-svn-id: svn://db.shs.com.ru/libs@286 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -23,9 +23,18 @@ QGLView::QGLView(QWidget * parent): QGraphicsView(parent), fbo_selection(3) {
|
||||
setFrameShape(QFrame::NoFrame);
|
||||
setViewportUpdateMode(FullViewportUpdate);
|
||||
setCacheMode(CacheNone);
|
||||
__GLWidget__ * _w;
|
||||
#if QT_VERSION >= 0x050600
|
||||
_w = new __GLWidget__();
|
||||
QSurfaceFormat f = _w->format();
|
||||
f.setSamples(8);
|
||||
_w->setFormat(f);
|
||||
#else
|
||||
QGLFormat f(QGL::DoubleBuffer | QGL::DepthBuffer | QGL::Rgba | QGL::AlphaChannel | QGL::DirectRendering | QGL::SampleBuffers);
|
||||
f.setSwapInterval(1);
|
||||
setViewport(new QGLWidget(f));
|
||||
_w = new __GLWidget__(f);
|
||||
#endif
|
||||
setViewport(_w);
|
||||
setMouseTracking(true);
|
||||
setFocusPolicy(Qt::WheelFocus);
|
||||
setScene(new QGraphicsScene());
|
||||
@@ -156,7 +165,10 @@ void QGLView::drawBackground(QPainter * painter, const QRectF & rect) {
|
||||
void QGLView::initializeGL() {
|
||||
//qDebug() << "init glview";
|
||||
makeCurrent();
|
||||
currentQGLView = (QGLWidget * )viewport();
|
||||
#if QT_VERSION >= 0x050600
|
||||
initializeOpenGLFunctions();
|
||||
#endif
|
||||
currentQGLView = (__GLWidget__ * )viewport();
|
||||
currentGLTextureManager = &textures_manager;
|
||||
currentCamera = &camera();
|
||||
glEnable(GL_TEXTURE_MAX_ANISOTROPY_EXT);
|
||||
@@ -184,9 +196,9 @@ void QGLView::initializeGL() {
|
||||
objects_.initInternal();
|
||||
checkCaps();
|
||||
|
||||
shader_select = new QGLShaderProgram(context());
|
||||
shader_halo = new QGLShaderProgram(context());
|
||||
//shader_rope = new QGLShaderProgram(context());
|
||||
shader_select = new __GLShaderProgram__(context());
|
||||
shader_halo = new __GLShaderProgram__(context());
|
||||
//shader_rope = new __GLShaderProgram__(context());
|
||||
reloadThisShaders();
|
||||
is_init = true;
|
||||
resizeGL(viewport()->width(), viewport()->height());
|
||||
@@ -483,7 +495,7 @@ void QGLView::checkCaps() {
|
||||
//glGetIntegerv(GL_MAX_TEXTURE_UNITS, &max_texture_chanels);
|
||||
//qDebug() << max_texture_chanels;
|
||||
//qDebug() << max_texture_chanels;
|
||||
shaders_supported = QGLShaderProgram::hasOpenGLShaderPrograms();
|
||||
shaders_supported = __GLShaderProgram__::hasOpenGLShaderPrograms();
|
||||
}
|
||||
|
||||
|
||||
@@ -540,7 +552,11 @@ void QGLView::mouseReleaseEvent(QMouseEvent * e) {
|
||||
|
||||
void QGLView::mousePressEvent(QMouseEvent * e) {
|
||||
QGraphicsView::mousePressEvent(e);
|
||||
mouseThis_ = (scene()->itemAt(mapToScene(e->pos())) == 0);
|
||||
mouseThis_ = (scene()->itemAt(mapToScene(e->pos())
|
||||
#if QT_VERSION >= 0x050000
|
||||
, QTransform()
|
||||
#endif
|
||||
) == 0);
|
||||
selecting_ = false;
|
||||
if (!mouseThis_) return;
|
||||
/// TODO select by rect
|
||||
@@ -616,7 +632,11 @@ void QGLView::mouseMoveEvent(QMouseEvent * e) {
|
||||
|
||||
void QGLView::wheelEvent(QWheelEvent * e) {
|
||||
QGraphicsView::wheelEvent(e);
|
||||
if (scene()->itemAt(mapToScene(e->pos())) != 0) return;
|
||||
if (scene()->itemAt(mapToScene(e->pos())
|
||||
#if QT_VERSION >= 0x050000
|
||||
, QTransform()
|
||||
#endif
|
||||
) != 0) return;
|
||||
if (mouseRotate_) {
|
||||
if (e->delta() > 0) camera().flyCloser(0.1); //camera().pos.setZ(camera().pos.z() - 0.1 * camera().pos.z());
|
||||
if (e->delta() < 0) camera().flyFarer(0.1); //camera().pos.setZ(camera().pos.z() + 0.1 * camera().pos.z());
|
||||
|
||||
Reference in New Issue
Block a user