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">  </td><td class="postheader" valign="center"><a href="../pyqt4ref.html"><font color="#004faf">Home</font></a> · <a href="classes.html"><font color="#004faf">All Classes</font></a> · <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 <i>format</i>, QPaintDevice <i>device</i>)</li><li><div class="fn" />unsigned long <b><a href="qglcontext.html#bindTexture">bindTexture</a></b> (<i>self</i>, QImage <i>image</i>, unsigned long <i>target</i> = GL_TEXTURE_2D, int <i>format</i> = GL_RGBA8)</li><li><div class="fn" />unsigned long <b><a href="qglcontext.html#bindTexture-2">bindTexture</a></b> (<i>self</i>, QPixmap <i>pixmap</i>, unsigned long <i>target</i> = GL_TEXTURE_2D, int <i>format</i> = GL_RGBA8)</li><li><div class="fn" />unsigned long <b><a href="qglcontext.html#bindTexture-3">bindTexture</a></b> (<i>self</i>, QString <i>fileName</i>)</li><li><div class="fn" />bool <b><a href="qglcontext.html#chooseContext">chooseContext</a></b> (<i>self</i>, QGLContext <i>shareContext</i> = 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 <i>shareContext</i> = None)</li><li><div class="fn" /><b><a href="qglcontext.html#deleteTexture">deleteTexture</a></b> (<i>self</i>, unsigned long <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 <i>fnt</i>, int <i>listBase</i>)</li><li><div class="fn" />sip.voidptr <b><a href="qglcontext.html#getProcAddress">getProcAddress</a></b> (<i>self</i>, QString <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 <i>format</i>)</li><li><div class="fn" /><b><a href="qglcontext.html#setInitialized">setInitialized</a></b> (<i>self</i>, bool <i>on</i>)</li><li><div class="fn" /><b><a href="qglcontext.html#setWindowCreated">setWindowCreated</a></b> (<i>self</i>, bool <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 <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> <i>format</i>, <a href="qpaintdevice.html">QPaintDevice</a> <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> <i>image</i>, unsigned long <i>target</i> = GL_TEXTURE_2D, int <i>format</i> = 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> <i>pixmap</i>, unsigned long <i>target</i> = GL_TEXTURE_2D, int <i>format</i> = 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> <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> <i>shareContext</i> = 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><strong>X11 only</strong>: 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> <i>shareContext</i> = 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 <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> <i>fnt</i>, int <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> <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> <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->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
</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 <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 <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 <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 4.0.1 for X11</td><td align="center" width="50%">Copyright © <a href="http://www.riverbankcomputing.com">Riverbank Computing Ltd</a> and <a href="http://www.trolltech.com">Trolltech AS</a> 2006</td><td align="right" width="25%">Qt 4.1.4</td></tr></table></div></address></body></html>
|