[Interest] Antialiasing possible on QSGGeometry?

Mark markg85 at gmail.com
Mon Jun 10 20:59:23 CEST 2013


Ahh oke, so i can't do a multisampling mode per geometrynode.. That
kinda sucks because a grid looks a bit blurred when multisampling is
running on everything. Damn, OpenGL is way more difficult then
QPainter! And also way more inaccurate.

On Mon, Jun 10, 2013 at 9:56 AM, Sletta Gunnar <Gunnar.Sletta at digia.com> wrote:
> Multisampling is a property of the OpenGL context of the window and it must be set before it is created, that is before the QQuickView is shown the very first time. Once the OpenGL context is created, you can't change it.
>
> On Jun 7, 2013, at 9:32 PM, Mark <markg85 at gmail.com> wrote:
>
>> Hi Gunnar,
>>
>> That's an interesting solution!
>>
>> But how do i get a QQuickView from within a custom component that
>> inherits from QQuickItem?
>> My component is meant to be a QML Plugin, not a standalone QML application.
>>
>> Cheers,
>> Mark
>>
>> On Fri, Jun 7, 2013 at 8:12 AM, Sletta Gunnar <Gunnar.Sletta at digia.com> wrote:
>>> You need to set the surface format of your QQuickView.
>>>
>>> QQuickView view;
>>> QSurfaceFormat format = view.format();
>>> format.setSamples(16);
>>> view.setFormat(format);
>>> view.show();
>>>
>>> If your graphics hardware supports multisample antialiasing, you will now have antialiased geometry.
>>>
>>> As the scene graph might require depth/stencil buffer for its renderer, it is a bit important that you inherit the original surface format from the view instead of creating a new one from scratch.
>>>
>>> qmlscene supports this out of the box by passing --multisample as a command line option.
>>>
>>> cheers,
>>> Gunnar
>>>
>>> On Jun 7, 2013, at 12:12 AM, Mark <markg85 at gmail.com> wrote:
>>>
>>>> Hi,
>>>>
>>>> Another day, another question :)
>>>> Don't worry, i plan on making a big blog about everything. This
>>>> information won't get lost.
>>>>
>>>> So today i'm trying to draw a custom shape by setting vertices. More
>>>> specifically a GL_QUAD_STRIP.
>>>>
>>>> It looks like this (obviously just testing data)
>>>>   QSGGeometry *geometry = new
>>>> QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 8);
>>>>   geometry->setDrawingMode(GL_QUAD_STRIP);
>>>>   geometry->vertexDataAsPoint2D()[0].set(0, 100);
>>>>   geometry->vertexDataAsPoint2D()[1].set(0, height());
>>>>   geometry->vertexDataAsPoint2D()[2].set(width() / 4, 80);
>>>>   geometry->vertexDataAsPoint2D()[3].set(width() / 4, height());
>>>>   geometry->vertexDataAsPoint2D()[4].set(width() / 2, 110);
>>>>   geometry->vertexDataAsPoint2D()[5].set(width() / 2, height());
>>>>   geometry->vertexDataAsPoint2D()[6].set(width(), 150);
>>>>   geometry->vertexDataAsPoint2D()[7].set(width(), height());
>>>>
>>>>   QSGFlatColorMaterial *material = new QSGFlatColorMaterial;
>>>>   material->setColor(QColor(255, 0, 0, 128));
>>>>
>>>>   QSGGeometryNode *n = new QSGGeometryNode;
>>>>   n->setGeometry(geometry);
>>>>   n->setFlag(QSGNode::OwnsGeometry);
>>>>   n->setMaterial(material);
>>>>   n->setFlag(QSGNode::OwnsMaterial);
>>>>
>>>> So roughly the same as the example [1] only with a quad strip.
>>>> However, this ends up looking a bit aliased.. So the question is: How
>>>> do i get this anti-aliased?
>>>>
>>>> I did read something about multisampling and setting the number of
>>>> samples, but i can't find such a function in any of the used classes..
>>>>
>>>> Kind regards,
>>>> Mark
>>>>
>>>> [1] http://qt-project.org/doc/qt-5.0/qtquick/qsggeometrynode.html
>>>> _______________________________________________
>>>> Interest mailing list
>>>> Interest at qt-project.org
>>>> http://lists.qt-project.org/mailman/listinfo/interest
>>>
>



More information about the Interest mailing list