diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-03-04 11:07:25 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-03-12 13:29:11 +0100 |
commit | f96e2fc175f073c823d208fbf068ebd621dfb593 (patch) | |
tree | 087bec781efdaf69c88f65139dc26ffec77888ab | |
parent | 9df5283e034d24e2339de04b3d61e6b03ff52aca (diff) |
PySide6: Add QOpenGLFunctions.glShaderSource()/glGetShaderSource()
Add a simple signature taking and returning a string.
Fixes: PYSIDE-1511
Change-Id: Ie52d5f55f168075ee6ee71fdb35463895f768c04
Reviewed-by: Christian Tismer <tismer@stackless.com>
(cherry picked from commit adf0babe9b006034ae10ac2df0fc45df6acb8478)
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
-rw-r--r-- | sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml | 8 | ||||
-rw-r--r-- | sources/pyside6/PySide6/glue/qtgui.cpp | 22 |
2 files changed, 30 insertions, 0 deletions
diff --git a/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml index e565f34d4..3268c88b8 100644 --- a/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml +++ b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml @@ -2695,6 +2695,14 @@ </object-type> <object-type name="QOpenGLFunctions" since="5.0"> <enum-type name="OpenGLFeature" flags="OpenGLFeatures"/> + <add-function signature="glGetShaderSource(unsigned int @shader@)" return-type="const char *"> + <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" + snippet="glgetshadersource"/> + </add-function> + <add-function signature="glShaderSource(unsigned int @shader@,const QString & @source@)"> + <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" + snippet="glshadersource"/> + </add-function> <modify-function signature="glGetAttachedShaders(unsigned int,int,int*,unsigned int*)"> <modify-argument index="3"><array/></modify-argument> <modify-argument index="4"><array/></modify-argument> diff --git a/sources/pyside6/PySide6/glue/qtgui.cpp b/sources/pyside6/PySide6/glue/qtgui.cpp index 869fb9dc4..f70875865 100644 --- a/sources/pyside6/PySide6/glue/qtgui.cpp +++ b/sources/pyside6/PySide6/glue/qtgui.cpp @@ -41,6 +41,28 @@ * INJECT CODE ********************************************************************/ +// @snippet glgetshadersource +GLsizei bufSize = 4096; +GLsizei length = bufSize - 1; +QByteArray buffer; +for (; length == bufSize - 1; bufSize += 4096) { + buffer.resize(qsizetype(bufSize)); + %CPPSELF->%FUNCTION_NAME(%1, bufSize, &length, buffer.data()); + if (%CPPSELF->glGetError() != GL_NO_ERROR) { + buffer.clear(); + break; + } +} +auto *data = buffer.constData(); +%PYARG_0 = %CONVERTTOPYTHON[char *](data); +// @snippet glgetshadersource + +// @snippet glshadersource +const QByteArray buffer = %2.toUtf8(); +const char *sources[] = {buffer.constData()}; +%CPPSELF->%FUNCTION_NAME(%1, 1, sources, nullptr); +// @snippet glshadersource + // @snippet qtransform-quadtoquad QTransform _result; if (QTransform::quadToQuad(%1, %2, _result)) { |