summaryrefslogtreecommitdiffstats
path: root/src/widgets/doc/snippets/code
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2020-10-28 18:25:27 +0100
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2020-10-29 09:48:28 +0100
commit7635d77689193e729db248300634571aea4d8c81 (patch)
tree3b3d47208c25d209f6d6a9d94b36f8dfab457559 /src/widgets/doc/snippets/code
parent61574ee963a5c3f70ede89c1a7367db621164b6f (diff)
Organize QtOpenGLWidgets documentation
Move snippets to the right place, and give the widgets class a place to live. QtOpenGLWidgets is just a library, not a separate module, but we need a module page that the class can refer to for correct build instructions. Change-Id: I6d955ad3c4cd1003a828cc1f256deb6e7fb50ec4 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Diffstat (limited to 'src/widgets/doc/snippets/code')
-rw-r--r--src/widgets/doc/snippets/code/doc_gui_widgets_qopenglwidget.cpp209
1 files changed, 0 insertions, 209 deletions
diff --git a/src/widgets/doc/snippets/code/doc_gui_widgets_qopenglwidget.cpp b/src/widgets/doc/snippets/code/doc_gui_widgets_qopenglwidget.cpp
deleted file mode 100644
index 633a413b4f..0000000000
--- a/src/widgets/doc/snippets/code/doc_gui_widgets_qopenglwidget.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//! [0]
-class MyGLWidget : public QOpenGLWidget
-{
-public:
- MyGLWidget(QWidget *parent) : QOpenGLWidget(parent) { }
-
-protected:
- void initializeGL() override
- {
- // Set up the rendering context, load shaders and other resources, etc.:
- QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
- f->glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
- ...
- }
-
- void resizeGL(int w, int h) override
- {
- // Update projection matrix and other size related settings:
- m_projection.setToIdentity();
- m_projection.perspective(45.0f, w / float(h), 0.01f, 100.0f);
- ...
- }
-
- void paintGL() override
- {
- // Draw the scene:
- QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
- f->glClear(GL_COLOR_BUFFER_BIT);
- ...
- }
-
-};
-//! [0]
-
-//! [1]
-class MyGLWidget : public QOpenGLWidget, protected QOpenGLFunctions
-{
- ...
- void initializeGL() override
- {
- initializeOpenGLFunctions();
- glClearColor(...);
- ...
- }
- ...
-};
-//! [1]
-
-//! [2]
-QOpenGLWidget *widget = new QOpenGLWidget(parent);
-QSurfaceFormat format;
-format.setDepthBufferSize(24);
-format.setStencilBufferSize(8);
-format.setVersion(3, 2);
-format.setProfile(QSurfaceFormat::CoreProfile);
-widget->setFormat(format); // must be called before the widget or its parent window gets shown
-//! [2]
-
-//! [3]
- ...
- void paintGL() override
- {
- QOpenGLFunctions_3_2_Core *f = QOpenGLContext::currentContext()->versionFunctions<QOpenGLFunctions_3_2_Core>();
- ...
- f->glDrawArraysInstanced(...);
- ...
- }
- ...
-//! [3]
-
-//! [4]
-class MyGLWidget : public QOpenGLWidget
-{
- ...
-
-private:
- QOpenGLVertexArrayObject m_vao;
- QOpenGLBuffer m_vbo;
- QOpenGLShaderProgram *m_program;
- QOpenGLShader *m_shader;
- QOpenGLTexture *m_texture;
-};
-
-MyGLWidget::MyGLWidget()
- : m_program(0), m_shader(0), m_texture(0)
-{
- // No OpenGL resource initialization is done here.
-}
-
-MyGLWidget::~MyGLWidget()
-{
- // Make sure the context is current and then explicitly
- // destroy all underlying OpenGL resources.
- makeCurrent();
-
- delete m_texture;
- delete m_shader;
- delete m_program;
-
- m_vbo.destroy();
- m_vao.destroy();
-
- doneCurrent();
-}
-
-void MyGLWidget::initializeGL()
-{
- m_vao.create();
- if (m_vao.isCreated())
- m_vao.bind();
-
- m_vbo.create();
- m_vbo.bind();
- m_vbo.allocate(...);
-
- m_texture = new QOpenGLTexture(QImage(...));
-
- m_shader = new QOpenGLShader(...);
- m_program = new QOpenGLShaderProgram(...);
-
- ...
-}
-//! [4]
-
-//! [5]
-void MyGLWidget::initializeGL()
-{
- // context() and QOpenGLContext::currentContext() are equivalent when called from initializeGL or paintGL.
- connect(context(), &QOpenGLContext::aboutToBeDestroyed, this, &MyGLWidget::cleanup);
-}
-
-void MyGLWidget::cleanup()
-{
- makeCurrent();
- delete m_texture;
- m_texture = 0;
- ...
- doneCurrent();
-}
-//! [5]
-
-//! [6]
-int main(int argc, char **argv)
-{
- QApplication app(argc, argv);
-
- QSurfaceFormat format;
- format.setDepthBufferSize(24);
- format.setStencilBufferSize(8);
- format.setVersion(3, 2);
- format.setProfile(QSurfaceFormat::CoreProfile);
- QSurfaceFormat::setDefaultFormat(format);
-
- MyWidget widget;
- widget.show();
-
- return app.exec();
-}
-//! [6]