2016-01-07 14 views
5

QMLでQQuickFramebufferObjectを使用してOpenGLコードを描画しています。 QMLを使ってOpenGLを行う方法をいくつか見つけました。(QtのSquircleの例では)すべてのOpenGLをすべてのものの下に描画することですが、上記の両方のQMLオブジェクトを必要とするためQQuickFramebufferObjectメソッドを使用していますOpenGL描画オブジェクトの下に表示されます。QQuickFramebufferObjectの背景を透明に設定できますか?

すべてのOpenGLコードが正常に動作します。 QQuickFramebufferObjectの背景は透過的である必要があり、下にあるQMLオブジェクトを見ることができます。 (私のQQuickFramebufferObjectは抽象的な形状を描画します)しかし、QQuickFramebufferObjectは、画面上の四角形をブロックして、下に何も表示していないようです。私は試しました

glClearColor(0.0, 0.0, 0.0, 0.0f); 
glClear(GL_COLOR_BUFFER_BIT); 

背景は透明ですが、代わりに私はちょうど白い矩形を取得します。 FBOのレンダリングを全部呼び出すのをスキップしても、それはまだすべてを描画しているので、OpenGLコードの外で、QMLがFBOをどのように処理するのかと思っています。私が欲しいもの

私は何を得る

What I want

enter image description here

+1

QSG_VISUALIZE = overdrawオプションを指定して起動すると、その矩形が不透明かどうかを確認できます。おそらく、QQuickFramebufferObjectメソッドはQSGSimpleTextureNodeになります。おそらく、透明性を有効にする方法があります。十分でない場合は、QSGGeometryNodeを使用してアイテムレンダリングを実装する必要があります。そのため、テクスチャ付きのビルボードを経由せずにジオメトリを直接レンダリングします。 – Velkan

答えて

2

私はそれはFBOと間違いありませんでしたが、Rectangleが、それを保持して、それを考え出しました。私は他のオブジェクトのホルダーとしてしか使用していないので、私はその色を設定しません。これはデフォルトでは白で透明ではないようです。私はそれを色に変えました: "透明"と今はすべてが順調です。

+0

アイテムにボーダーや背景を必要としないときは、 'Item'を' Rectangle'よりも使う方が良いことに注意してください。 –

関連する問題