<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # QGLWidget Class Reference ## [[QtOpenGL](index.htm) module] 該的QGLWidget類是一個小部件的繪制OpenGL圖形。[More...](#details) 繼承[QWidget](qwidget.html)。 ### Methods * `__init__ (self, QWidget?parent?=?None, QGLWidget?shareWidget?=?None, Qt.WindowFlags?flags?=?0)` * `__init__ (self, QGLContext?context, QWidget?parent?=?None, QGLWidget?shareWidget?=?None, Qt.WindowFlags?flags?=?0)` * `__init__ (self, QGLFormat?format, QWidget?parent?=?None, QGLWidget?shareWidget?=?None, Qt.WindowFlags?flags?=?0)` * `bool autoBufferSwap (self)` * `int bindTexture (self, QImage?image, int?target?=?GL_TEXTURE_2D, int?format?=?GL_RGBA)` * `int bindTexture (self, QPixmap?pixmap, int?target?=?GL_TEXTURE_2D, int?format?=?GL_RGBA)` * `int bindTexture (self, QString?fileName)` * `int bindTexture (self, QImage?image, int?target, int?format, QGLContext.BindOptions?options)` * `int bindTexture (self, QPixmap?pixmap, int?target, int?format, QGLContext.BindOptions?options)` * `QGLColormap colormap (self)` * `QGLContext context (self)` * `deleteTexture (self, int?tx_id)` * `doneCurrent (self)` * `bool doubleBuffer (self)` * `drawTexture (self, QRectF?target, int?textureId, int?textureTarget?=?GL_TEXTURE_2D)` * `drawTexture (self, QPointF?point, int?textureId, int?textureTarget?=?GL_TEXTURE_2D)` * `bool event (self, QEvent)` * `int fontDisplayListBase (self, QFont?font, int?listBase?=?2000)` * `QGLFormat format (self)` * `glDraw (self)` * `glInit (self)` * `QImage grabFrameBuffer (self, bool?withAlpha?=?False)` * `initializeGL (self)` * `initializeOverlayGL (self)` * `bool isSharing (self)` * `bool isValid (self)` * `makeCurrent (self)` * `makeOverlayCurrent (self)` * `QGLContext overlayContext (self)` * `QPaintEngine paintEngine (self)` * `paintEvent (self, QPaintEvent)` * `paintGL (self)` * `paintOverlayGL (self)` * `qglClearColor (self, QColor?c)` * `qglColor (self, QColor?c)` * `QPixmap renderPixmap (self, int?width?=?0, int?height?=?0, bool?useContext?=?False)` * `renderText (self, int?x, int?y, QString?str, QFont?font?=?QFont(), int?listBase?=?2000)` * `renderText (self, float?x, float?y, float?z, QString?str, QFont?font?=?QFont(), int?listBase?=?2000)` * `resizeEvent (self, QResizeEvent)` * `resizeGL (self, int?w, int?h)` * `resizeOverlayGL (self, int?w, int?h)` * `setAutoBufferSwap (self, bool?on)` * `setColormap (self, QGLColormap?map)` * `setContext (self, QGLContext?context, QGLContext?shareContext?=?None, bool?deleteOldContext?=?True)` * `setFormat (self, QGLFormat?format)` * `setMouseTracking (self, bool?enable)` * `swapBuffers (self)` * `updateGL (self)` * `updateOverlayGL (self)` ### Static Methods * `QImage convertToGLFormat (QImage?img)` * * * ## Detailed Description 該的QGLWidget類是一個小部件的繪制OpenGL圖形。 的QGLWidget提供的功能顯示集成到Qt應用OpenGL圖形。它使用起來非常簡單。你從它繼承并使用子像任何其他[QWidget](qwidget.html),但你必須使用之間的選擇[QPainter](qpainter.html)和標準的OpenGL渲染命令。 QGLWidget的規定,你可以在你的子類重新實現來執行典型任務的OpenGL三種簡便的虛函數: * [paintGL](qglwidget.html#paintGL)() - Renders the OpenGL scene. Gets called whenever the widget needs to be updated. * [resizeGL](qglwidget.html#resizeGL)() - Sets up the OpenGL viewport, projection, etc. Gets called whenever the widget has been resized (and also when it is shown for the first time because all newly created widgets get a resize event automatically). * [initializeGL](qglwidget.html#initializeGL)() - Sets up the OpenGL rendering context, defines display lists, etc. Gets called once before the first time [resizeGL](qglwidget.html#resizeGL)() or [paintGL](qglwidget.html#paintGL)() is called. 下面是一個如何的QGLWidget子類可能看起來粗線條: ``` class MyGLDrawer : public QGLWidget { Q_OBJECT // must include this if you use Qt signals/slots public: MyGLDrawer([QWidget](qwidget.html) *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(); ... } }; ``` 如果你需要從觸發比其他地方重繪[paintGL](qglwidget.html#paintGL)( )(一個典型的例子,當使用的是[timers](qtimer.html)動畫場景) ,你應該調用widget的[updateGL](qglwidget.html#updateGL)()函數。 Widget的OpenGL渲染上下文是由電流時[paintGL](qglwidget.html#paintGL)( )[resizeGL](qglwidget.html#resizeGL)() ,或[initializeGL](qglwidget.html#initializeGL)()被調用。如果你需要從其他地方(例如,在你的widget的構造函數或在自己的油漆函數)調用標準的OpenGL API函數,你必須調用[makeCurrent](qglwidget.html#makeCurrent)( )第一。 的QGLWidget提供用于請求新顯示器[format](qglformat.html)你也可以創建小部件定制渲染[contexts](qglcontext.html)。 你也可以分享OpenGL顯示列表的QGLWidget對象之間(見的QGLWidget構造的細節的文檔)。 請注意,Windows ,下[QGLContext](qglcontext.html)屬于的QGLWidget有當的QGLWidget被重設父重新創建。這是由于在Windows平臺上的局限性必要的。這很可能會導致問題的那些子類,并安裝自己的用戶[QGLContext](qglcontext.html)上的QGLWidget 。它可以解決此問題通過把QGLWidget的一個虛擬部件內,然后重定父級的虛擬窗口小部件,而不是QGLWidget的。這將側步完全的問題,這也是我們建議對于需要這類功能的用戶。 在Mac OS X中,當Qt的是建立與可可的支持,一個的QGLWidget不能放在ontop的本身任何同級部件。這是由于可可API中的限制和不支持的蘋果。 ### Overlays 如果復蓋層由底層系統所支持的的QGLWidget創建在除了正常的上下文中的GL復蓋范圍內。 如果你想使用背景畫面,您在指定它[format](qglformat.html)。 (注:復蓋必須傳遞給構造函數的QGLWidget的格式要求。 )你的GL小工具還應該實現一些虛擬方法或全部: * [paintOverlayGL](qglwidget.html#paintOverlayGL)() * [resizeOverlayGL](qglwidget.html#resizeOverlayGL)() * [initializeOverlayGL](qglwidget.html#initializeOverlayGL)() 這些方法中以相同的方式工作,因為正常[paintGL](qglwidget.html#paintGL)( )等函數,不同之處在于,當復蓋范圍內由目前他們將被調用。你可以明確地使復蓋范圍內的電流通過[makeOverlayCurrent](qglwidget.html#makeOverlayCurrent)( ) ,你可以直接通過調用訪問復蓋范圍內(例如,要求其透明色)[overlayContext](qglwidget.html#overlayContext)( ) 。 X服務器上,其中缺省視覺是在復蓋面,非GL Qt的窗也可以用于復蓋層。 ### Painting Techniques 如上所述,子類的QGLWidget來呈現以下列方式純三維內容: * Reimplement the [QGLWidget.initializeGL](qglwidget.html#initializeGL)() and [QGLWidget.resizeGL](qglwidget.html#resizeGL)() to set up the OpenGL state and provide a perspective transformation. * Reimplement [QGLWidget.paintGL](qglwidget.html#paintGL)() to paint the 3D scene, calling only OpenGL functions to draw on the widget. 它也可以繪制2D圖形到的QGLWidget子類中,有必要重新實現[QGLWidget.paintEvent](qglwidget.html#paintEvent)( )并執行以下操作: * Construct a [QPainter](qpainter.html) object. * Initialize it for use on the widget with the [QPainter.begin](qpainter.html#begin)() function. * Draw primitives using [QPainter](qpainter.html)'s member functions. * Call [QPainter.end](qpainter.html#end)() to finish painting. 對3D內容的頂部Overpainting 2D內容需要一點更多的努力。一種方法來執行此操作示于[Overpainting](index.htm)例子。 ### Threading 由于Qt的4.8版本,這樣做螺紋GL渲染的支持進行了改進。有跡象表明,我們目前支持三種情況: * 1\. Buffer swapping in a thread. 交換緩沖區的雙緩沖上下文可以是同步,鎖定調用這可能是一個代價高昂的操作在一些GL實現。尤其是等嵌入式設備。這不是最佳的有CPU空轉而GPU是做一個緩沖區交換。在這種情況下,它是可以做到的渲染在主線程并執行實際的緩沖區交換在一個單獨的線程。這可以通過以下步驟來完成: 1 。通話[doneCurrent](qglwidget.html#doneCurrent)( )的時候,渲染完成后,主線程。 2 。通知交換的線程,它可以抓住的上下文。 3 。使在交換線程渲染上下文電流[makeCurrent](qglwidget.html#makeCurrent)( ),然后調用[swapBuffers](qglwidget.html#swapBuffers)( ) 。 4 。通話[doneCurrent](qglwidget.html#doneCurrent)( )在交換線,并通知主線程的交換完成。 這樣做將釋放主線程,以便它可以繼續使用,例如,處理UI事件或網絡請求。即使是涉及上下文交換,相對于具有主線程等待而GPU完成交換操作也可能是優選的。注意,這是高度依賴于實現。 * 2\. Texture uploading in a thread. 做質地上傳在一個線程可能是應用處理大量需要被顯示的,例如像一個圖片庫的圖像應用程序非常有用。這是通過對現有的受支持Qt中[bindTexture](qglwidget.html#bindTexture)( ) API 。這樣做的一個簡單的方法是創建兩個共享QGLWidgets 。一個是由當前在主界面線程,而其它是由當前在紋理上傳線程。在上傳線程窗口小部件從未顯示,它僅用于與主線程共享的紋理。對于通過綁定每一個紋理[bindTexture](qglwidget.html#bindTexture)( ) ,通知主線程,以便它可以開始使用了質感。 * 3\. Using [QPainter](qpainter.html) to draw into a QGLWidget in a thread. 在Qt 4.8 ,它可以用來繪制成的QGLWidget一個[QPainter](qpainter.html)在一個單獨的線程。注意,這也可能QGLPixelBuffers和QGLFramebufferObjects 。由于這是唯一支持在GL 2繪圖引擎, OpenGL的2.0或OpenGL ES 2.0是必需的。 QGLWidgets只能在主界面線程被創建。這意味著調用[doneCurrent](qglwidget.html#doneCurrent)( )是需要從主線程釋放GL上下文之前,小部件可以被另一個線程被捲入。此外,主界面線程將派遣調整大小和油漆事件到的QGLWidget時,小部件的大小時,或它的一部分將暴露在外或需要重繪。因此,有必要來處理這些事件,因為里面的QGLWidget的默認實現將盡力使的QGLWidget的背景電流,這將再次與渲染到小部件的任何線程干擾。重新實現[QGLWidget.paintEvent](qglwidget.html#paintEvent)()和[QGLWidget.resizeEvent](qglwidget.html#resizeEvent)( )通知渲染線程,一個調整大小或更新是必要的,并注意不要調用基類的實現。如果要渲染一個動畫,它可能沒有必要處理Paint事件,因為在所有的渲染線程正在做定期更新。那么這將是足以重新實現[QGLWidget.paintEvent](qglwidget.html#paintEvent)( )什么也不做。 因為這樣做線程渲染時一般規則:注意,綁定和在不同的線程釋放上下文必須由用戶進行同步。一個GL渲染上下文只能是當前一個線程在任何時候。如果您嘗試打開一個[QPainter](qpainter.html)上的QGLWidget和窗口小部件的渲染上下文是當前在另一個線程,它會失敗。 需要注意的是X11下,有必要設置[Qt.AA_X11InitThreads](qt.html#ApplicationAttribute-enum)應用程序的屬性,使X11的庫和GLX調用線程安全的,否則上述情況將會失敗。 除了這一點,使用一個單獨的線程原料GL調用呈現支持。 _OpenGL is a trademark of Silicon Graphics, Inc. in the United States and other countries._ * * * ## Method Documentation ``` QGLWidget.__init__ (self, QWidget?parent?=?None, QGLWidget?shareWidget?=?None, Qt.WindowFlags?flags?=?0) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個OpenGL窗口小部件與_parent_小工具。 該[default format](qglformat.html#defaultFormat)被使用。窗口小部件會[invalid](qglwidget.html#isValid)如果系統中沒有[OpenGL support](qglformat.html#hasOpenGL)。 該_parent_和widget標志,_f_,參數被傳遞到[QWidget](qwidget.html)構造函數。 If _shareWidget_是一個有效的[QGLWidget](qglwidget.html),這個widget會分享OpenGL的顯示列表和紋理與對象_shareWidget_。但是,如果_shareWidget_而這個小工具有不同的[formats](qglwidget.html#format),共享可能是不可能的。您可以檢查共享是否有效通過調用[isSharing](qglwidget.html#isSharing)( ) 。 OpenGL的渲染狀態等的初始化應通過重寫來完成的[initializeGL](qglwidget.html#initializeGL)()函數,而不是在你的構造[QGLWidget](qglwidget.html)子類。 **See also** [QGLFormat.defaultFormat](qglformat.html#defaultFormat)()和[Textures Example](index.htm)。 ``` QGLWidget.__init__ (self, QGLContext?context, QWidget?parent?=?None, QGLWidget?shareWidget?=?None, Qt.WindowFlags?flags?=?0) ``` 該_context_說法有它的所有權轉移給Qt的。 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個OpenGL窗口小部件與父_parent_。 該_context_參數是一個指向[QGLContext](qglcontext.html)你希望綁定到這個小工具。這使您可以通過在自己的[QGLContext](qglcontext.html)子類。 窗口小部件會[invalid](qglwidget.html#isValid)如果系統中沒有[OpenGL support](qglformat.html#hasOpenGL)。 該_parent_和widget標志,_f_,參數被傳遞到[QWidget](qwidget.html)構造函數。 If _shareWidget_是一個有效的[QGLWidget](qglwidget.html),這個widget會分享OpenGL的顯示列表和紋理與對象_shareWidget_。但是,如果_shareWidget_而這個小工具有不同的[formats](qglwidget.html#format),共享可能是不可能的。您可以檢查共享是否有效通過調用[isSharing](qglwidget.html#isSharing)( ) 。 OpenGL的渲染狀態等的初始化應通過重寫來完成的[initializeGL](qglwidget.html#initializeGL)()函數,而不是在你的構造[QGLWidget](qglwidget.html)子類。 **See also** [QGLFormat.defaultFormat](qglformat.html#defaultFormat)()和[isValid](qglwidget.html#isValid)( ) 。 ``` QGLWidget.__init__ (self, QGLFormat?format, QWidget?parent?=?None, QGLWidget?shareWidget?=?None, Qt.WindowFlags?flags?=?0) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個OpenGL窗口小部件與父_parent_。 該_format_參數指定所需[rendering options](qglformat.html)。如果底層的OpenGL / Window系統不能滿足所有要求的功能_format_,的特征最接近的子集將被使用。創建后,[format](qglwidget.html#format)( )方法將返回所得到的實際格式。 窗口小部件會[invalid](qglwidget.html#isValid)如果系統中沒有[OpenGL support](qglformat.html#hasOpenGL)。 該_parent_和widget標志,_f_,參數被傳遞到[QWidget](qwidget.html)構造函數。 If _shareWidget_是一個有效的[QGLWidget](qglwidget.html),這個widget會分享OpenGL的顯示列表和紋理與對象_shareWidget_。但是,如果_shareWidget_而這個小工具有不同的[formats](qglwidget.html#format),共享可能是不可能的。您可以檢查共享是否有效通過調用[isSharing](qglwidget.html#isSharing)( ) 。 OpenGL的渲染狀態等的初始化應通過重寫來完成的[initializeGL](qglwidget.html#initializeGL)()函數,而不是在你的構造[QGLWidget](qglwidget.html)子類。 **See also** [QGLFormat.defaultFormat](qglformat.html#defaultFormat)()和[isValid](qglwidget.html#isValid)( ) 。 ``` bool QGLWidget.autoBufferSwap (self) ``` 返回True如果部件是做自動GL緩沖交換,否則返回False 。 **See also** [setAutoBufferSwap](qglwidget.html#setAutoBufferSwap)( ) 。 ``` int QGLWidget.bindTexture (self, QImage?image, int?target?=?GL_TEXTURE_2D, int?format?=?GL_RGBA) ``` 調用QGLContext : bindTexture (_image_,_target_,_format_)對當前設置環境。 **See also** [deleteTexture](qglwidget.html#deleteTexture)( ) 。 ``` int QGLWidget.bindTexture (self, QPixmap?pixmap, int?target?=?GL_TEXTURE_2D, int?format?=?GL_RGBA) ``` 調用QGLContext : bindTexture (_pixmap_,_target_,_format_)對當前設置環境。 **See also** [deleteTexture](qglwidget.html#deleteTexture)( ) 。 ``` int QGLWidget.bindTexture (self, QString?fileName) ``` 這是一個重載函數。 綁定_options_是一組用來決定如何將紋理綁定到上下文選項。 此功能被引入Qt的4.6 。 ``` int QGLWidget.bindTexture (self, QImage?image, int?target, int?format, QGLContext.BindOptions?options) ``` 這是一個重載函數。 生成和二維GL紋理綁定到當前上下文的基礎上,_pixmap_。所生成的紋理ID被返回,并且可以在使用 綁定_options_是一組用來決定如何將紋理綁定到上下文選項。 此功能被引入Qt的4.6 。 ``` int QGLWidget.bindTexture (self, QPixmap?pixmap, int?target, int?format, QGLContext.BindOptions?options) ``` 這是一個重載函數。 調用QGLContext.bindTexture (_fileName_)對當前設置環境。 **See also** [deleteTexture](qglwidget.html#deleteTexture)( ) 。 ``` QGLColormap QGLWidget.colormap (self) ``` [ 返回色圖這個小工具。 通常它是一個可以安裝不同的色彩映射表只有頂層窗口部件。要求的子插件的顏色表將返回顏色映射為孩子的頂級窗口部件。 ](qglcolormap.html) [如果沒有顏色表已設置這個小工具的](qglcolormap.html)[QGLColormap](qglcolormap.html)返回的將是空的。 **See also** [setColormap](qglwidget.html#setColormap)()和[QGLColormap.isEmpty](qglcolormap.html#isEmpty)( ) 。 ``` QGLContext QGLWidget.context (self) ``` [ 返回這個窗口部件的背景下。 ](qglcontext.html) [這是可能的情況下是無效的(參見](qglcontext.html)[isValid](qglwidget.html#isValid)()) ,例如,如果底層的硬件不支持所請求的格式屬性。 ``` QImage QGLWidget.convertToGLFormat (QImage?img) ``` [](qimage.html) [將圖像轉換_img_到預期的OpenGL函數,如glTexImage2D ( )的未命名格式。返回的圖像是不能用作](qimage.html)[QImage](qimage.html),但[QImage.width](qimage.html#width)( )[QImage.height](qimage.html#height)()和[QImage.bits](qimage.html#bits)( )可用于與OpenGL的。使用的GL格式`GL_RGBA`。 ``` QGLWidget.deleteTexture (self, int?tx_id) ``` 調用QGLContext.deleteTexture (_id_)對當前設置環境。 **See also** [bindTexture](qglwidget.html#bindTexture)( ) 。 ``` QGLWidget.doneCurrent (self) ``` 不作任何GL上下文的當前上下文。通常情況下,你不需要調用此函數;[QGLContext](qglcontext.html)調用它是必要的。然而,也可能是在多線程環境中是有用的。 ``` bool QGLWidget.doubleBuffer (self) ``` 返回True如果包含的GL渲染上下文具有雙緩沖,否則返回False 。 **See also** [QGLFormat.doubleBuffer](qglformat.html#doubleBuffer)( ) 。 ``` QGLWidget.drawTexture (self, QRectF?target, int?textureId, int?textureTarget?=?GL_TEXTURE_2D) ``` 調用相應的[QGLContext.drawTexture](qglcontext.html#drawTexture)( )與_target_,_textureId_和_textureTarget_這個小工具的上下文。 此功能被引入Qt的4.4 。 ``` QGLWidget.drawTexture (self, QPointF?point, int?textureId, int?textureTarget?=?GL_TEXTURE_2D) ``` 調用相應的[QGLContext.drawTexture](qglcontext.html#drawTexture)( )與_point_,_textureId_和_textureTarget_這個小工具的上下文。 此功能被引入Qt的4.4 。 ``` bool QGLWidget.event (self, QEvent) ``` 從重新實現[QObject.event](qobject.html#event)( ) 。 ``` int QGLWidget.fontDisplayListBase (self, QFont?font, int?listBase?=?2000) ``` ``` QGLFormat QGLWidget.format (self) ``` [ 返回所包含GL渲染上下文的格式。 ](qglformat.html) [**See also**](qglformat.html) [setFormat](index.htm#setFormat)( ) 。 ``` QGLWidget.glDraw (self) ``` 執行虛擬函數[paintGL](qglwidget.html#paintGL)( ) 。 窗口小部件的渲染上下文將成為當前上下文和[initializeGL](qglwidget.html#initializeGL)() ,如果它尚未被稱為將被調用。 ``` QGLWidget.glInit (self) ``` OpenGL的初始化這個小工具的上下文。調用虛函數[initializeGL](qglwidget.html#initializeGL)( ) 。 ``` QImage QGLWidget.grabFrameBuffer (self, bool?withAlpha?=?False) ``` [ 返回幀緩沖器的圖像。如果_withAlpha_是真正的alpha通道被包括在內。 根據您的硬件,就可以明確選擇調用此函數之前用glReadBuffer ( )調用搶的顏色緩沖區。 ``` QGLWidget.initializeGL (self) ``` ](qimage.html) [在第一次調用之前,這個虛函數被調用一次](qimage.html)[paintGL](qglwidget.html#paintGL)()或[resizeGL](qglwidget.html#resizeGL)() ,然后一旦每當插件已被分配一個新[QGLContext](qglcontext.html)。重新實現它的一個子類。 這個功能應該設置任何所需的OpenGL上下文渲染標志,定義顯示列表等。 有不需要調用[makeCurrent](qglwidget.html#makeCurrent)( ),因為這已經完成時,此函數被調用。 ``` QGLWidget.initializeOverlayGL (self) ``` 這個虛擬函數用于以相同的方式作為[initializeGL](qglwidget.html#initializeGL)()不同的是它運行在widget的復蓋范圍內,而不是widget的主要方面。這意味著, initializeOverlayGL ()的第一次調用之前被調用一次[paintOverlayGL](qglwidget.html#paintOverlayGL)()或[resizeOverlayGL](qglwidget.html#resizeOverlayGL)( ) 。重新實現它的一個子類。 這個功能應該設置任何所需的OpenGL上下文渲染標志,定義顯示列表等的復蓋范圍內。 有不需要調用[makeOverlayCurrent](qglwidget.html#makeOverlayCurrent)( ),因為這已經完成時,此函數被調用。 ``` bool QGLWidget.isSharing (self) ``` 返回True如果這個小工具的GL上下文與另一GL上下文共享,否則返回假。上下文共享可能不是可能的,如果小窗口使用不同的格式。 **See also** [format](qglwidget.html#format)( ) 。 ``` bool QGLWidget.isValid (self) ``` 返回True如果部件有一個有效的GL渲染上下文,否則返回False 。一個widget將是無效的,如果系統沒有[OpenGL support](qglformat.html#hasOpenGL)。 ``` QGLWidget.makeCurrent (self) ``` 使得這個小工具的當前部件的OpenGL操作,即讓widget的渲染上下文當前的OpenGL渲染上下文。 ``` QGLWidget.makeOverlayCurrent (self) ``` 使得這個小部件電流的復蓋范圍內。如果你需要發出OpenGL命令來復蓋上下文之外使用此[initializeOverlayGL](qglwidget.html#initializeOverlayGL)( )[resizeOverlayGL](qglwidget.html#resizeOverlayGL)()和[paintOverlayGL](qglwidget.html#paintOverlayGL)( ) 。 什么都不做,如果這個部件有沒有重疊。 **See also** [makeCurrent](qglwidget.html#makeCurrent)( ) 。 ``` QGLContext QGLWidget.overlayContext (self) ``` [ 返回這個窗口部件,或者0的復蓋范圍內,如果該部件有沒有重疊。 ](qglcontext.html) [**See also**](qglcontext.html) [context](qglwidget.html#context)( ) 。 ``` QPaintEngine QGLWidget.paintEngine (self) ``` [ ``` QGLWidget.paintEvent (self, QPaintEvent) ``` ](qpaintengine.html) [從重新實現](qpaintengine.html)[QWidget.paintEvent](qwidget.html#paintEvent)( ) 。 在處理傳入的paint事件_event_參數。會導致虛擬[paintGL](qglwidget.html#paintGL)( )函數被調用。 窗口小部件的渲染上下文將成為當前上下文和[initializeGL](qglwidget.html#initializeGL)() ,如果它尚未被稱為將被調用。 ``` QGLWidget.paintGL (self) ``` 這個虛函數被調用時的小部件需要被重畫。重新實現它的一個子類。 有不需要調用[makeCurrent](qglwidget.html#makeCurrent)( ),因為這已經完成時,此函數被調用。 ``` QGLWidget.paintOverlayGL (self) ``` 這個虛擬函數用于以相同的方式作為[paintGL](qglwidget.html#paintGL)()不同的是它運行在widget的復蓋范圍內,而不是widget的主要方面。這意味著, paintOverlayGL ()被調用每當widget的復蓋需要被重畫。重新實現它的一個子類。 有不需要調用[makeOverlayCurrent](qglwidget.html#makeOverlayCurrent)( ),因為這已經完成時,此函數被調用。 ``` QGLWidget.qglClearColor (self, QColor?c) ``` 便利功能用于指定清算顏色的OpenGL。調用glClearColor (在RGBA模式)或glClearIndex (在顏色索引模式)的顏色_c_。適用于本部件GL上下文。 **See also** [qglColor](qglwidget.html#qglColor)( )[QGLContext.currentContext](qglcontext.html#currentContext)()和[QColor](qcolor.html)。 ``` QGLWidget.qglColor (self, QColor?c) ``` 便利功能用于指定繪圖顏色的OpenGL。調用glColor4 (在RGBA模式)或glIndex (在顏色索引模式)的顏色_c_。適用于本部件GL上下文。 **Note:**此功能不支持基于OpenGL / ES 2.0的系統。 **See also** [qglClearColor](qglwidget.html#qglClearColor)( )[QGLContext.currentContext](qglcontext.html#currentContext)()和[QColor](qcolor.html)。 ``` QPixmap QGLWidget.renderPixmap (self, int?width?=?0, int?height?=?0, bool?useContext?=?False) ``` [ 呈現在一個像素映射當前場景,并返回像素圖。 ](qpixmap.html) [您可以在可見和不可見使用這種方法](qpixmap.html)[QGLWidget](qglwidget.html)對象。 這個方法將創建一個像素圖和臨時[QGLContext](qglcontext.html)渲染的像素圖。然后,它會調用[initializeGL](qglwidget.html#initializeGL)( )[resizeGL](qglwidget.html#resizeGL)()和[paintGL](qglwidget.html#paintGL)( )在這種情況下。最后,小部件的原GL上下文恢復。 像素圖的大小將_w_像素寬和_h_像素高,除非這些參數中的一個為0 (缺省值) ,在這種情況下,像素映像將具有相同尺寸的窗口小部件。 If _useContext_誠然,這個方法會嘗試使用現有的GL上下文來渲染像素圖更有效率。默認值為False 。僅使用真實的,如果你理解了風險。注意,在Windows下的臨時上下文必須創建和使用_useContext_不支持參數。 復蓋不會呈現到像素圖。 如果GL渲染上下文和桌面有不同的位深度,其結果很可能會看起來令人驚訝。 請注意,創建顯示列表中,視錐等的修改應該從內完成[initializeGL](qglwidget.html#initializeGL)( ) 。如果不這樣做,則臨時[QGLContext](qglcontext.html)將無法正確初始化,并且呈現像素圖可能不完整/損壞。 ``` QGLWidget.renderText (self, int?x, int?y, QString?str, QFont?font?=?QFont(), int?listBase?=?2000) ``` 呈現的字符串_str_這個小部件的GL上下文。 _x_和_y_在窗口坐標被指定,在該窗口的上部左角的原點。如果_font_沒有被指定,當前設置的應用程序的字體將被用來呈現字符串。要改變呈現的文本的顏色,你可以使用glColor ( )調用(或[qglColor](qglwidget.html#qglColor)( )便利功能) ,只是renderText ( )調用之前。 該_listBase_參數已過時,將在Qt的未來版本中刪除。 **Note:**此功能清除模板緩沖區。 **Note:**此功能不支持基于OpenGL / ES系統。 **Note:**此功能暫時禁用深度測試時繪制文本。 **Note:**此功能只能在內部使用[QPainter.beginNativePainting](qpainter.html#beginNativePainting)()/[QPainter.endNativePainting](qpainter.html#endNativePainting)( )塊,如果默認的OpenGL繪圖引擎是[QPaintEngine.OpenGL](qpaintengine.html#Type-enum)。為了使[QPaintEngine.OpenGL](qpaintengine.html#Type-enum)默認的GL引擎,調用QGL.setPreferredPaintEngine ([QPaintEngine.OpenGL](qpaintengine.html#Type-enum))前[QApplication](qapplication.html)構造函數。 [Overpaint](index.htm)同[QPainter.drawText](qpainter.html#drawText)( )來代替。 ``` QGLWidget.renderText (self, float?x, float?y, float?z, QString?str, QFont?font?=?QFont(), int?listBase?=?2000) ``` 這是一個重載函數。 _x_,_y_和_z_被指定的場景或物體坐標相對于當前設置的投影和模型矩陣。如果要標注模型與文本標籤,并在標籤移動的模式,因為它旋轉等,這可能是有用的 **Note:**此功能不支持基于OpenGL / ES系統。 **Note:**如果深度測試啟用此函數被調用之前,那么繪制的文本將深度測試對那些已經被繪制在場景中的模型。使用`glDisable(GL_DEPTH_TEST)`之前調用這個函數來注釋的模型,而無需深度測試的文本。 [Overpaint](index.htm)同[QPainter.drawText](qpainter.html#drawText)( )來代替。 ``` QGLWidget.resizeEvent (self, QResizeEvent) ``` 從重新實現[QWidget.resizeEvent](qwidget.html#resizeEvent)( ) 。 手柄調整所傳遞的事件_event_參數。調用虛函數[resizeGL](qglwidget.html#resizeGL)( ) 。 ``` QGLWidget.resizeGL (self, int?w, int?h) ``` 這個虛函數被調用時的小部件已調整大小。新的大小被傳遞_width_和_height_。重新實現它的一個子類。 有不需要調用[makeCurrent](qglwidget.html#makeCurrent)( ),因為這已經完成時,此函數被調用。 ``` QGLWidget.resizeOverlayGL (self, int?w, int?h) ``` 這個虛擬函數用于以相同的方式作為[paintGL](qglwidget.html#paintGL)()不同的是它運行在widget的復蓋范圍內,而不是widget的主要方面。這意味著, resizeOverlayGL ()被調用時的小部件已調整大小。新的大小被傳遞_width_和_height_。重新實現它的一個子類。 有不需要調用[makeOverlayCurrent](qglwidget.html#makeOverlayCurrent)( ),因為這已經完成時,此函數被調用。 ``` QGLWidget.setAutoBufferSwap (self, bool?on) ``` If _on_是真正的自動GL緩沖交換被打開,否則將被關閉。 If _on_是真實和小部件是使用雙緩沖格式,背景和前景GL緩沖區會自動在每個被交換[paintGL](qglwidget.html#paintGL)( )調用。 緩沖區自動交換是默認。 **See also** [autoBufferSwap](qglwidget.html#autoBufferSwap)( )[doubleBuffer](qglwidget.html#doubleBuffer)()和[swapBuffers](qglwidget.html#swapBuffers)( ) 。 ``` QGLWidget.setColormap (self, QGLColormap?map) ``` 設置顏色映射這個小工具到_cmap_。通常它是一種可以安裝有色彩映射表僅頂層窗口小部件。 **See also** [colormap](qglwidget.html#colormap)( ) 。 ``` QGLWidget.setContext (self, QGLContext?context, QGLContext?shareContext?=?None, bool?deleteOldContext?=?True) ``` 該_context_說法有它的所有權轉移給Qt的。 ``` QGLWidget.setFormat (self, QGLFormat?format) ``` ``` QGLWidget.setMouseTracking (self, bool?enable) ``` If _enable_是真的,那么鼠標跟蹤被啟用,否則將被禁用。 ``` QGLWidget.swapBuffers (self) ``` 掉期,一個離屏緩沖屏幕內容。這只是工作,如果widget的格式指定雙緩沖模式。 通常情況下,沒有必要顯式調用這個函數,因為它是每個插件重繪后自動完成的,即每個時間后,[paintGL](qglwidget.html#paintGL)( )已經執行。 **See also** [doubleBuffer](qglwidget.html#doubleBuffer)( )[setAutoBufferSwap](qglwidget.html#setAutoBufferSwap)()和[QGLFormat.setDoubleBuffer](qglformat.html#setDoubleBuffer)( ) 。 ``` QGLWidget.updateGL (self) ``` 這種方法也是一個Qt槽與C + +的簽名`void updateGL()`。 通過調用更新微件[glDraw](qglwidget.html#glDraw)( ) 。 ``` QGLWidget.updateOverlayGL (self) ``` 這種方法也是一個Qt槽與C + +的簽名`void updateOverlayGL()`。 更新微件的疊加(如果有的話) 。會導致虛函數[paintOverlayGL](qglwidget.html#paintOverlayGL)()被執行。 窗口小部件的渲染上下文將成為當前上下文和[initializeGL](qglwidget.html#initializeGL)() ,如果它尚未被稱為將被調用。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看