summaryrefslogtreecommitdiffstats
path: root/doc/src/examples/hellogl_es.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/examples/hellogl_es.qdoc')
-rw-r--r--doc/src/examples/hellogl_es.qdoc128
1 files changed, 0 insertions, 128 deletions
diff --git a/doc/src/examples/hellogl_es.qdoc b/doc/src/examples/hellogl_es.qdoc
deleted file mode 100644
index 212e760542..0000000000
--- a/doc/src/examples/hellogl_es.qdoc
+++ /dev/null
@@ -1,128 +0,0 @@
-/****************************************************************************
-**
-** 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$
-**
-****************************************************************************/
-
-/*!
- \example opengl/hellogl_es
- \title Hello GL ES Example
-
- The Hello GL ES example is the \l{Hello GL Example} ported to OpenGL ES.
- It also included some effects from the OpenGL \l{Overpainting Example}.
-
- \image hellogl-es-example.png
-
- A complete introduction to OpenGL ES and a description of all differences
- between OpenGL and OpenGL ES is out of the scope of this document; but
- we will describe some of the major issues and differences.
-
- Since Hello GL ES is a direct port of standard OpenGL code, it is a fairly
- good example for porting OpenGL code to OpenGL ES.
-
- \tableofcontents
-
- \section1 Using QGLWidget
-
- QGLWidget can be used for OpenGL ES similar to the way it is used with
- standard OpenGL; but there are some differences. We use EGL 1.0 to embedd
- the OpenGL ES window within the native window manager. In
- QGLWidget::initializeGL() we initialize OpenGL ES.
-
- \section1 Porting OpenGL to OpenGL ES
-
- Since OpenGL ES is missing the immediate mode and does not support quads,
- we have to create triangle arrays.
-
- We create a quad by adding vertices to a QList of vertices. We create both
- sides of the quad and hardcode a distance of 0.05f. We also compute the
- correct normal for each face and store them in another QList.
-
- \snippet examples/opengl/hellogl_es/glwidget.cpp 0
-
- And then we convert the complete list of vertexes and the list of normals
- into the native OpenGL ES format that we can use with the OpenGL ES API.
-
- \snippet examples/opengl/hellogl_es/glwidget.cpp 1
-
- In \c paintQtLogo() we draw the triangle array using OpenGL ES. We use
- q_vertexTypeEnum to abstract the fact that our vertex and normal arrays
- are either in float or in fixed point format.
-
- \snippet examples/opengl/hellogl_es/glwidget.cpp 2
-
- \section1 Using QGLPainter
-
- Since the \c QGLPainter is slower for OpenGL ES we paint the bubbles with
- the rasterizer and cache them in a QImage. This happends only once during
- the initialiazation.
-
- \snippet examples/opengl/hellogl_es/bubble.cpp 0
-
- For each bubble this QImage is then drawn to the QGLWidget by using the
- according QPainter with transparency enabled.
-
- \snippet examples/opengl/hellogl_es/bubble.cpp 1
-
- Another difference beetwen OpenGL and OpenGL ES is that OpenGL ES does not
- support glPushAttrib(GL_ALL_ATTRIB_BITS). So we have to restore all the
- OpenGL states ourselves, after we created the QPainter in
- GLWidget::paintGL().
-
- \snippet examples/opengl/hellogl_es/glwidget.cpp 3
-
- Setting up up the model view matrix and setting the right OpenGL states is
- done in the same way as for standard OpenGL.
-
- \snippet examples/opengl/hellogl_es/glwidget.cpp 4
-
- Now we have to restore the OpenGL state for the QPainter. This is not done
- automatically for OpenGL ES.
-
- \snippet examples/opengl/hellogl_es/glwidget.cpp 5
-
- Now we use the QPainter to draw the transparent bubbles.
-
- \snippet examples/opengl/hellogl_es/glwidget.cpp 6
-
- In the end, we calculate the framerate and display it using the QPainter
- again.
-
- \snippet examples/opengl/hellogl_es/glwidget.cpp 7
-
- After we finished all the drawing operations we swap the screen buffer.
-
- \snippet examples/opengl/hellogl_es/glwidget.cpp 8
-
- \section1 Summary
-
- Similar to the \l{Hello GL Example}, we subclass QGLWidget to render
- a 3D scene using OpenGL ES calls. QGLWidget is a subclass of QWidget.
- Hence, its \l{QGLWidget}'s subclasses can be placed in layouts and
- provided with interactive features just like normal custom widgets.
-
- QGLWidget allows pure OpenGL ES rendering to be mixed with QPainter calls,
- but care must be taken to maintain the state of the OpenGL ES
- implementation.
-*/