[Interest] QML / OpenGL / scene graph problem.

Sean Harmer sean.harmer at kdab.com
Sun Dec 1 17:24:48 CET 2013


Hi,

On 01/12/2013 16:00, Guido Seifert wrote:
> Hi and help!
>
> I have a problem here. Unfortunately I am not very experienced with OpenGL and need a hint in which
> direction I have to look to fix the following problem.
>
> I took the HelloGL code from the examples and wanted to make it into a QML widget. I cannot my
> experiments are a total failure, but unfortunately they are far from a total success also.
>
> https://imageshack.com/i/59c6eip
> https://imageshack.com/i/jmg97op

Those images are fairly typical of artefacts you get when depth 
testing/writing is not enabled. Be aware that the final phase of Qt 
Quick 2 rendering is typically to render transparent objects using alpha 
blending. To do this QQ2 renders these items from back to front with 
blending enabled to get the correct results. However, the important part 
of this is that the depth buffer is disabled for writes.

This means that when you get to render your object, it is quite likely 
that depth writes are still disabled. I see from your code that you are 
enabling depth testing. However, without any sane values in the depth 
buffer this won't work. To enable depth writes, try calling 
glDepthMask(true) before you render any geometry.

Also please note that there is a new helper function to return the 
OpenGL state to it's default (i.e. to undo the changes that the QQ2 
renderer makes). The function is:

http://doc-snapshot.qt-project.org/qt5-release/qquickwindow.html#resetOpenGLState

Amongst other things, this function also enabled depth writes as 
suggested above. Whether you choose to use this helper or to only alter 
the state that you need is your choice.

Hope this helps,

Sean


-- 
Dr Sean Harmer | sean.harmer at kdab.com | Senior Software Engineer
Klarälvdalens Datakonsult AB, a KDAB Group company
Tel. Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
KDAB - Qt Experts - Platform-independent software solutions




More information about the Interest mailing list