<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- qtechnique.cpp --> <title>QTechnique Class | Qt 3D 5.9</title> <link rel="stylesheet" type="text/css" href="style/offline-simple.css" /> <script type="text/javascript"> document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css"); // loading style sheet breaks anchors that were jumped to before // so force jumping to anchor again setTimeout(function() { var anchor = location.hash; // need to jump to different anchor first (e.g. none) location.hash = "#"; setTimeout(function() { location.hash = anchor; }, 0); }, 0); </script> </head> <body> <div class="header" id="qtdocheader"> <div class="main"> <div class="main-rounded"> <div class="navigationbar"> <table><tr> <td >Qt 5.9</td><td ><a href="qt3d-index.html">Qt 3D</a></td><td ><a href="qt3d-cpp.html">C++ Classes</a></td><td >QTechnique</td></tr></table><table class="buildversion"><tr> <td id="buildversion" width="100%" align="right">Qt 5.9.4 Reference Documentation</td> </tr></table> </div> </div> <div class="content"> <div class="line"> <div class="content mainContent"> <div class="sidebar"> <div class="toc"> <h3><a name="toc">Contents</a></h3> <ul> <li class="level1"><a href="#properties">Properties</a></li> <li class="level1"><a href="#public-functions">Public Functions</a></li> <li class="level1"><a href="#protected-functions">Protected Functions</a></li> <li class="level1"><a href="#details">Detailed Description</a></li> </ul> </div> <div class="sidebar-content" id="sidebar-content"></div></div> <h1 class="title">QTechnique Class</h1> <span class="small-subtitle">(<a href="qt3drender-qtechnique.html">Qt3DRender::QTechnique</a>)<br/></span> <!-- $$$QTechnique-brief --> <p>Encapsulates a Technique. <a href="#details">More...</a></p> <!-- @@@QTechnique --> <div class="table"><table class="alignedsummary"> <tr><td class="memItemLeft rightAlign topAlign"> Header:</td><td class="memItemRight bottomAlign"> <span class="preprocessor">#include <QTechnique></span> </td></tr><tr><td class="memItemLeft rightAlign topAlign"> qmake:</td><td class="memItemRight bottomAlign"> QT += 3drender</td></tr><tr><td class="memItemLeft rightAlign topAlign"> Since:</td><td class="memItemRight bottomAlign"> Qt 5.7</td></tr><tr><td class="memItemLeft rightAlign topAlign"> Instantiated By:</td><td class="memItemRight bottomAlign"> <a href="qml-qt3d-render-technique.html">Technique</a></td></tr><tr><td class="memItemLeft rightAlign topAlign"> Inherits:</td><td class="memItemRight bottomAlign"> <a href="qt3dcore-qnode.html">Qt3DCore::QNode</a></td></tr></table></div><ul> <li><a href="qt3drender-qtechnique-members.html">List of all members, including inherited members</a></li> </ul> <a name="properties"></a> <h2 id="properties">Properties</h2> <ul> <li class="fn"><b><a href="qt3drender-qtechnique.html#graphicsApiFilter-prop">graphicsApiFilter</a></b> : Qt3DRender::QGraphicsApiFilter * const</li> </ul> <ul> <li class="fn">3 properties inherited from <a href="qt3dcore-qnode.html#properties">Qt3DCore::QNode</a></li> </ul> <a name="public-functions"></a> <h2 id="public-functions">Public Functions</h2> <div class="table"><table class="alignedsummary"> <tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#QTechnique">QTechnique</a></b>(Qt3DCore::QNode *<i>parent</i> = nullptr)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#addFilterKey">addFilterKey</a></b>(QFilterKey *<i>filterKey</i>)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#addParameter">addParameter</a></b>(QParameter *<i>parameter</i>)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#addRenderPass">addRenderPass</a></b>(QRenderPass *<i>pass</i>)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> QVector<QFilterKey *> </td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#filterKeys">filterKeys</a></b>() const</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> QGraphicsApiFilter *</td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#graphicsApiFilter-prop">graphicsApiFilter</a></b>()</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> QVector<QParameter *> </td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#parameters">parameters</a></b>() const</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#removeFilterKey">removeFilterKey</a></b>(QFilterKey *<i>filterKey</i>)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#removeParameter">removeParameter</a></b>(QParameter *<i>parameter</i>)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#removeRenderPass">removeRenderPass</a></b>(QRenderPass *<i>pass</i>)</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> QVector<QRenderPass *> </td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#renderPasses">renderPasses</a></b>() const</td></tr> </table></div> <ul> <li class="fn">11 public functions inherited from <a href="qt3dcore-qnode.html#public-functions">Qt3DCore::QNode</a></li> </ul> <a name="protected-functions"></a> <h2 id="protected-functions">Protected Functions</h2> <div class="table"><table class="alignedsummary"> <tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qt3drender-qtechnique.html#QTechnique-1">QTechnique</a></b>(QTechniquePrivate &<i>dd</i>, Qt3DCore::QNode *<i>parent</i> = nullptr)</td></tr> </table></div> <ul> <li class="fn">2 protected functions inherited from <a href="qt3dcore-qnode.html#protected-functions">Qt3DCore::QNode</a></li> </ul> <h3>Additional Inherited Members</h3> <ul> <li class="fn">3 public slots inherited from <a href="qt3dcore-qnode.html#public-slots">Qt3DCore::QNode</a></li> <li class="fn">4 signals inherited from <a href="qt3dcore-qnode.html#signals">Qt3DCore::QNode</a></li> </ul> <a name="details"></a> <!-- $$$QTechnique-description --> <div class="descr"> <h2 id="details">Detailed Description</h2> <p>Encapsulates a Technique.</p> <p>A <a href="qt3drender-qtechnique.html">Qt3DRender::QTechnique</a> specifies a set of <a href="qt3drender-qrenderpass.html">Qt3DRender::QRenderPass</a> objects, <a href="qt3drender-qfilterkey.html">Qt3DRender::QFilterKey</a> objects, <a href="qt3drender-qparameter.html">Qt3DRender::QParameter</a> objects and a <a href="qt3drender-qgraphicsapifilter.html">Qt3DRender::QGraphicsApiFilter</a>, which together define a rendering technique the given graphics API can render. The filter keys are used by <a href="qt3drender-qtechniquefilter.html">Qt3DRender::QTechniqueFilter</a> to select specific techniques at specific parts of the FrameGraph. If two <a href="qt3drender-qparameter.html">QParameter</a> instances with the same name are specified in a <a href="qt3drender-qtechnique.html">QTechnique</a> and a <a href="qt3drender-qrenderpass.html">QRenderPass</a>, the one in Technique overrides the one used in the <a href="qt3drender-qrenderpass.html">QRenderPass</a>.</p> <p>When creating an <a href="qt3drender-qeffect.html">QEffect</a> that targets several versions of a graphics API, it is useful to create several <a href="qt3drender-qtechnique.html">QTechnique</a> nodes each with a <a href="qt3drender-qtechnique.html#graphicsApiFilter-prop">graphicsApiFilter</a> set to match one of the targeted GL versions. At runtime, the Qt3D renderer will select the most appropriate <a href="qt3drender-qtechnique.html">QTechnique</a> based on which graphics API versions are supported and (if specified) the <a href="qt3drender-qfilterkey.html">QFilterKey</a> nodes that satisfy a given <a href="qt3drender-qtechniquefilter.html">QTechniqueFilter</a> in the FrameGraph.</p> <p><b>Note: </b>When using OpenGL as the graphics API for rendering, Qt3D relies on the QSurfaceFormat returned by QSurfaceFormat::defaultFormat() at runtime to decide what is the most appropriate GL version available. If you need to customize the QSurfaceFormat, do not forget to apply it with QSurfaceFormat::setDefaultFormat(). Setting the QSurfaceFormat on the view will likely have no effect on Qt3D related rendering.</p><pre class="cpp"> <span class="type"><a href="qt3drender-qtechnique.html#QTechnique">QTechnique</a></span> <span class="operator">*</span>gl3Technique <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qt3drender-qtechnique.html#QTechnique">QTechnique</a></span>(); <span class="comment">// Create the render passes</span> <span class="type"><a href="qt3drender-qrenderpass.html">QRenderPass</a></span> <span class="operator">*</span>firstPass <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qt3drender-qrenderpass.html">QRenderPass</a></span>(); <span class="type"><a href="qt3drender-qrenderpass.html">QRenderPass</a></span> <span class="operator">*</span>secondPass <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qt3drender-qrenderpass.html">QRenderPass</a></span>(); <span class="comment">// Add the passes to the technique</span> gl3Technique<span class="operator">-</span><span class="operator">></span>addRenderPass(firstPass); gl3Technique<span class="operator">-</span><span class="operator">></span>addRenderPass(secondPass); <span class="comment">// Set the targeted GL version for the technique</span> gl3Technique<span class="operator">-</span><span class="operator">></span>graphicsApiFilter()<span class="operator">-</span><span class="operator">></span>setApi(<span class="type"><a href="qt3drender-qgraphicsapifilter.html">QGraphicsApiFilter</a></span><span class="operator">::</span>OpenGL); gl3Technique<span class="operator">-</span><span class="operator">></span>graphicsApiFilter()<span class="operator">-</span><span class="operator">></span>setMajorVersion(<span class="number">3</span>); gl3Technique<span class="operator">-</span><span class="operator">></span>graphicsApiFilter()<span class="operator">-</span><span class="operator">></span>setMinorVersion(<span class="number">1</span>); gl3Technique<span class="operator">-</span><span class="operator">></span>graphicsApiFilter()<span class="operator">-</span><span class="operator">></span>setProfile(<span class="type"><a href="qt3drender-qgraphicsapifilter.html">QGraphicsApiFilter</a></span><span class="operator">::</span>CoreProfile); <span class="comment">// Create a FilterKey</span> <span class="type"><a href="qt3drender-qfilterkey.html">QFilterKey</a></span> <span class="operator">*</span>filterKey <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qt3drender-qfilterkey.html">QFilterKey</a></span>(); filterKey<span class="operator">-</span><span class="operator">></span>setName(<span class="type">QStringLiteral</span>(<span class="string">"name"</span>)); fitlerKey<span class="operator">-</span><span class="operator">></span>setValue(<span class="type">QStringLiteral</span>(<span class="string">"zFillPass"</span>)); <span class="comment">// Add the FilterKey to the Technique</span> gl3Technique<span class="operator">-</span><span class="operator">></span>addFilterKey(filterKey); <span class="comment">// Create a QParameter</span> <span class="type"><a href="qt3drender-qparameter.html">QParameter</a></span> <span class="operator">*</span>colorParameter <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qt3drender-qparameter.html">QParameter</a></span>(<span class="type">QStringLiteral</span>(<span class="string">"color"</span>)<span class="operator">,</span> <span class="type">QColor</span><span class="operator">::</span>fromRgbF(<span class="number">0.0f</span><span class="operator">,</span> <span class="number">0.0f</span><span class="operator">,</span> <span class="number">1.0f</span><span class="operator">,</span> <span class="number">1.0f</span>)); <span class="comment">// Add parameter to technique</span> gl3Technique<span class="operator">-</span><span class="operator">></span>addParameter(colorParameter); </pre> </div> <p><b>See also </b><a href="qt3drender-qeffect.html">QEffect</a>, <a href="qt3drender-qrenderpass.html">QRenderPass</a>, and <a href="qt3drender-qtechniquefilter.html">QTechniqueFilter</a>.</p> <!-- @@@QTechnique --> <div class="prop"> <h2>Property Documentation</h2> <!-- $$$graphicsApiFilter-prop$$$graphicsApiFilter --> <h3 class="fn" id="graphicsApiFilter-prop"><a name="graphicsApiFilter-prop"></a><span class="name">graphicsApiFilter</span> : <span class="type">Qt3DRender::QGraphicsApiFilter</span> * const</h3> <p>Specifies the graphics API filter being used</p> <p><b>Access functions:</b></p> <div class="table"><table class="alignedsummary"> <tr><td class="memItemLeft topAlign rightAlign"> QGraphicsApiFilter *</td><td class="memItemRight bottomAlign"><span class="name"><b>graphicsApiFilter</b></span>()</td></tr> </table></div> <!-- @@@graphicsApiFilter --> </div> <div class="func"> <h2>Member Function Documentation</h2> <!-- $$$QTechnique[overload1]$$$QTechniqueQt3DCore::QNode* --> <h3 class="fn" id="QTechnique"><a name="QTechnique"></a>QTechnique::<span class="name">QTechnique</span>(<span class="type">Qt3DCore::QNode</span> *<i>parent</i> = nullptr)</h3> <p>Default constructs an instance of QTechnique.</p><!-- @@@QTechnique --> <!-- $$$QTechnique$$$QTechniqueQTechniquePrivate&Qt3DCore::QNode* --> <h3 class="fn" id="QTechnique-1"><a name="QTechnique-1"></a><code>[protected] </code>QTechnique::<span class="name">QTechnique</span>(<span class="type">QTechniquePrivate</span> &<i>dd</i>, <span class="type">Qt3DCore::QNode</span> *<i>parent</i> = nullptr)</h3> <p>Copy constructor.</p><!-- @@@QTechnique --> <!-- $$$addFilterKey[overload1]$$$addFilterKeyQFilterKey* --> <h3 class="fn" id="addFilterKey"><a name="addFilterKey"></a><span class="type">void</span> QTechnique::<span class="name">addFilterKey</span>(<span class="type"><a href="qt3drender-qfilterkey.html">QFilterKey</a></span> *<i>filterKey</i>)</h3> <p>Add <i>filterKey</i> to the <a href="qt3drender-qtechnique.html">Qt3DRender::QTechnique</a> local filter keys.</p> <!-- @@@addFilterKey --> <!-- $$$addParameter[overload1]$$$addParameterQParameter* --> <h3 class="fn" id="addParameter"><a name="addParameter"></a><span class="type">void</span> QTechnique::<span class="name">addParameter</span>(<span class="type"><a href="qt3drender-qparameter.html">QParameter</a></span> *<i>parameter</i>)</h3> <p>Add <i>parameter</i> to the technique's parameters.</p> <!-- @@@addParameter --> <!-- $$$addRenderPass[overload1]$$$addRenderPassQRenderPass* --> <h3 class="fn" id="addRenderPass"><a name="addRenderPass"></a><span class="type">void</span> QTechnique::<span class="name">addRenderPass</span>(<span class="type"><a href="qt3drender-qrenderpass.html">QRenderPass</a></span> *<i>pass</i>)</h3> <p>Appends a <i>pass</i> to the technique.</p> <!-- @@@addRenderPass --> <!-- $$$filterKeys[overload1]$$$filterKeys --> <h3 class="fn" id="filterKeys"><a name="filterKeys"></a><span class="type">QVector</span><<span class="type"><a href="qt3drender-qfilterkey.html">QFilterKey</a></span> *> QTechnique::<span class="name">filterKeys</span>() const</h3> <p>Returns the list of Qt3DCore::QFilterKey key objects making up the filter keys of the <a href="qt3drender-qtechnique.html">Qt3DRender::QTechnique</a>.</p> <!-- @@@filterKeys --> <!-- $$$parameters[overload1]$$$parameters --> <h3 class="fn" id="parameters"><a name="parameters"></a><span class="type">QVector</span><<span class="type"><a href="qt3drender-qparameter.html">QParameter</a></span> *> QTechnique::<span class="name">parameters</span>() const</h3> <p>Returns a vector of the techniques current parameters</p> <!-- @@@parameters --> <!-- $$$removeFilterKey[overload1]$$$removeFilterKeyQFilterKey* --> <h3 class="fn" id="removeFilterKey"><a name="removeFilterKey"></a><span class="type">void</span> QTechnique::<span class="name">removeFilterKey</span>(<span class="type"><a href="qt3drender-qfilterkey.html">QFilterKey</a></span> *<i>filterKey</i>)</h3> <p>Removes <i>filterKey</i> from the <a href="qt3drender-qtechnique.html">Qt3DRender::QTechnique</a> local filter keys.</p> <!-- @@@removeFilterKey --> <!-- $$$removeParameter[overload1]$$$removeParameterQParameter* --> <h3 class="fn" id="removeParameter"><a name="removeParameter"></a><span class="type">void</span> QTechnique::<span class="name">removeParameter</span>(<span class="type"><a href="qt3drender-qparameter.html">QParameter</a></span> *<i>parameter</i>)</h3> <p>Remove <i>parameter</i> from the technique's parameters.</p> <!-- @@@removeParameter --> <!-- $$$removeRenderPass[overload1]$$$removeRenderPassQRenderPass* --> <h3 class="fn" id="removeRenderPass"><a name="removeRenderPass"></a><span class="type">void</span> QTechnique::<span class="name">removeRenderPass</span>(<span class="type"><a href="qt3drender-qrenderpass.html">QRenderPass</a></span> *<i>pass</i>)</h3> <p>Removes a <i>pass</i> from the technique.</p> <!-- @@@removeRenderPass --> <!-- $$$renderPasses[overload1]$$$renderPasses --> <h3 class="fn" id="renderPasses"><a name="renderPasses"></a><span class="type">QVector</span><<span class="type"><a href="qt3drender-qrenderpass.html">QRenderPass</a></span> *> QTechnique::<span class="name">renderPasses</span>() const</h3> <p>Returns the list of render passes contained in the technique.</p> <!-- @@@renderPasses --> </div> </div> </div> </div> </div> </div> <div class="footer"> <p> <acronym title="Copyright">©</acronym> 2017 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners.<br> The documentation provided herein is licensed under the terms of the <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License version 1.3</a> as published by the Free Software Foundation.<br> Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners. </p> </div> </body> </html>