summaryrefslogtreecommitdiffstats
path: root/examples/opengl/threadedqopenglwidget/glwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/opengl/threadedqopenglwidget/glwidget.cpp')
-rw-r--r--examples/opengl/threadedqopenglwidget/glwidget.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/examples/opengl/threadedqopenglwidget/glwidget.cpp b/examples/opengl/threadedqopenglwidget/glwidget.cpp
index 34d97bf1bf9..d447f0c7166 100644
--- a/examples/opengl/threadedqopenglwidget/glwidget.cpp
+++ b/examples/opengl/threadedqopenglwidget/glwidget.cpp
@@ -47,10 +47,6 @@ const int bubbleNum = 8;
GLWidget::GLWidget(QWidget *parent)
: QOpenGLWidget(parent)
{
- QSurfaceFormat format;
- format.setDepthBufferSize(16);
- setFormat(format);
-
setMinimumSize(300, 250);
connect(this, &QOpenGLWidget::aboutToCompose, this, &GLWidget::onAboutToCompose);
@@ -120,11 +116,16 @@ Renderer::Renderer(GLWidget *w)
void Renderer::paintQtLogo()
{
- program.enableAttributeArray(normalAttr);
+ vbo.bind();
+ program.setAttributeBuffer(vertexAttr, GL_FLOAT, 0, 3);
+ program.setAttributeBuffer(normalAttr, GL_FLOAT, vertices.count() * 3 * sizeof(GLfloat), 3);
+ vbo.release();
+
program.enableAttributeArray(vertexAttr);
- program.setAttributeArray(vertexAttr, vertices.constData());
- program.setAttributeArray(normalAttr, normals.constData());
+ program.enableAttributeArray(normalAttr);
+
glDrawArrays(GL_TRIANGLES, 0, vertices.size());
+
program.disableAttributeArray(normalAttr);
program.disableAttributeArray(vertexAttr);
}
@@ -201,6 +202,13 @@ void Renderer::render()
m_fScale = 1;
createGeometry();
+ vbo.create();
+ vbo.bind();
+ const int verticesSize = vertices.count() * 3 * sizeof(GLfloat);
+ vbo.allocate(verticesSize * 2);
+ vbo.write(0, vertices.constData(), verticesSize);
+ vbo.write(verticesSize, normals.constData(), verticesSize);
+
m_elapsed.start();
}