version 1.1.0
add Renderer::GrabFormat flags
This commit is contained in:
@@ -26,7 +26,7 @@ else()
|
|||||||
include(SHSTKQtMacros)
|
include(SHSTKQtMacros)
|
||||||
|
|
||||||
set(QGLEngine_MAJOR 1)
|
set(QGLEngine_MAJOR 1)
|
||||||
set(QGLEngine_MINOR 0)
|
set(QGLEngine_MINOR 1)
|
||||||
set(QGLEngine_REVISION 0)
|
set(QGLEngine_REVISION 0)
|
||||||
set(QGLEngine_SUFFIX "rc")
|
set(QGLEngine_SUFFIX "rc")
|
||||||
set(QGLEngine_COMPANY SHS)
|
set(QGLEngine_COMPANY SHS)
|
||||||
|
|||||||
@@ -152,6 +152,11 @@ void Framebuffer::queryImage(int index) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Framebuffer::queryImageF(int index) {
|
||||||
|
queryPoints(index, rect(), GL_FLOAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
uint Framebuffer::getPoint() const {
|
uint Framebuffer::getPoint() const {
|
||||||
if (!pbo.isInit() || (pbo_queried == 0)) return 0;
|
if (!pbo.isInit() || (pbo_queried == 0)) return 0;
|
||||||
uint ret = 0;
|
uint ret = 0;
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ public:
|
|||||||
void queryPoint(int index, QPoint p);
|
void queryPoint(int index, QPoint p);
|
||||||
void queryPoints(int index, QRect rect, GLenum pixel_format = GL_UNSIGNED_BYTE);
|
void queryPoints(int index, QRect rect, GLenum pixel_format = GL_UNSIGNED_BYTE);
|
||||||
void queryImage(int index);
|
void queryImage(int index);
|
||||||
|
void queryImageF(int index);
|
||||||
uint getPoint() const;
|
uint getPoint() const;
|
||||||
QVector<uint> getPointsByte() const;
|
QVector<uint> getPointsByte() const;
|
||||||
QVector<QVector4D> getPointsFloat() const;
|
QVector<QVector4D> getPointsFloat() const;
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ void Renderer::init(int width, int height) {
|
|||||||
initCoeffTextures();
|
initCoeffTextures();
|
||||||
markReloadTextures();
|
markReloadTextures();
|
||||||
tex_env.init();
|
tex_env.init();
|
||||||
if (is_grabbing) fbo_out.enablePixelBuffer();
|
fbo_out.enablePixelBuffer();
|
||||||
need_init_shaders = true;
|
need_init_shaders = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -686,11 +686,15 @@ void Renderer::renderScene() {
|
|||||||
|
|
||||||
/// grab framebuffer
|
/// grab framebuffer
|
||||||
phase.begin("grab");
|
phase.begin("grab");
|
||||||
if (is_grabbing) {
|
if (view->grabFormats().testFlag(gfImage)) {
|
||||||
fbo_out.queryImage(0);
|
fbo_out.queryImage(cur_write_plane);
|
||||||
last_img = fbo_out.getImage().mirrored();
|
last_img = fbo_out.getImage().mirrored();
|
||||||
// qDebug() << last_img.size();
|
|
||||||
}
|
}
|
||||||
|
if (view->grabFormats().testFlag(gfFloat)) {
|
||||||
|
fbo_out.queryImageF(obrLighting);
|
||||||
|
last_img_f = fbo_out.getPointsFloat();
|
||||||
|
}
|
||||||
|
// qDebug() << last_img.size();
|
||||||
phase.end();
|
phase.end();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -728,11 +732,6 @@ void Renderer::setCameraLightMode(int m) {
|
|||||||
view->scene()->setLightsChanged();
|
view->scene()->setLightsChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::setGrabImage(bool on) {
|
|
||||||
is_grabbing = on;
|
|
||||||
// fbo_out.enablePixelBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Renderer::addFramebufferEffect(FramebufferEffectBase * e) {
|
void Renderer::addFramebufferEffect(FramebufferEffectBase * e) {
|
||||||
e->r = this;
|
e->r = this;
|
||||||
|
|||||||
@@ -92,6 +92,10 @@ public:
|
|||||||
|
|
||||||
dbrBuffersCount,
|
dbrBuffersCount,
|
||||||
};
|
};
|
||||||
|
enum GrabFormat {
|
||||||
|
gfImage = 1,
|
||||||
|
gfFloat = 2
|
||||||
|
};
|
||||||
|
|
||||||
void init(int width, int height);
|
void init(int width, int height);
|
||||||
void resize(int width, int height);
|
void resize(int width, int height);
|
||||||
@@ -99,9 +103,8 @@ public:
|
|||||||
void renderScene();
|
void renderScene();
|
||||||
void setCameraLightMode(int m);
|
void setCameraLightMode(int m);
|
||||||
int cameraLightMode() const { return camera_light_mode; }
|
int cameraLightMode() const { return camera_light_mode; }
|
||||||
void setGrabImage(bool on);
|
|
||||||
bool isGrabImage() const { return is_grabbing; }
|
|
||||||
QImage getImage() const { return last_img; }
|
QImage getImage() const { return last_img; }
|
||||||
|
QVector<QVector4D> getImageF() const { return last_img_f; }
|
||||||
void addFramebufferEffect(FramebufferEffectBase * e);
|
void addFramebufferEffect(FramebufferEffectBase * e);
|
||||||
void clearFramebufferEffects() { fb_effects.clear(); }
|
void clearFramebufferEffects() { fb_effects.clear(); }
|
||||||
QVector<FramebufferEffectBase *> framebufferEffects() const { return fb_effects; }
|
QVector<FramebufferEffectBase *> framebufferEffects() const { return fb_effects; }
|
||||||
@@ -156,8 +159,8 @@ private:
|
|||||||
QMap<int, QList<Light *>> cur_lights;
|
QMap<int, QList<Light *>> cur_lights;
|
||||||
QVector<FramebufferEffectBase *> fb_effects;
|
QVector<FramebufferEffectBase *> fb_effects;
|
||||||
QImage last_img;
|
QImage last_img;
|
||||||
|
QVector<QVector4D> last_img_f;
|
||||||
QString obr_defines, timings;
|
QString obr_defines, timings;
|
||||||
bool is_grabbing = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // RENDERER_H
|
#endif // RENDERER_H
|
||||||
|
|||||||
@@ -158,9 +158,12 @@ public:
|
|||||||
context_menu.addActions(al);
|
context_menu.addActions(al);
|
||||||
}
|
}
|
||||||
void popupMenu(const QPoint & pos, QAction * at = nullptr) { context_menu.popup(pos, at); }
|
void popupMenu(const QPoint & pos, QAction * at = nullptr) { context_menu.popup(pos, at); }
|
||||||
void setGrabImage(bool on) { renderer_.setGrabImage(on); }
|
void setGrabImage(bool on) { grab_formats.setFlag(Renderer::gfImage, on); }
|
||||||
bool isGrabImage() const { return renderer_.isGrabImage(); }
|
void setGrabImageF(bool on) { grab_formats.setFlag(Renderer::gfFloat, on); }
|
||||||
|
QFlags<Renderer::GrabFormat> grabFormats() const { return grab_formats; }
|
||||||
|
void setGrabFormats(QFlags<Renderer::GrabFormat> f) { grab_formats = f; }
|
||||||
QImage getImage() const { return renderer_.getImage(); }
|
QImage getImage() const { return renderer_.getImage(); }
|
||||||
|
QVector<QVector4D> getImageF() const { return renderer_.getImageF(); }
|
||||||
|
|
||||||
void setShadowMapSize(QSize sz);
|
void setShadowMapSize(QSize sz);
|
||||||
void setTextureMapSize(QSize sz);
|
void setTextureMapSize(QSize sz);
|
||||||
@@ -212,6 +215,7 @@ private:
|
|||||||
QElapsedTimer time;
|
QElapsedTimer time;
|
||||||
GLint max_anisotropic, max_texture_chanels;
|
GLint max_anisotropic, max_texture_chanels;
|
||||||
RenderMode render_mode;
|
RenderMode render_mode;
|
||||||
|
QFlags<Renderer::GrabFormat> grab_formats;
|
||||||
QSize prev_size, shadow_map_size;
|
QSize prev_size, shadow_map_size;
|
||||||
float lineWidth_, soft_shadows_quality;
|
float lineWidth_, soft_shadows_quality;
|
||||||
float fps_, fps_tm, fogDensity_, fogDecay_;
|
float fps_, fps_tm, fogDensity_, fogDecay_;
|
||||||
|
|||||||
Reference in New Issue
Block a user