Files
Renderive/YSGraphic_Core/base/Graphic.h
T
2026-07-23 18:11:07 +08:00

53 lines
1.2 KiB
C++

#pragma once
#include <QWindow>
#include "../GlobalTypes.h"
namespace YSG {
class LIB_DECL Graphic_Layer {
public:
};
class Painter_Layer : public Graphic_Layer {
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 update_texture() {
QPixmap* cur = it ? mBuffer1 : mBuffer2;
}
};
class LIB_DECL Opengl_Layer : public Graphic_Layer {
public:
void draw();
};
class Graphic : public QWindow {
public:
Graphic();
QVector<Graphic_Layer*> mLayers;
QVector<Painter_Layer*> mPainterBuffers;
QVector<Opengl_Layer*> mOpenglBuffers;
bool mFirstResize;
protected:
bool event(QEvent*) override;
public:
virtual void create_layers() {};
void render() {
if (mFirstResize) return;
for (Opengl_Layer* b : mOpenglBuffers) {
b->draw();
}
// 插入opengl同步变量
for (Painter_Layer* b : mPainterBuffers) {
b->draw();
b->update_texture();
}
// 等待opengl同步变量
// opengl汇总绘制
}
};
}