From 03d81b0100af4bb9d44a9fa9de55bb4e9e6a0f5d Mon Sep 17 00:00:00 2001 From: Casper van Donderen Date: Tue, 8 May 2012 10:28:29 +0200 Subject: Doc: Modularize QtOpenGL documentation. This change moves the snippets to the modularized directories. Change-Id: Ifcf22fa3f234681f851d1e7eed5fe44e2e223ffd Reviewed-by: Marius Storm-Olsen --- src/opengl/doc/qtopengl.qdocconf | 92 +++++++++++ src/opengl/doc/snippets/code/doc_src_qtopengl.cpp | 43 ++++++ src/opengl/doc/snippets/code/doc_src_qtopengl.pro | 43 ++++++ src/opengl/doc/snippets/code/src_opengl_qgl.cpp | 172 +++++++++++++++++++++ .../doc/snippets/code/src_opengl_qglcolormap.cpp | 61 ++++++++ .../snippets/code/src_opengl_qglpixelbuffer.cpp | 59 +++++++ .../snippets/code/src_opengl_qglshaderprogram.cpp | 94 +++++++++++ src/opengl/doc/src/qtopengl.qdoc | 70 +++++++++ 8 files changed, 634 insertions(+) create mode 100644 src/opengl/doc/qtopengl.qdocconf create mode 100644 src/opengl/doc/snippets/code/doc_src_qtopengl.cpp create mode 100644 src/opengl/doc/snippets/code/doc_src_qtopengl.pro create mode 100644 src/opengl/doc/snippets/code/src_opengl_qgl.cpp create mode 100644 src/opengl/doc/snippets/code/src_opengl_qglcolormap.cpp create mode 100644 src/opengl/doc/snippets/code/src_opengl_qglpixelbuffer.cpp create mode 100644 src/opengl/doc/snippets/code/src_opengl_qglshaderprogram.cpp create mode 100644 src/opengl/doc/src/qtopengl.qdoc (limited to 'src/opengl/doc') diff --git a/src/opengl/doc/qtopengl.qdocconf b/src/opengl/doc/qtopengl.qdocconf new file mode 100644 index 0000000000..f631f03b90 --- /dev/null +++ b/src/opengl/doc/qtopengl.qdocconf @@ -0,0 +1,92 @@ +include(../../../doc/global/qt-cpp-ignore.qdocconf) + +project = QtOpenGL +description = Qt OpenGL Reference Documentation +url = http://qt-project.org/doc/qt-5.0/qtopengl +version = 5.0.0 + +sourceencoding = UTF-8 +outputencoding = UTF-8 +naturallanguage = en_US +qhp.projects = QtOpenGL + +qhp.QtOpenGL.file = qtopengl.qhp +qhp.QtOpenGL.namespace = org.qt-project.qtopengl.500 +qhp.QtOpenGL.virtualFolder = qdoc +qhp.QtOpenGL.indexTitle = Qt OpenGL Reference Documentation +qhp.QtOpenGL.indexRoot = + +qhp.QtOpenGL.filterAttributes = qtopengl 5.0.0 qtrefdoc +qhp.QtOpenGL.customFilters.Qt.name = QtOpenGL 5.0.0 +qhp.QtOpenGL.customFilters.Qt.filterAttributes = qtopengl 5.0.0 +qhp.QtOpenGL.subprojects = classes overviews examples +qhp.QtOpenGL.subprojects.classes.title = Classes +qhp.QtOpenGL.subprojects.classes.indexTitle = Qt OpenGL's Classes +qhp.QtOpenGL.subprojects.classes.selectors = class fake:headerfile +qhp.QtOpenGL.subprojects.classes.sortPages = true +qhp.QtOpenGL.subprojects.overviews.title = Overviews +qhp.QtOpenGL.subprojects.overviews.indexTitle = All Overviews and HOWTOs +qhp.QtOpenGL.subprojects.overviews.selectors = fake:page,group,module +qhp.QtOpenGL.subprojects.examples.title = Qt OpenGL Examples +qhp.QtOpenGL.subprojects.examples.indexTitle = Qt OpenGL Examples +qhp.QtOpenGL.subprojects.examples.selectors = fake:example + +dita.metadata.default.author = Qt Project +dita.metadata.default.permissions = all +dita.metadata.default.publisher = Qt Project +dita.metadata.default.copyryear = 2012 +dita.metadata.default.copyrholder = Nokia +dita.metadata.default.audience = programmer + +sources.fileextensions = "*.c++ *.cc *.cpp *.cxx *.mm *.qml *.qdoc" +headers.fileextensions = "*.ch *.h *.h++ *.hh *.hpp *.hxx" + +examples.fileextensions = "*.cpp *.h *.js *.xq *.svg *.xml *.ui *.qhp *.qhcp *.qml *.css" +examples.imageextensions = "*.png" + +outputdir = ../../../doc/qtopengl +tagfile = ../../../doc/qtopengl/qtopengl.tags + +HTML.generatemacrefs = "true" +HTML.nobreadcrumbs = "true" + +HTML.templatedir = . + +HTML.stylesheets = ../../../doc/global/style/offline.css + +HTML.headerstyles = \ + " \n" + +HTML.endheader = \ + "\n" \ + +defines = Q_QDOC \ + QT_.*_SUPPORT \ + QT_.*_LIB \ + QT_COMPAT \ + QT_KEYPAD_NAVIGATION \ + QT_NO_EGL \ + Q_WS_.* \ + Q_OS_.* \ + Q_BYTE_ORDER \ + QT_DEPRECATED \ + QT_DEPRECATED_* \ + Q_NO_USING_KEYWORD \ + __cplusplus \ + Q_COMPILER_INITIALIZER_LISTS + +versionsym = QT_VERSION_STR + +codeindent = 1 + +depends += qtcore qtgui qtwidgets + +headerdirs += .. + +sourcedirs += .. + +exampledirs += ../../../examples \ + ../ \ + snippets + +imagedirs += images diff --git a/src/opengl/doc/snippets/code/doc_src_qtopengl.cpp b/src/opengl/doc/snippets/code/doc_src_qtopengl.cpp new file mode 100644 index 0000000000..d14a1ede1a --- /dev/null +++ b/src/opengl/doc/snippets/code/doc_src_qtopengl.cpp @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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 Nokia Corporation and its Subsidiary(-ies) 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] +#include +//! [0] diff --git a/src/opengl/doc/snippets/code/doc_src_qtopengl.pro b/src/opengl/doc/snippets/code/doc_src_qtopengl.pro new file mode 100644 index 0000000000..8c12b35abd --- /dev/null +++ b/src/opengl/doc/snippets/code/doc_src_qtopengl.pro @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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 Nokia Corporation and its Subsidiary(-ies) 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$ +** +****************************************************************************/ + +#! [1] +QT += opengl +#! [1] diff --git a/src/opengl/doc/snippets/code/src_opengl_qgl.cpp b/src/opengl/doc/snippets/code/src_opengl_qgl.cpp new file mode 100644 index 0000000000..4adc126159 --- /dev/null +++ b/src/opengl/doc/snippets/code/src_opengl_qgl.cpp @@ -0,0 +1,172 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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 Nokia Corporation and its Subsidiary(-ies) 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] +QGLFormat fmt; +fmt.setAlpha(true); +fmt.setStereo(true); +QGLFormat::setDefaultFormat(fmt); +//! [0] + + +//! [1] +QGLFormat fmt; +fmt.setDoubleBuffer(false); // single buffer +fmt.setDirectRendering(false); // software rendering +MyGLWidget* myWidget = new MyGLWidget(fmt, ...); +//! [1] + + +//! [2] +QGLFormat fmt; +fmt.setOverlay(true); +fmt.setStereo(true); +MyGLWidget* myWidget = new MyGLWidget(fmt, ...); +if (!myWidget->format().stereo()) { + // ok, goggles off + if (!myWidget->format().hasOverlay()) { + qFatal("Cool hardware required"); + } +} +//! [2] + + +//! [3] +// The rendering in MyGLWidget depends on using +// stencil buffer and alpha channel +MyGLWidget::MyGLWidget(QWidget* parent) + : QGLWidget(QGLFormat(QGL::StencilBuffer | QGL::AlphaChannel), parent) +{ + if (!format().stencil()) + qWarning("Could not get stencil buffer; results will be suboptimal"); + if (!format().alpha()) + qWarning("Could not get alpha channel; results will be suboptimal"); + ... +} +//! [3] + + +//! [4] +QApplication a(argc, argv); +QGLFormat f; +f.setDoubleBuffer(false); +QGLFormat::setDefaultFormat(f); +//! [4] + + +//! [5] +QGLFormat f = QGLFormat::defaultOverlayFormat(); +f.setDoubleBuffer(true); +QGLFormat::setDefaultOverlayFormat(f); +//! [5] + + +//! [6] +// ...continued from above +MyGLWidget* myWidget = new MyGLWidget(QGLFormat(QGL::HasOverlay), ...); +if (myWidget->format().hasOverlay()) { + // Yes, we got an overlay, let's check _its_ format: + QGLContext* olContext = myWidget->overlayContext(); + if (olContext->format().doubleBuffer()) + ; // yes, we got a double buffered overlay + else + ; // no, only single buffered overlays are available +} +//! [6] + + +//! [7] +QGLContext *cx; +// ... +QGLFormat f; +f.setStereo(true); +cx->setFormat(f); +if (!cx->create()) + exit(); // no OpenGL support, or cannot render on the specified paintdevice +if (!cx->format().stereo()) + exit(); // could not create stereo context +//! [7] + + +//! [8] +class MyGLDrawer : public QGLWidget +{ + Q_OBJECT // must include this if you use Qt signals/slots + +public: + MyGLDrawer(QWidget *parent) + : QGLWidget(parent) {} + +protected: + + void initializeGL() + { + // Set up the rendering context, define display lists etc.: + ... + glClearColor(0.0, 0.0, 0.0, 0.0); + glEnable(GL_DEPTH_TEST); + ... + } + + void resizeGL(int w, int h) + { + // setup viewport, projection etc.: + glViewport(0, 0, (GLint)w, (GLint)h); + ... + glFrustum(...); + ... + } + + void paintGL() + { + // draw the scene: + ... + glRotatef(...); + glMaterialfv(...); + glBegin(GL_QUADS); + glVertex3f(...); + glVertex3f(...); + ... + glEnd(); + ... + } + +}; +//! [8] diff --git a/src/opengl/doc/snippets/code/src_opengl_qglcolormap.cpp b/src/opengl/doc/snippets/code/src_opengl_qglcolormap.cpp new file mode 100644 index 0000000000..04384c1af8 --- /dev/null +++ b/src/opengl/doc/snippets/code/src_opengl_qglcolormap.cpp @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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 Nokia Corporation and its Subsidiary(-ies) 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] +#include +#include + +int main() +{ + QApplication app(argc, argv); + + MySuperGLWidget widget; // a QGLWidget in color-index mode + QGLColormap colormap; + + // This will fill the colormap with colors ranging from + // black to white. + for (int i = 0; i < colormap.size(); i++) + colormap.setEntry(i, qRgb(i, i, i)); + + widget.setColormap(colormap); + widget.show(); + return app.exec(); +} +//! [0] diff --git a/src/opengl/doc/snippets/code/src_opengl_qglpixelbuffer.cpp b/src/opengl/doc/snippets/code/src_opengl_qglpixelbuffer.cpp new file mode 100644 index 0000000000..e44ac23d1a --- /dev/null +++ b/src/opengl/doc/snippets/code/src_opengl_qglpixelbuffer.cpp @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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 Nokia Corporation and its Subsidiary(-ies) 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] +QGLPixelBuffer pbuffer(...); +... +pbuffer.makeCurrent(); +GLuint dynamicTexture = pbuffer.generateDynamicTexture(); +pbuffer.bindToDynamicTexture(dynamicTexture); +... +pbuffer.releaseFromDynamicTexture(); +//! [0] + + +//! [1] +QGLPixelBuffer pbuffer(...); +... +pbuffer.makeCurrent(); +GLuint dynamicTexture = pbuffer.generateDynamicTexture(); +... +pbuffer.updateDynamicTexture(dynamicTexture); +//! [1] diff --git a/src/opengl/doc/snippets/code/src_opengl_qglshaderprogram.cpp b/src/opengl/doc/snippets/code/src_opengl_qglshaderprogram.cpp new file mode 100644 index 0000000000..d0474c1899 --- /dev/null +++ b/src/opengl/doc/snippets/code/src_opengl_qglshaderprogram.cpp @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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 Nokia Corporation and its Subsidiary(-ies) 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] +QGLShader shader(QGLShader::Vertex); +shader.compileSourceCode(code); + +QGLShaderProgram program(context); +program.addShader(shader); +program.link(); + +program.bind(); +//! [0] + +//! [1] +program.addShaderFromSourceCode(QGLShader::Vertex, + "attribute highp vec4 vertex;\n" + "uniform highp mat4 matrix;\n" + "void main(void)\n" + "{\n" + " gl_Position = matrix * vertex;\n" + "}"); +program.addShaderFromSourceCode(QGLShader::Fragment, + "uniform mediump vec4 color;\n" + "void main(void)\n" + "{\n" + " gl_FragColor = color;\n" + "}"); +program.link(); +program.bind(); + +int vertexLocation = program.attributeLocation("vertex"); +int matrixLocation = program.uniformLocation("matrix"); +int colorLocation = program.uniformLocation("color"); +//! [1] + +//! [2] +static GLfloat const triangleVertices[] = { + 60.0f, 10.0f, 0.0f, + 110.0f, 110.0f, 0.0f, + 10.0f, 110.0f, 0.0f +}; + +QColor color(0, 255, 0, 255); + +QMatrix4x4 pmvMatrix; +pmvMatrix.ortho(rect()); + +program.enableAttributeArray(vertexLocation); +program.setAttributeArray(vertexLocation, triangleVertices, 3); +program.setUniformValue(matrixLocation, pmvMatrix); +program.setUniformValue(colorLocation, color); + +glDrawArrays(GL_TRIANGLES, 0, 3); + +program.disableAttributeArray(vertexLocation); +//! [2] diff --git a/src/opengl/doc/src/qtopengl.qdoc b/src/opengl/doc/src/qtopengl.qdoc new file mode 100644 index 0000000000..0fa28eed8c --- /dev/null +++ b/src/opengl/doc/src/qtopengl.qdoc @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** GNU Free Documentation License +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms +** and conditions contained in a signed written agreement between you +** and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \module QtOpenGL + \title QtOpenGL Module + \ingroup modules + \ingroup technology-apis + + \brief The QtOpenGL module offers classes that make it easy to + use OpenGL in Qt applications. + + OpenGL is a standard API for rendering 3D graphics. OpenGL only + deals with 3D rendering and provides little or no support for GUI + programming issues. The user interface for an OpenGL application + must be created with another toolkit, such as Motif on the X + platform, Microsoft Foundation Classes (MFC) under Windows, or Qt + on both platforms. + + \note OpenGL is a trademark of Silicon Graphics, Inc. in + the United States and other countries. + + The Qt OpenGL module makes it easy to use OpenGL in Qt applications. + It provides an OpenGL widget class that can be used just like any + other Qt widget, except that it opens an OpenGL display buffer where + you can use the OpenGL API to render the contents. + + To include the definitions of the module's classes, use the + following directive: + + \snippet code/doc_src_qtopengl.cpp 0 + + To link against the module, add this line to your \l qmake \c + .pro file: + + \snippet code/doc_src_qtopengl.pro 1 + + The Qt OpenGL module is implemented as a platform-independent Qt/C++ + wrapper around the platform-dependent GLX (version 1.3 or later), + WGL, or AGL C APIs. Although the basic functionality provided is very + similar to Mark Kilgard's GLUT library, applications using the Qt + OpenGL module can take advantage of the whole Qt API for + non-OpenGL-specific GUI functionality. +*/ + + -- cgit v1.2.3 From ee38dec6f3aff6f7f277323c5c8488d4cd385693 Mon Sep 17 00:00:00 2001 From: Marius Storm-Olsen Date: Thu, 10 May 2012 08:53:06 +0200 Subject: Don't add C-style copyright headers to qmake project files Leads to parse errors, and we don't really put copyrights into these files anyways. Change-Id: I4b423b3f4f5c4f1f5051d8e3613133c4f1df342a Reviewed-by: Casper van Donderen --- src/opengl/doc/snippets/code/doc_src_qtopengl.pro | 40 ----------------------- 1 file changed, 40 deletions(-) (limited to 'src/opengl/doc') diff --git a/src/opengl/doc/snippets/code/doc_src_qtopengl.pro b/src/opengl/doc/snippets/code/doc_src_qtopengl.pro index 8c12b35abd..72adc2140b 100644 --- a/src/opengl/doc/snippets/code/doc_src_qtopengl.pro +++ b/src/opengl/doc/snippets/code/doc_src_qtopengl.pro @@ -1,43 +1,3 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** 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 Nokia Corporation and its Subsidiary(-ies) 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$ -** -****************************************************************************/ - #! [1] QT += opengl #! [1] -- cgit v1.2.3