Skip to content

Commit

Permalink
OpenGL ES 2.0 G-code visualizer performance test.
Browse files Browse the repository at this point in the history
  • Loading branch information
Denvi committed Sep 8, 2015
1 parent e8642ae commit 1efb140
Show file tree
Hide file tree
Showing 13 changed files with 599 additions and 180 deletions.
16 changes: 12 additions & 4 deletions frmmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,11 @@ frmMain::frmMain(QWidget *parent) :
// m_frmSettings.setWindowFlags(Qt::MSWindowsFixedSizeDialogHint);
m_frmSettings.layout()->setSizeConstraint(QLayout::SetFixedSize);

m_codeDrawer = new GcodeDrawer(this);
m_codeDrawer = new GcodeDrawer();
m_codeDrawer->setViewParser(&m_viewParser);
m_codeDrawer->setObjectName("codeDrawer");
// m_codeDrawer->setObjectName("codeDrawer");

m_probeDrawer = new GcodeDrawer(this);
m_probeDrawer = new GcodeDrawer();
m_probeDrawer->setViewParser(&m_probeParser);
m_probeDrawer->setVisible(false);

Expand Down Expand Up @@ -103,7 +103,7 @@ frmMain::frmMain(QWidget *parent) :
m_tableMenu->addAction(tr("&Delete lines"), this, SLOT(onTableDeleteLines()), deleteShortcut->key());

ui->glwVisualizer->addDrawable(m_codeDrawer);
ui->glwVisualizer->addDrawable(m_probeDrawer);
// ui->glwVisualizer->addDrawable(m_probeDrawer);
ui->glwVisualizer->addDrawable(&m_toolDrawer);
ui->glwVisualizer->addDrawable(&m_heightMapBorderDrawer);
ui->glwVisualizer->addDrawable(&m_heightMapGridDrawer);
Expand Down Expand Up @@ -143,7 +143,13 @@ frmMain::frmMain(QWidget *parent) :
connect(&m_timerStateQuery, SIGNAL(timeout()), this, SLOT(onTimerStateQuery()));

connect(ui->cboCommand, SIGNAL(returnPressed()), this, SLOT(onCboCommandReturnPressed()));
//---------------

m_testShaderDrawable = new ShaderDrawable();
ui->glwVisualizer->addDrawable(m_testShaderDrawable);
// m_testShaderDrawable->update();

//---------------
applySettings();
updateControlsState();

Expand Down Expand Up @@ -1283,6 +1289,7 @@ void frmMain::loadFile(QString fileName)

qDebug() << m_viewParser.getMinimumExtremes() << m_viewParser.getMaximumExtremes();

m_codeDrawer->update();
ui->glwVisualizer->fitDrawable(m_codeDrawer);

resetHeightmap();
Expand Down Expand Up @@ -1498,6 +1505,7 @@ void frmMain::updateParser()
parser->reset();

updateProgramEstimatedTime(parser->getLinesFromParser(&gp, m_arcPrecision));
m_currentDrawer->update();
ui->glwVisualizer->updateExtremes(m_currentDrawer);
updateControlsState();

Expand Down
3 changes: 3 additions & 0 deletions frmmain.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "heightmapborderdrawer.h"
#include "heightmapgriddrawer.h"
#include "heightmapinterpolationdrawer.h"
#include "shaderdrawable.h"
#include "gcodetablemodel.h"
#include "heightmaptablemodel.h"
#include "frmsettings.h"
Expand Down Expand Up @@ -164,6 +165,8 @@ private slots:
GcodeDrawer *m_probeDrawer;
GcodeDrawer *m_currentDrawer;

ShaderDrawable *m_testShaderDrawable;

ToolDrawer m_toolDrawer;
HeightMapBorderDrawer m_heightMapBorderDrawer;
HeightMapGridDrawer m_heightMapGridDrawer;
Expand Down
61 changes: 48 additions & 13 deletions gcodedrawer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,56 @@
#include "math.h"
#include "frmmain.h"

