lightpreview: add "Show Tris (See Through)" option
This commit is contained in:
parent
4994ab4f1d
commit
07020ceeae
|
|
@ -427,29 +427,6 @@ void GLView::paintGL()
|
|||
|
||||
QMatrix4x4 MVP = projectionMatrix * viewMatrix * modelMatrix;
|
||||
|
||||
// wireframe
|
||||
if (m_showTris) {
|
||||
m_program_wireframe->bind();
|
||||
m_program_wireframe->setUniformValue(m_program_wireframe_mvp_location, MVP);
|
||||
|
||||
glEnable(GL_POLYGON_OFFSET_FILL);
|
||||
glEnable(GL_POLYGON_OFFSET_LINE);
|
||||
glPolygonOffset(-0.8, 1.0);
|
||||
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
||||
QOpenGLVertexArrayObject::Binder vaoBinder(&m_vao);
|
||||
|
||||
for (auto &draw : m_drawcalls) {
|
||||
glDrawElements(GL_TRIANGLES, draw.index_count, GL_UNSIGNED_INT,
|
||||
reinterpret_cast<void *>(draw.first_index * sizeof(uint32_t)));
|
||||
}
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||
glDisable(GL_POLYGON_OFFSET_LINE);
|
||||
|
||||
m_program_wireframe->release();
|
||||
}
|
||||
|
||||
QOpenGLShaderProgram *active_program = nullptr;
|
||||
|
||||
m_program->bind();
|
||||
|
|
@ -539,6 +516,33 @@ void GLView::paintGL()
|
|||
|
||||
m_program->release();
|
||||
|
||||
// wireframe
|
||||
if (m_showTris || m_showTrisSeeThrough) {
|
||||
m_program_wireframe->bind();
|
||||
m_program_wireframe->setUniformValue(m_program_wireframe_mvp_location, MVP);
|
||||
|
||||
if (m_showTrisSeeThrough)
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glEnable(GL_POLYGON_OFFSET_FILL);
|
||||
glEnable(GL_POLYGON_OFFSET_LINE);
|
||||
glPolygonOffset(-0.8, 1.0);
|
||||
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
||||
QOpenGLVertexArrayObject::Binder vaoBinder(&m_vao);
|
||||
|
||||
for (auto &draw : m_drawcalls) {
|
||||
glDrawElements(GL_TRIANGLES, draw.index_count, GL_UNSIGNED_INT,
|
||||
reinterpret_cast<void *>(draw.first_index * sizeof(uint32_t)));
|
||||
}
|
||||
if (m_showTrisSeeThrough)
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||
glDisable(GL_POLYGON_OFFSET_LINE);
|
||||
|
||||
m_program_wireframe->release();
|
||||
}
|
||||
|
||||
if (m_drawLeak && num_leak_points) {
|
||||
m_program_simple->bind();
|
||||
m_program_simple->setUniformValue(m_program_simple_mvp_location, MVP);
|
||||
|
|
@ -619,6 +623,12 @@ void GLView::setShowTris(bool showtris)
|
|||
update();
|
||||
}
|
||||
|
||||
void GLView::setShowTrisSeeThrough(bool showtris)
|
||||
{
|
||||
m_showTrisSeeThrough = showtris;
|
||||
update();
|
||||
}
|
||||
|
||||
void GLView::setDrawFlat(bool drawflat)
|
||||
{
|
||||
m_drawFlat = drawflat;
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ private:
|
|||
bool m_fullbright = false;
|
||||
bool m_drawNormals = false;
|
||||
bool m_showTris = false;
|
||||
bool m_showTrisSeeThrough = false;
|
||||
bool m_drawFlat = false;
|
||||
bool m_keepOrigin = false;
|
||||
bool m_drawPortals = false;
|
||||
|
|
@ -170,6 +171,7 @@ public:
|
|||
void setFullbright(bool fullbright);
|
||||
void setDrawNormals(bool drawnormals);
|
||||
void setShowTris(bool showtris);
|
||||
void setShowTrisSeeThrough(bool showtris);
|
||||
void setDrawFlat(bool drawflat);
|
||||
void setKeepOrigin(bool keeporigin);
|
||||
void setDrawPortals(bool drawportals);
|
||||
|
|
|
|||
|
|
@ -172,6 +172,7 @@ void MainWindow::createPropertiesSidebar()
|
|||
auto *drawleak = new QCheckBox(tr("Draw Leak (PTS/LIN)"));
|
||||
|
||||
auto *showtris = new QCheckBox(tr("Show Tris"));
|
||||
auto *showtris_seethrough = new QCheckBox(tr("Show Tris (See Through)"));
|
||||
|
||||
auto *keepposition = new QCheckBox(tr("Keep Camera Pos"));
|
||||
|
||||
|
|
@ -191,6 +192,7 @@ void MainWindow::createPropertiesSidebar()
|
|||
formLayout->addRow(drawportals);
|
||||
formLayout->addRow(drawleak);
|
||||
formLayout->addRow(showtris);
|
||||
formLayout->addRow(showtris_seethrough);
|
||||
formLayout->addRow(keepposition);
|
||||
formLayout->addRow(nearest);
|
||||
formLayout->addRow(bspx_decoupled_lm);
|
||||
|
|
@ -236,6 +238,8 @@ void MainWindow::createPropertiesSidebar()
|
|||
connect(fullbright, &QAbstractButton::toggled, this, [=](bool checked) { glView->setFullbright(checked); });
|
||||
connect(normals, &QAbstractButton::toggled, this, [=](bool checked) { glView->setDrawNormals(checked); });
|
||||
connect(showtris, &QAbstractButton::toggled, this, [=](bool checked) { glView->setShowTris(checked); });
|
||||
connect(showtris_seethrough, &QAbstractButton::toggled, this,
|
||||
[=](bool checked) { glView->setShowTrisSeeThrough(checked); });
|
||||
connect(drawflat, &QAbstractButton::toggled, this, [=](bool checked) { glView->setDrawFlat(checked); });
|
||||
connect(drawportals, &QAbstractButton::toggled, this, [=](bool checked) { glView->setDrawPortals(checked); });
|
||||
connect(drawleak, &QAbstractButton::toggled, this, [=](bool checked) { glView->setDrawLeak(checked); });
|
||||
|
|
|
|||
Loading…
Reference in New Issue