私はopenglとQMLのものを混ぜたい. 私は qt 5 ベータ 2 を使用しました。問題を表示するための最小限のプログラムを作成します。
main.ccp
#include <QGuiApplication>
#include "back.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Back b;
b.setSource(QUrl("ui.qml"));
b.show();
return a.exec();
}
back.h
#ifndef BACK_H
#define BACK_H
#include <QtQuick>
#include <QtOpenGL>
#include <QTimer>
class Back : public QQuickView
{
Q_OBJECT
public:
~Back();
Back();
public slots :
void paint();
};
#endif // BACK_H
back.ccp
#include "back.h"
Back::Back()
{
setClearBeforeRendering(false);
connect(this, SIGNAL(beforeRendering()), this, SLOT(paint()), Qt::DirectConnection);
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()), Qt::DirectConnection);
timer->start(3000);
}
Back::~Back()
{
}
void Back::paint()
{
glViewport(0, 0, 150, 150);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 150, 150,0,0,10);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glColor3ub(255, 0, 0);
glBegin(GL_QUADS);
glVertex2i(0, 0);
glVertex2i(100, 0);
glVertex2i(100, 100);
glVertex2i(0, 100);
glEnd();
}
ui.qml
import QtQuick 2.0
Item {
width : 150
height : 150
Rectangle {
x : 50
y : 50
width: 100
height: 100
color: "green"
}
}
最初の写真は正しいです。オフセットのある赤い四角と黒い背景を持つ緑の四角があります。 写真1
3 秒後、2 番目は正しくありません: 背景画像付きの緑色の四角形しかありません 2
誰かが私が間違っていることを知っていますか?