GcodeDrawer::GcodeDrawer(QObject *parent) :
GLDrawable(parent)
GcodeDrawer::GcodeDrawer()
{
qDebug() << parent;
}

void GcodeDrawer::draw()
void GcodeDrawer::updateData()
{
QList<LineSegment*> list = m_viewParser->getLineSegmentList();
VertexData vertex;
bool drawFirstPoint = true;

// Clear all vertex data
m_vertexData.clear();

for (int i = 0; i < list.count(); i++) {

if (std::isnan(list[i]->getEnd().z())) continue;

// Find first point of toolpath
if (drawFirstPoint) {

if (std::isnan(list[i]->getEnd().x()) || std::isnan(list[i]->getEnd().y())) continue;
QVector3D end = list[i]->getEnd();

// TODO: Draw first toolpath point

drawFirstPoint = false;
continue;
}

// Prepare vertices
if (list[i]->isFastTraverse()) vertex.start = list[i]->getStart();
else vertex.start = QVector3D(NAN, NAN, NAN);

if (list[i]->drawn()) vertex.color = QVector3D(0.85, 0.85, 0.85);
else if (list[i]->isHightlight()) vertex.color = QVector3D(0.57, 0.51, 0.9);
else if (list[i]->isFastTraverse()) vertex.color = QVector3D(0.0, 0.0, 0.0);
else if (list[i]->isZMovement()) vertex.color = QVector3D(1.0, 0.0, 0.0);
else vertex.color = QVector3D(0.0, 0.0, 0.0);

// Line start
vertex.position = list[i]->getStart();
m_vertexData.append(vertex);

// Line end
vertex.position = list[i]->getEnd();
m_vertexData.append(vertex);
}
}

/*void GcodeDrawer::draw()
{
if (!m_visible) return;
Expand Down Expand Up @@ -96,16 +139,13 @@ void GcodeDrawer::draw()
glDisable(GL_LINE_STIPPLE);
}
}
}*/

QVector3D GcodeDrawer::getSizes()
{
QVector3D min = m_viewParser->getMinimumExtremes();
QVector3D max = m_viewParser->getMaximumExtremes();

// qDebug() << m_viewParser->getMaximumExtremes() - m_viewParser->getMinimumExtremes();
// qDebug() << QVector3D(max.x() - min.x(), max.y() - min.y(), max.z() - min.z());

return QVector3D(max.x() - min.x(), max.y() - min.y(), max.z() - min.z());
}

Expand Down Expand Up @@ -133,8 +173,3 @@ GcodeViewParse *GcodeDrawer::viewParser()
{
return m_viewParser;
}

//void GcodeDrawer::setLines(QList<LineSegment *> lines)
//{
// m_lines = lines;
//}
15 changes: 8 additions & 7 deletions gcodedrawer.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,29 @@
#include <QVector3D>
#include "linesegment.h"
#include "gcodeviewparse.h"
#include "gldrawable.h"
#include "shaderdrawable.h"

class GcodeDrawer : public GLDrawable
class GcodeDrawer : public ShaderDrawable
{
Q_OBJECT
public:
explicit GcodeDrawer(QObject *parent = 0);
void draw();
explicit GcodeDrawer();

QVector3D getSizes();
QVector3D getMinimumExtremes();
QVector3D getMaximumExtremes();
int getLinesCount();

void setViewParser(GcodeViewParse* viewParser);
GcodeViewParse* viewParser();

int getLinesCount();

signals:

public slots:

private:
GcodeViewParse *m_viewParser;

void updateData();
};

#endif // GCODEDRAWER_H
1 change: 1 addition & 0 deletions gldrawable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ GLDrawable::GLDrawable(QObject *parent) :

void GLDrawable::draw()
{
glEnableClientState(GL_COLOR_ARRAY);
}

QVector3D GLDrawable::getSizes()
Expand Down
Loading

0 comments on commit 1efb140

Please sign in to comment.