
Originally Posted by
wysota
Such measurements are unreliable.
Then how could I monitor a reliable one?
void GlWidget::paintGL()
{
glClearColor(0, 0, 0, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
QMatrix4x4 vMatrix;
float sg = pow(2, camera.zoom);
float sx = 256.0 / width();
float sy = 256.0 / height();
vMatrix.setToIdentity();
vMatrix.scale(sx * sg, sy * sg, 1);
vMatrix.translate(-2 * camera.panX + 1, 2 * camera.panY - 1, 0);
shaderProgramPixels.bind();
shaderProgramPixels.setUniformValue("mvpMatrix", vMatrix);
ppi->render(&shaderProgramPixels);
shaderProgramPixels.disableAttributeArray("vertex");
shaderProgramPixels.disableAttributeArray("color" );
shaderProgramPixels.release();
shaderProgram.bind();
shaderProgram.setUniformValue("mvpMatrix", vMatrix);
ppi->RenderRange(&shaderProgram);
RenderLines();
shaderProgram.disableAttributeArray("vertex");
shaderProgram.disableAttributeArray("color" );
shaderProgram.release();
}
void GlWidget::paintGL()
{
glClearColor(0, 0, 0, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
QMatrix4x4 vMatrix;
float sg = pow(2, camera.zoom);
float sx = 256.0 / width();
float sy = 256.0 / height();
vMatrix.setToIdentity();
vMatrix.scale(sx * sg, sy * sg, 1);
vMatrix.translate(-2 * camera.panX + 1, 2 * camera.panY - 1, 0);
shaderProgramPixels.bind();
shaderProgramPixels.setUniformValue("mvpMatrix", vMatrix);
ppi->render(&shaderProgramPixels);
shaderProgramPixels.disableAttributeArray("vertex");
shaderProgramPixels.disableAttributeArray("color" );
shaderProgramPixels.release();
shaderProgram.bind();
shaderProgram.setUniformValue("mvpMatrix", vMatrix);
ppi->RenderRange(&shaderProgram);
RenderLines();
shaderProgram.disableAttributeArray("vertex");
shaderProgram.disableAttributeArray("color" );
shaderProgram.release();
}
To copy to clipboard, switch view to plain text mode
Vertices are created at initialization once and then only used. All render functions inside paint do the following:
void PlanPositionIndicator::render(QGLShaderProgram* shaderProgram)
{
// qDebug() << vertices.size();
shaderProgram->setAttributeArray("vertex", vertices.constData());
shaderProgram->enableAttributeArray("vertex");
shaderProgram->setAttributeArray("color", GL_FLOAT,colors,1);
// shaderProgram->setAttributeArray("color", GL_FLOAT,colors.data(),1);
shaderProgram->enableAttributeArray("color");
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDrawArrays(GL_TRIANGLES, 0, vertices.size());
}
void PlanPositionIndicator::render(QGLShaderProgram* shaderProgram)
{
// qDebug() << vertices.size();
shaderProgram->setAttributeArray("vertex", vertices.constData());
shaderProgram->enableAttributeArray("vertex");
shaderProgram->setAttributeArray("color", GL_FLOAT,colors,1);
// shaderProgram->setAttributeArray("color", GL_FLOAT,colors.data(),1);
shaderProgram->enableAttributeArray("color");
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDrawArrays(GL_TRIANGLES, 0, vertices.size());
}
To copy to clipboard, switch view to plain text mode
Bookmarks