Files
Renderive/YSGraphic_Core/base/Graphic.h
T
2026-07-23 12:27:06 +08:00

57 lines
1.4 KiB
C++

#pragma once
#include <QWindow>
#include "../GlobalTypes.h"
namespace YSG{
class LIB_DECL GraphicLayer {
public:
};
class PainterLayer : public GraphicLayer{
public:
QPixmap *mBuffer1{};
QPixmap *mBuffer2{};
bool it = true;
void draw() {
it = !it;
QPixmap* cur = it ? mBuffer1 : mBuffer2;
QPainter painter(cur);
painter.fillRect(cur->rect(), Qt::red);
}
void updateTexture() {
QPixmap* cur = it ? mBuffer1 : mBuffer2;
}
};
class LIB_DECL OpenglLayer : public GraphicLayer {
public:
void draw();
};
class Graphic : public QWindow {
public:
Graphic();
QVector<GraphicLayer*> mLayers;
QVector<PainterLayer*> mPainterBuffers;
QVector<OpenglLayer*> mOpenglBuffers;
bool mFirstResize;
protected:
bool event(QEvent*) override;
public:
virtual void createLayers() {
};
void render() {
if(mFirstResize) return;
for(OpenglLayer* b : mOpenglBuffers) {
b->draw();
}
// 插入opengl同步变量
for(PainterLayer* b : mPainterBuffers) {
b->draw();
b->updateTexture();
}
// 等待opengl同步变量
// opengl汇总绘制
}
};
}