aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2021-03-04 11:07:25 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2021-03-12 13:29:11 +0100
commitf96e2fc175f073c823d208fbf068ebd621dfb593 (patch)
tree087bec781efdaf69c88f65139dc26ffec77888ab
parent9df5283e034d24e2339de04b3d61e6b03ff52aca (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.xml8
-rw-r--r--sources/pyside6/PySide6/glue/qtgui.cpp22
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 &amp; @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)) {