Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QGLWidget и вывод дочерних виджетов.
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Система рисования. Печать
Рюк
на виджете наследнике QGLWidget дети не выводятся нормально, на месте ребенка(кнопки или лейбла) какая-то фигня.
Что делать, или может есть еще способы вывода других виджетов в теле наследника QGLWIdget?
ViGOur
Код покажи...
Рюк
Эту проблему уже решил путем испоьзования QGraphicsView и QGraphicsScene. Теперь возникла проблема другого рода. невозможно отдельно проинициализировать контекст и вывод(Я OpenGL сцену в бэкграунде вывожу). При этом получается дикие тормоза

#include "Actor.h"
#include <QtGui>
#include <GL/glu.h>
#include <QGLWidget>
class OpenGLScene : public QGraphicsScene{
    Player *P;
    Body G;
    PolyMesh SD;
    QPushButton *l;
public:
    OpenGLScene(){
        l=new QPushButton("HATE!");
        addWidget(l);
        g=0;
    }
    void drawBackground(QPainter *painter, const QRectF &){
        if (painter->paintEngine()->type() != QPaintEngine::OpenGL && painter->paintEngine()->type() != QPaintEngine::OpenGL2){
            qWarning("OpenGLScene: drawBackground needs a QGLWidget to be set as viewport on the graphics view");
            return;
        }
        painter->beginNativePainting();
//это в инициализацию зафигарить хочу
        SD.Create("/P.ply","/P.ply","/img.jpg");
        G.AddPart(SD);
        glClearColor(0.0, 0.5, 1.0, 0.0);
        glShadeModel(GL_SMOOTH);
        glEnable(GL_LINE_SMOOTH);
        glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
        glEnable(GL_LIGHTING);
        glEnable(GL_LIGHT0);
        glEnable(GL_DEPTH_TEST);
        static GLfloat lightPosition[4] = {5, 5, 5, 1.0};
        glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
        G.Init();
//это в вывод
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(65.0f,16.0/9.0F,0.1f,200.0f);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glLoadIdentity();
        gluLookAt(0,0,10,0,0,0,0,1,0);
        G.View();
        glDisable(GL_DEPTH_TEST);
        QTimer::singleShot(200, this, SLOT(update()));
    }
};
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.