[PyQt] Creating a QSGGeometry.AttributeSet in PyQt5

Phil Thompson phil at riverbankcomputing.com
Sat Feb 22 14:33:20 GMT 2014


On 21-02-2014 1:08 pm, pwuertz wrote:
> Hi,
> I am trying to add a vertex array to a QSGGeometryNode for a custom 
> QtQuick
> Item. Qt5 uses QSGGeometry for that purpose and requires the user to 
> define
> a QSGGeometry.AttributeSet that describes structure of a vertex 
> array. There
> are a few pre-defined structures like the one from
> defaultAttributes_Point2D() but I need to create my own as described 
> in
> http://qt-project.org/doc/qt-5/qsggeometry.html.
>
> QSGGeometry::Attribute MyPoint2D_Attributes[] = {
>     QSGGeometry::Attribute::create(0, 2, GL_FLOAT, true),
>     QSGGeometry::Attribute::create(1, 4, GL_FLOAT, false)
> };
>
> QSGGeometry::AttributeSet MyPoint2D_AttributeSet = {
>     2,
>     sizeof(MyPoint2D),
>     MyPoint2D_Attributes
> };
>
> The problem is that I don't know how to create a 
> QSGGeometry.AttributeSet in
> PyQt5, which C++ creates by struct initialization. AttributeSet 
> doesn't have
> an initializing constructor and naively assigning a list of 
> Attributes to a
> default constructed instance fails because AttributeSet.attributes is
> read-only. How can I construct a complete AttributeSet in PyQt5?

Tonight's snapshot will have a AttributeSet ctor that takes a stride 
and a sequence of Attributes so that you can do...

attribute_set = QSGGeometry.AttributeSet(24,
     (QSGGeometry.Attribute.create(0, 2, QSGGeometry.GL_FLOAT, True),
      QSGGeometry.Attribute.create(1, 4, QSGGeometry.GL_FLOAT, True)))

It's very likely that there are other problems with the QSGGeometry 
API. Please let me know if you find other things that you need to be 
able to do but can't.

Phil


More information about the PyQt mailing list