私は3DレンダリングのためにOpenSceneGraphでQQuickControls 2(SwipeView)を使用しています。統合にはQQuickFramebufferObjectを使用してください。QQuick + OpenSceneGraphフリッカー
私はSwipeViewを導入して以来、私は私のGUIのいくつかのちらつきを観察します。
私は文書の年齢を探しています(これはおそらく数週間で要約されます)。なぜこのちらつきがあるのかはまったく分かりません。
Here is a video of the faulty behavior(フリッカリングは約20秒で開始します)。
class OsgRenderer : public QQuickFramebufferObject::Renderer
{
public:
explicit OsgRenderer();
QOpenGLFramebufferObject *createFramebufferObject(const QSize &size) LC_OVERRIDE;
void synchronize(QQuickFramebufferObject* item) LC_OVERRIDE;
void render() LC_OVERRIDE;
protected:
friend class OsgWindow;
OsgItem* m_osgItem;
};
void OsgRenderer::render()
{
assert(m_osgItem);
if (!m_osgItem->getViewer())
return;
// Without this line the model is not displayed in the second
// and subsequent frames.
QOpenGLContext::currentContext()->functions()->glUseProgram(0);
// Ask OSG to render.
m_osgItem->getViewer()->frame(); // WARNING: non-blocking (executed in a thread of its own - in a thread-safe way).
// Reset OpenGl state for QtQuick.
m_osgItem->window()->resetOpenGLState();
}
ことから来ることができる場所の任意のアイデア:
そして、ここでは私のレンダリングコードですか?
QQuickFrameBufferObjectで 'update'を呼び出すと、タイマーを使って頻繁にシーンを更新しますか?私は、ちらつきの理由は、Qt Quickが自動的にバックグラウンドアイテムの更新頻度を減らすためです。 –
@ジミー:QQuickFramebufferObject :: update()を実際に呼び出します(QQuickFramebufferObjectの外部からは、内部ではなく - とにかく大きな違いがあります)。あなたが言及しているこの更新頻度の差異、それがどのように私に影響するのか、そして私が何をすることができるのか、私は理解していません。何か案が? – arennuit