問題タブ [texturing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - QQuickFramebufferObject: 親が「visible: false」であるアイテムをテクスチャ ソースとして使用すると、何も表示されない
これは Canvas3D では正常に機能しますが、QQuickFramebufferObject では機能しません。
私のコード
テストケースは、Qt にバンドルされている textureinsgnode サンプル アプリに基づいています。私の作品は派生作品であるため、最初にライセンス条項をここに投稿する必要があります。
では、実際のソースを。
main.cpp :
main.qml :
visible: falseinのコメントをmain.qml外すと、QQFBO は何も表示しなくなります。それはなぜですか、そして適切な解決策は何ですか?
opacity: 0代わりに設定しようとしましvisible: falseたが、これは同じ問題を引き起こします。
layer: trueで別のShaderEffectSource要素に置き換えようとしましたhideSource: trueが、 を設定visible: falseする必要ShaderEffectSourceがあり、同じ問題が発生します。
x: -10000; y: -10000代わりに設定も試しましたが、うまくいきますvisible: falseが、ハックです。
android - OpenGL ES 2.0 FrameBuffer が黒い画面を返す
よし、FBO を使用してテクスチャにレンダリングし、後でこのテクスチャを使用してクワッドに表示するアプリケーションを作成しました。
これは、FBO とテクスチャを初期化するために使用しているコードです。
(1. 内のコードonDrawFrame())
問題はどこにコードを入れればいいのかわからないので、まずはonDrawFrame()メソッドにコードを入れていきます。これを行うと、テクスチャリングが正常に機能し、必要な結果が得られます。しかし、フレームごとに新しい FBO とテクスチャを作成しているため、しばらくするとアプリケーションが遅れ始め、最後にエミュレータがクラッシュします。
(2. 内のコードonSurfaceChanged())
その動作に気づいた後、コードをonSurfaceChanged()メソッドに入れることにしました。今回はアプリケーションはクラッシュしませんでしたが、テクスチャ全体が黒くなっています。テクスチャをクリアするか、その上に白いクワッドを描画しようとしましたが、何も機能しませんでした。そして、エラーを取得しようとすると、GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER)またはGLES20.glGetError()すべてが正常であると表示されます。
また、メソッド内のコードをonDrawFrame()if 句で囲み、一度だけ実行されるようにしました。その結果、黒いテクスチャーも得られます。
(3.onDrawFrame()とのコードonSurfaceChanged())
私が最後に試みたのは、コードを両方のメソッドに入れることでした。onDrawFrame()テクスチャを正常に動作させるコードラインが見つかるまで、メソッドのコードを削減したかったのです。しかし、アプリケーションを起動すると、クワッドがちらつき、黒いテクスチャから適切なテクスチャに変わりました。
1 つの方法で動作するため、テクスチャの表示に問題はありません。コードに深度バッファを追加しようとしましたが、結果は同じです。私のアプリケーションでは必要ないので、コメントアウトしました。
何が起こっているのか言える人はいますか?誰かが動作するアプリケーションを持っているが、私の何が問題なのかわからない場合は、Android プロジェクトをダウンロードできるチュートリアルが見つからなかったので、その人がプロジェクトをアップロードできればいいと思います。