File: qglcontext.html

package info (click to toggle)
python-qt4 4.0.1-5
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 18,632 kB
  • ctags: 2,639
  • sloc: python: 29,409; sh: 5,646; cpp: 3,168; xml: 149; makefile: 109
file content (97 lines) | stat: -rw-r--r-- 21,301 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html><head><title>QGLContext Class Reference</title><style>h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
td.postheader { font-family: sans-serif }
tr.address { font-family: sans-serif }
body { background: #ffffff; color: black; }
</style></head><body><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr /><td align="left" valign="top" width="32"><img align="left" border="0" height="32" src="images/rb-logo.png" width="32" /></td><td width="1">&#160;&#160;</td><td class="postheader" valign="center"><a href="../pyqt4ref.html"><font color="#004faf">Home</font></a>&#160;&#183; <a href="classes.html"><font color="#004faf">All Classes</font></a>&#160;&#183; <a href="modules.html"><font color="#004faf">Modules</font></a></td></table><h1 align="center">QGLContext Class Reference<br /><sup><sup>[<a href="qtopengl.html">QtOpenGL</a> module]</sup></sup></h1><p>The QGLContext class encapsulates an OpenGL rendering context. <a href="#details">More...</a></p>
<h3>Methods</h3><ul><li><div class="fn" /><b><a href="qglcontext.html#QGLContext">__init__</a></b> (<i>self</i>, QGLFormat&#160;<i>format</i>, QPaintDevice&#160;<i>device</i>)</li><li><div class="fn" />unsigned long <b><a href="qglcontext.html#bindTexture">bindTexture</a></b> (<i>self</i>, QImage&#160;<i>image</i>, unsigned long&#160;<i>target</i>&#160;=&#160;GL_TEXTURE_2D, int&#160;<i>format</i>&#160;=&#160;GL_RGBA8)</li><li><div class="fn" />unsigned long <b><a href="qglcontext.html#bindTexture-2">bindTexture</a></b> (<i>self</i>, QPixmap&#160;<i>pixmap</i>, unsigned long&#160;<i>target</i>&#160;=&#160;GL_TEXTURE_2D, int&#160;<i>format</i>&#160;=&#160;GL_RGBA8)</li><li><div class="fn" />unsigned long <b><a href="qglcontext.html#bindTexture-3">bindTexture</a></b> (<i>self</i>, QString&#160;<i>fileName</i>)</li><li><div class="fn" />bool <b><a href="qglcontext.html#chooseContext">chooseContext</a></b> (<i>self</i>, QGLContext&#160;<i>shareContext</i>&#160;=&#160;None)</li><li><div class="fn" />sip.voidptr <b><a href="qglcontext.html#chooseVisual">chooseVisual</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qglcontext.html#create">create</a></b> (<i>self</i>, QGLContext&#160;<i>shareContext</i>&#160;=&#160;None)</li><li><div class="fn" /><b><a href="qglcontext.html#deleteTexture">deleteTexture</a></b> (<i>self</i>, unsigned long&#160;<i>tx_id</i>)</li><li><div class="fn" />QPaintDevice <b><a href="qglcontext.html#device">device</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qglcontext.html#deviceIsPixmap">deviceIsPixmap</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qglcontext.html#doneCurrent">doneCurrent</a></b> (<i>self</i>)</li><li><div class="fn" />QGLFormat <b><a href="qglcontext.html#format">format</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qglcontext.html#generateFontDisplayLists">generateFontDisplayLists</a></b> (<i>self</i>, QFont&#160;<i>fnt</i>, int&#160;<i>listBase</i>)</li><li><div class="fn" />sip.voidptr <b><a href="qglcontext.html#getProcAddress">getProcAddress</a></b> (<i>self</i>, QString&#160;<i>proc</i>)</li><li><div class="fn" />bool <b><a href="qglcontext.html#initialized">initialized</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qglcontext.html#isSharing">isSharing</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qglcontext.html#isValid">isValid</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qglcontext.html#makeCurrent">makeCurrent</a></b> (<i>self</i>)</li><li><div class="fn" />QColor <b><a href="qglcontext.html#overlayTransparentColor">overlayTransparentColor</a></b> (<i>self</i>)</li><li><div class="fn" />QGLFormat <b><a href="qglcontext.html#requestedFormat">requestedFormat</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qglcontext.html#reset">reset</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qglcontext.html#setFormat">setFormat</a></b> (<i>self</i>, QGLFormat&#160;<i>format</i>)</li><li><div class="fn" /><b><a href="qglcontext.html#setInitialized">setInitialized</a></b> (<i>self</i>, bool&#160;<i>on</i>)</li><li><div class="fn" /><b><a href="qglcontext.html#setWindowCreated">setWindowCreated</a></b> (<i>self</i>, bool&#160;<i>on</i>)</li><li><div class="fn" /><b><a href="qglcontext.html#swapBuffers">swapBuffers</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qglcontext.html#windowCreated">windowCreated</a></b> (<i>self</i>)</li></ul><h3>Static Methods</h3><ul><li><div class="fn" />QGLContext <b><a href="qglcontext.html#currentContext">currentContext</a></b> ()</li><li><div class="fn" /><b><a href="qglcontext.html#setTextureCacheLimit">setTextureCacheLimit</a></b> (int&#160;<i>size</i>)</li><li><div class="fn" />int <b><a href="qglcontext.html#textureCacheLimit">textureCacheLimit</a></b> ()</li></ul><a name="details" /><hr /><h2>Detailed Description</h2><p>The QGLContext class encapsulates an OpenGL rendering context.</p>
<p>An OpenGL</p>
rendering context is a complete set of OpenGL state variables.
<p>The context's <a href="qgl.html#FormatOption-enum">format</a> is set in the constructor or later with <a href="qglcontext.html#setFormat">setFormat</a>(). The format options that are actually set are returned by <a href="qglcontext.html#format">format</a>(); the options you asked for are returned by <a href="qglcontext.html#requestedFormat">requestedFormat</a>(). Note that after a QGLContext object has been constructed, the actual OpenGL context must be created by explicitly calling the <a href="qglcontext.html#create">create()</a> function. The <a href="qglcontext.html#makeCurrent">makeCurrent</a>() function makes this context the current rendering context. You can make <i>no</i> context current using <a href="qglcontext.html#doneCurrent">doneCurrent</a>(). The <a href="qglcontext.html#reset">reset</a>() function will reset the context and make it invalid.</p>
<p>You can examine properties of the context with, e.g. <a href="qglcontext.html#isValid">isValid</a>(), <a href="qglcontext.html#isSharing">isSharing</a>(), <a href="qglcontext.html#initialized">initialized</a>(), <a href="qglcontext.html#windowCreated">windowCreated</a>() and <a href="qglcontext.html#overlayTransparentColor">overlayTransparentColor</a>().</p>
<p>If you're using double buffering you can swap the screen contents with the off-screen buffer using <a href="qglcontext.html#swapBuffers">swapBuffers</a>().</p>
<p>Please note that QGLContext is not thread safe.</p>
<hr /><h2>Method Documentation</h2><h3 class="fn"><a name="QGLContext" />QGLContext.__init__ (<i>self</i>, <a href="qglformat.html">QGLFormat</a>&#160;<i>format</i>, <a href="qpaintdevice.html">QPaintDevice</a>&#160;<i>device</i>)</h3><p>Constructs an OpenGL context for the paint device <i>device</i>, which can be a widget or a pixmap. The <i>format</i> specifies several display options for the context.</p>
<p>If the underlying OpenGL/Window system cannot satisfy all the features requested in <i>format</i>, the nearest subset of features will be used. After creation, the <a href="qglcontext.html#format">format</a>() method will return the actual format obtained.</p>
<p>Note that after a <a href="qglcontext.html">QGLContext</a> object has been constructed, <a href="qglcontext.html#create">create()</a> must be called explicitly to create the actual OpenGL context. The context will be <a href="qglcontext.html#isValid">invalid</a> if it was not possible to obtain a GL context at all.</p>
<p>See also <a href="qglcontext.html#format">format</a>() and <a href="qglcontext.html#isValid">isValid</a>().</p>
<h3 class="fn"><a name="bindTexture" />unsigned long QGLContext.bindTexture (<i>self</i>, <a href="qimage.html">QImage</a>&#160;<i>image</i>, unsigned long&#160;<i>target</i>&#160;=&#160;GL_TEXTURE_2D, int&#160;<i>format</i>&#160;=&#160;GL_RGBA8)</h3><p>Generates and binds a 2D GL texture to the current context, based on <i>image</i>. The generated texture id is returned and can be used in later <tt>glBindTexture()</tt> calls.</p>
<p>The <i>target</i> parameter specifies the texture target. The default target is <tt>GL_TEXTURE_2D</tt>.</p>
<p>The <i>format</i> parameter sets the internal format for the texture. The default format is <tt>GL_RGBA8</tt>.</p>
<p>If the GL implementation supports the <tt>GL_SGIS_generate_mipmap</tt> extension, mipmaps will be automatically generated for the texture. Mipmap generation is only supported for the <tt>GL_TEXTURE_2D</tt> target.</p>
<p>The texture that is generated is cached, so multiple calls to bindTexture() with the same <a href="qimage.html">QImage</a> will return the same texture id.</p>
<p>See also <a href="qglcontext.html#deleteTexture">deleteTexture</a>().</p>
<h3 class="fn"><a name="bindTexture-2" />unsigned long QGLContext.bindTexture (<i>self</i>, <a href="qpixmap.html">QPixmap</a>&#160;<i>pixmap</i>, unsigned long&#160;<i>target</i>&#160;=&#160;GL_TEXTURE_2D, int&#160;<i>format</i>&#160;=&#160;GL_RGBA8)</h3><p>This is an overloaded member function, provided for convenience.</p>
<p>Reads the DirectDrawSurface (DDS) compressed file <i>fileName</i> and generates a 2D GL texture from it.</p>
<p>Only the DXT1, DXT3 and DXT5 DDS formats are supported.</p>
<p>Note that this will only work if the implementation supports the <tt>GL_ARB_texture_compression</tt> and <tt>GL_EXT_texture_compression_s3tc</tt> extensions.</p>
<p>See also <a href="qglcontext.html#deleteTexture">deleteTexture</a>().</p>
<h3 class="fn"><a name="bindTexture-3" />unsigned long QGLContext.bindTexture (<i>self</i>, <a href="qstring.html">QString</a>&#160;<i>fileName</i>)</h3><p>This is an overloaded member function, provided for convenience.</p>
<p>Generates and binds a 2D GL texture based on <i>pixmap</i>.</p>
<h3 class="fn"><a name="chooseContext" />bool QGLContext.chooseContext (<i>self</i>, <a href="qglcontext.html">QGLContext</a>&#160;<i>shareContext</i>&#160;=&#160;None)</h3><p>This semi-internal function is called by <a href="qglcontext.html#create">create</a>(). It creates a system-dependent OpenGL handle that matches the <a href="qglcontext.html#format">format</a>() of <i>shareContext</i> as closely as possible.</p>
<p>On Windows, it calls the virtual function <a href="qglcontext.html#choosePixelFormat">choosePixelFormat</a>(), which finds a matching pixel format identifier. On X11, it calls the virtual function <a href="qglcontext.html#chooseVisual">chooseVisual</a>() which finds an appropriate X visual. On other platforms it may work differently.</p>
<h3 class="fn"><a name="chooseVisual" />sip.voidptr QGLContext.chooseVisual (<i>self</i>)</h3><p>&lt;strong&gt;X11 only&lt;/strong&gt;: This virtual function tries to find a visual that matches the format, reducing the demands if the original request cannot be met.</p>
<p>The algorithm for reducing the demands of the format is quite simple-minded, so override this method in your subclass if your application has spcific requirements on visual selection.</p>
<p>See also <a href="qglcontext.html#chooseContext">chooseContext</a>().</p>
<h3 class="fn"><a name="create" />bool QGLContext.create (<i>self</i>, <a href="qglcontext.html">QGLContext</a>&#160;<i>shareContext</i>&#160;=&#160;None)</h3><p>Creates the GL context. Returns true if it was successful in creating a valid GL rendering context on the paint device specified in the constructor; otherwise returns false (i.e. the context is invalid).</p>
<p>After successful creation, <a href="qglcontext.html#format">format</a>() returns the set of features of the created GL rendering context.</p>
<p>If <i>shareContext</i> points to a valid <a href="qglcontext.html">QGLContext</a>, this method will try to establish OpenGL display list sharing between this context and the <i>shareContext</i>. Note that this may fail if the two contexts have different formats. Use <a href="qglcontext.html#isSharing">isSharing</a>() to see if sharing succeeded.</p>
<p><b>Warning:</b> Implementation note: initialization of C++ class members usually takes place in the class constructor. <a href="qglcontext.html">QGLContext</a> is an exception because it must be simple to customize. The virtual functions <a href="qglcontext.html#chooseContext">chooseContext</a>() (and <a href="qglcontext.html#chooseVisual">chooseVisual</a>() for X11) can be reimplemented in a subclass to select a particular context. The problem is that virtual functions are not properly called during construction (even though this is correct C++) because C++ constructs class hierarchies from the bottom up. For this reason we need a create() function.</p>
<p>See also <a href="qglcontext.html#chooseContext">chooseContext</a>(), <a href="qglcontext.html#format">format</a>(), and <a href="qglcontext.html#isValid">isValid</a>().</p>
<h3 class="fn"><a name="currentContext" /><a href="qglcontext.html">QGLContext</a> QGLContext.currentContext ()</h3><p>Returns the current context, i.e. the context to which any OpenGL commands will currently be directed. Returns 0 if no context is current.</p>
<p>See also <a href="qglcontext.html#makeCurrent">makeCurrent</a>().</p>
<h3 class="fn"><a name="deleteTexture" />QGLContext.deleteTexture (<i>self</i>, unsigned long&#160;<i>tx_id</i>)</h3><p>Removes the texture identified by <i>id</i> from the texture cache. If the context is not shared by any other <a href="qglcontext.html">QGLContext</a>, glDeleteTextures() will be called to delete the texture from the context.</p>
<p>See also <a href="qglcontext.html#bindTexture">bindTexture</a>().</p>
<h3 class="fn"><a name="device" /><a href="qpaintdevice.html">QPaintDevice</a> QGLContext.device (<i>self</i>)</h3><p>Returns the paint device set for this context.</p>
<p>See also <a href="qglcontext.html#QGLContext">QGLContext.QGLContext</a>().</p>
<h3 class="fn"><a name="deviceIsPixmap" />bool QGLContext.deviceIsPixmap (<i>self</i>)</h3><p>Returns true if the paint device of this context is a pixmap; otherwise returns false.</p>
<h3 class="fn"><a name="doneCurrent" />QGLContext.doneCurrent (<i>self</i>)</h3><p>Makes no GL context the current context. Normally, you do not need to call this function; <a href="qglcontext.html">QGLContext</a> calls it as necessary.</p>
<h3 class="fn"><a name="format" /><a href="qglformat.html">QGLFormat</a> QGLContext.format (<i>self</i>)</h3><p>Returns the frame buffer format that was obtained (this may be a subset of what was requested).</p>
<p>See also <a href="qglcontext.html#setFormat">setFormat</a>() and <a href="qglcontext.html#requestedFormat">requestedFormat</a>().</p>
<h3 class="fn"><a name="generateFontDisplayLists" />QGLContext.generateFontDisplayLists (<i>self</i>, <a href="qfont.html">QFont</a>&#160;<i>fnt</i>, int&#160;<i>listBase</i>)</h3><p>Generates a set of 256 display lists for the 256 first characters in the font <i>font</i>. The first list will start at index <i>listBase</i>.</p>
<p>See also <a href="qglwidget.html#renderText">QGLWidget.renderText</a>().</p>
<h3 class="fn"><a name="getProcAddress" />sip.voidptr QGLContext.getProcAddress (<i>self</i>, <a href="qstring.html">QString</a>&#160;<i>proc</i>)</h3><p>Returns a function pointer to the GL extension function passed in <i>proc</i>. 0 is returned if a pointer to the function could not be obtained.</p>
<h3 class="fn"><a name="initialized" />bool QGLContext.initialized (<i>self</i>)</h3><p>Returns true if this context has been initialized, i.e. if <a href="qglwidget.html#initializeGL">QGLWidget.initializeGL</a>() has been performed on it; otherwise returns false.</p>
<p>See also <a href="qglcontext.html#setInitialized">setInitialized</a>().</p>
<h3 class="fn"><a name="isSharing" />bool QGLContext.isSharing (<i>self</i>)</h3><p>Returns true if this context is sharing its GL context with another <a href="qglcontext.html">QGLContext</a>, otherwise false is returned. Note that context sharing might not be supported between contexts with different formats.</p>
<h3 class="fn"><a name="isValid" />bool QGLContext.isValid (<i>self</i>)</h3><p>Returns true if a GL rendering context has been successfully created; otherwise returns false.</p>
<h3 class="fn"><a name="makeCurrent" />QGLContext.makeCurrent (<i>self</i>)</h3><p>Makes this context the current OpenGL rendering context. All GL functions you call operate on this context until another context is made current.</p>
<p>In some very rare cases the underlying call may fail. If this occurs an error message is output to stderr.</p>
<h3 class="fn"><a name="overlayTransparentColor" /><a href="qcolor.html">QColor</a> QGLContext.overlayTransparentColor (<i>self</i>)</h3><p>If this context is a valid context in an overlay plane, returns the plane's transparent color. Otherwise returns an <a href="qcolor.html#isValid">invalid</a> color.</p>
<p>The returned color's <a href="qcolor-qt3.html#pixel">pixel</a> value is the index of the transparent color in the colormap of the overlay plane. (Naturally, the color's RGB values are meaningless.)</p>
<p>The returned <a href="qcolor.html">QColor</a> object will generally work as expected only when passed as the argument to <a href="qglwidget.html#qglColor">QGLWidget.qglColor</a>() or <a href="qglwidget.html#qglClearColor">QGLWidget.qglClearColor</a>(). Under certain circumstances it can also be used to draw transparent graphics with a <a href="qpainter.html">QPainter</a>. See the examples/opengl/overlay_x11 example for details.</p>
<h3 class="fn"><a name="requestedFormat" /><a href="qglformat.html">QGLFormat</a> QGLContext.requestedFormat (<i>self</i>)</h3><p>Returns the frame buffer format that was originally requested in the constructor or <a href="qglcontext.html#setFormat">setFormat</a>().</p>
<p>See also <a href="qglcontext.html#format">format</a>().</p>
<h3 class="fn"><a name="reset" />QGLContext.reset (<i>self</i>)</h3><p>Resets the context and makes it invalid.</p>
<p>See also <a href="qglcontext.html#create">create</a>() and <a href="qglcontext.html#isValid">isValid</a>().</p>
<h3 class="fn"><a name="setFormat" />QGLContext.setFormat (<i>self</i>, <a href="qglformat.html">QGLFormat</a>&#160;<i>format</i>)</h3><p>Sets a <i>format</i> for this context. The context is <a href="qglcontext.html#reset">reset</a>.</p>
<p>Call <a href="qglcontext.html#create">create</a>() to create a new GL context that tries to match the new format.</p>
<pre>
    QGLContext *cx;
    //  ...
    QGLFormat f;
    f.setStereo(true);
    cx-&gt;setFormat(f);
    if (!cx-&gt;create())
        exit(); // no OpenGL support, or cannot render on the specified paintdevice
    if (!cx-&gt;format().stereo())
        exit(); // could not create stereo context
</pre>
<p>See also <a href="qglcontext.html#format">format</a>(), <a href="qglcontext.html#reset">reset</a>(), and <a href="qglcontext.html#create">create</a>().</p>
<h3 class="fn"><a name="setInitialized" />QGLContext.setInitialized (<i>self</i>, bool&#160;<i>on</i>)</h3><p>If <i>on</i> is true the context has been initialized, i.e. QGLContext.setInitialized() has been called on it. If <i>on</i> is false the context has not been initialized.</p>
<p>See also <a href="qglcontext.html#initialized">initialized</a>().</p>
<h3 class="fn"><a name="setTextureCacheLimit" />QGLContext.setTextureCacheLimit (int&#160;<i>size</i>)</h3><p>This function sets the limit for the texture cache to <i>size</i>, expressed in kilobytes.</p>
<p>By default, the cache limit is approximately 64 MB.</p>
<p>See also <a href="qglcontext.html#textureCacheLimit">textureCacheLimit</a>().</p>
<h3 class="fn"><a name="setWindowCreated" />QGLContext.setWindowCreated (<i>self</i>, bool&#160;<i>on</i>)</h3><p>If <i>on</i> is true the context has had a window created for it. If <i>on</i> is false no window has been created for the context.</p>
<p>See also <a href="qglcontext.html#windowCreated">windowCreated</a>().</p>
<h3 class="fn"><a name="swapBuffers" />QGLContext.swapBuffers (<i>self</i>)</h3><p>Swaps the screen contents with an off-screen buffer. Only works if the context is in double buffer mode.</p>
<p>See also <a href="qglformat.html#setDoubleBuffer">QGLFormat.setDoubleBuffer</a>().</p>
<h3 class="fn"><a name="textureCacheLimit" />int QGLContext.textureCacheLimit ()</h3><p>Returns the current texture cache limit in kilobytes.</p>
<p>See also <a href="qglcontext.html#setTextureCacheLimit">setTextureCacheLimit</a>().</p>
<h3 class="fn"><a name="windowCreated" />bool QGLContext.windowCreated (<i>self</i>)</h3><p>Returns true if a window has been created for this context; otherwise returns false.</p>
<p>See also <a href="qglcontext.html#setWindowCreated">setWindowCreated</a>().</p>
<address><hr /><div align="center"><table border="0" cellspacing="0" width="100%"><tr class="address"><td width="25%">PyQt&#160;4.0.1 for X11</td><td align="center" width="50%">Copyright &#169; <a href="http://www.riverbankcomputing.com">Riverbank&#160;Computing&#160;Ltd</a> and <a href="http://www.trolltech.com">Trolltech&#160;AS</a> 2006</td><td align="right" width="25%">Qt&#160;4.1.4</td></tr></table></div></address></body></html>