git-svn-id: svn://db.shs.com.ru/libs@636 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2019-11-27 21:49:24 +00:00
parent 988c4e1150
commit 09298fadcd
22 changed files with 291 additions and 173 deletions

View File

@@ -62,29 +62,18 @@ void RendererSelection::generateObjectsID(Scene & scene) {
o->id_ = id;
}
}
foreach (ObjectBase * o, scene.lights_used) {
uint id = qHash(o);
ids[id] = o;
o->id_ = id;
QMapIterator<int, QList<Light*>> lit(scene.lights_used);
while (lit.hasNext()) {
lit.next();
foreach (ObjectBase * o, lit.value()) {
uint id = qHash(o);
ids[id] = o;
o->id_ = id;
}
}
}
void RendererSelection::fillSelectionsBuffer(const QList<ObjectBase *> & ol) {
cur_selections_.resize(ol.size());
for (int i = 0; i < ol.size(); ++i) {
cur_selections_[i] = (ol[i]->isSelected(true) ? 1 : 0);
}
}
void RendererSelection::fillSelectionsBuffer(bool yes, int size) {
cur_selections_.resize(size);
for (int i = 0; i < size; ++i)
cur_selections_[i] = (yes ? 1 : 0);
}
void RendererSelection::renderSelection(Scene & scene) {
QOpenGLShaderProgram * prog = 0;
QGLView * view = r->view;
@@ -120,12 +109,7 @@ void RendererSelection::renderSelection(Scene & scene) {
view->glClear(GL_DEPTH_BUFFER_BIT);
RendererService & rs(r->rend_service);
rs.fillOmniObjects();
rs.omni_mesh->loadObjects(view, rs.cur_objects);
fillSelectionsBuffer(light2objectList(scene.lights_used));
rs.omni_mesh->loadSelections(view, cur_selections_);
rs.omni_mesh->draw(view, rs.cur_objects.size());
rs.drawLights();
rs.drawCurrentHandleObjects();
//mouse_rect = fbo_selection.rect();