問題タブ [off-screen]
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.
c++ - 1 つのフラグメント シェーダーの 2 つのテクスチャのうちの 1 つに対する OpenGL の選択的なオフスクリーン レンダリング
回転マニピュレータ用の glsl シェーダを作成しています。私はAutodesk Mayaスタイルを目指しています。xyとzの回転のそれぞれに3つの軸があり、カメラの前方軸に沿った回転に1つの軸が4に等しいです。
ユーザーは、ビューポートで直接選択することにより、操作の結果を特定の軸に制限することができます。
オブジェクトの選択を有効にするために、レンダー ターゲットとして 2 つのテクスチャがアタッチされたカスタム フレームバッファを使用しています。1 つは色用、もう 1 つはセレクション ID 用です。
問題は、これらの 4 つの軸を GL_LINES モードで描画すると、ユーザーにとって問題が発生することです。線が細くきれいに描かれている場合、ユーザーはそれらを非常に正確にクリックして特定の軸をアクティブにする必要があります。これは、軸の適切な object_id を持つピクセルを正確に選択する必要があるためです。2 つの別々の図面を作成することで、彼の生活を楽にしたいと考えています。カラー出力用の細い線と objectid 出力テクスチャ用の 3 倍の幅の線。
私はopenGLの初心者です。今、私の単純なロジックは、フラグメント シェーダーにカラーまたは objectid バッファーのどちらに描画するかを指示するブール値のユニフォームを渡しています。
渡されたrender_targetセレクターを使用した描画コマンドは次のとおりです
そして、ここにフラグメントシェーダーがあります:
そのために使用しているロジックは、見苦しく最適化されていないように見えるので、本当に好きではありません。まず、シェーダーを 2 回実行する必要があり、かなり複雑なジオメトリ シェーダーがあり、そこで円を生成するためです。2 つ目は、私のフラグメント シェーダーには多数の if else があり、gpu は分岐を好まないと言われたためです。
質問 1 同じことを行うシェーダーを作成する別の適切な方法は何ですか? 質問 2 はより技術的なものです。

ここでは、これら 2 つの glDrawArrays 呼び出しで得られるもののスクリーンショットを提供します。ご覧のとおり、カラーバッファーに黒い輪郭があります。問題は、framgent シェーダーが out_objectid ターゲットのレンダー コードを実行するときに、下の図のようにいくつかのダーティ ランダム情報を out_color に書き込むため、out_color=vec4(0,0,0,0 で上書きする必要があったことです。 )。少なくともそれはきれいな黒を与えます。
質問 2. 私の間違いはどこですか? objectid ブロックが out_color に書き込まれないようにするにはどうすればよいですか? ありがとう更新:提案されたことに従って、この種の効果が得られました。openGL の内部で何が起こっているのかわかりません。まだ GL_DEPTH_COMPONENT に書き込み、そのような結果につながる未定義の深さテストを行っているようです。マニピュレータは常に上にあるため、この描画呼び出し中に深度書き込みは必要ありません。追加のアドバイスをいただけるかもしれません。
描画コード
qt5 - Qt: QML ウィンドウをバッファにレンダリングする
私のコードは次のようになります。
私が提供するバッファにすべてをQtでレンダリングさせる方法を教えてください。OpenGL は避ける必要があります。QWebPage でこれを機能させることもできますが、これは私にははるかに難しいようです...
c++ - FBO + テクスチャ: ジオメトリ データのオフスクリーン生成による奇妙な結果
最初の段階で長方形メッシュの頂点の位置を生成し、それらを 2D float テクスチャに格納する 2 つ以上のパス レンダリングがあります。シェーダーは次のようになります。
バーテックス:
断片:
出力 2D float テクスチャは、長方形の頂点メッシュの寸法にサイズ変更され、FBO のカラー アタッチメントの 1 つにバインドされます。したがって、FBO サイズはテクスチャ サイズから継承されます。
ビューポートは、長方形メッシュのサイズと同じ寸法になるように設定されています。
これで、ビューポートとテクスチャの両方が同じサイズになりました。
... テクスチャ座標は 0.0、0.0 から 1.0、1.0 まで変化するため、出力頂点の位置は vec3(0.0, 0.0, 0.0) から vec3(1.0, 1.0, 0.0) の範囲である必要があります。
奇妙なのは、フラグメント シェーダーからの出力頂点位置の x 値と y 値がゼロ以外から始まり、それらの最大値が 1.0 未満であることです。2 x 2 メッシュの場合: 左下: vec3( 0.25, 0.25, 0.0 ) ( 0.5 / mesh_side = 0.5 / 2 = 0.25 ) 右上: vec3( 0.75, 0.75, 0.0 )
16 x 16 メッシュの場合: 左下: vec3( 0.03125, 0.03125 , 0.0 ) ( 0.5 / mesh_side = 0.5 / 16 = 0.03125 ) 右上: vec3( 0.96875, 0.96875, 0.0 )
頂点シェーダーの位置を vec3(-1.0, -1.0, 0.0) から vec3(1.0, 1.0, 0.0) に設定すると、ビューポート全体に「描画」していることになります。頂点シェーダーの位置を変更すると、フラグメント シェーダーからの出力値が異なります。
上記のコードの何が問題で、描画が 0.5 / rect_mesh_side_length から始まるのはなぜですか?
最初に投稿された質問は次のとおりです。
助言がありますか?
opengl-es - egl pbuffer オフスクリーン レンダリングはバックグラウンドのみを読み取ることができます
pbuffer サーフェスで egl オフスクリーン レンダリングを実現したいと考えています。しかし、読み返すことができるのは背景色だけです。私が描いたものは見えません。
たとえば、画面を青でクリアすると、glReadPixel を介して読み取られた画像は青色の画像だけで、他には何もありません。
本当にアイデアが尽きた
video - クロム埋め込み mp4 リクエストがキャンセルされました
アプリケーションで Web ページを表示するために、オフスクリーン モードで CEF を使用しています。これまでに試したすべてのサイトと機能は、ビデオを試すまで問題なく機能していました。Youtube や他のサイトは正常に動作しますが、MP4 を自動再生する小さなページを作成しましたが、動作しませんでした。
HTML をローカル ディスクに保存し、その横に Some.mp4 を配置しました。Chrome でファイルを開くと、正常に動作し、ビデオが再生されます。
ただし、CEF を介してアプリケーションでページを開いても何も起こりません。ビデオのフレームだけを取得します。devtools の問題を詳しく調べると、mp4 ファイルのリクエストがキャンセルされていることがわかりました。
任意の助けをいただければ幸いです。
.net - Awesomium 1.7.5 webView.ExecuteJavascript が機能しない
Offscreenブラウザを使用しました。次に、htmlを作成しwebView、サブスクライブしてロードしました。DocumentReady
私の方法DocumentReady:
私のHTML:
そして、このJavaScriptは機能しませんでした。私は何を間違えましたか?jsがhtmlにある場合にのみjsを実行することができました。Awesomium 1.7.5 を使用しました。
お願い助けて :(
opengl - 現在の実装でサポートされている正しい色やステンシル レンダリング可能な内部形式を取得するにはどうすればよいですか?
OpenGL FBO を使用してオフスクリーン レンダリングを行う。FBO を作成するためのメイン コード フラグメントを以下に示します。
上記のコードは、一部のグラフィック ハードウェアでは機能しますが、他のハードウェアでは機能しません。また、glCheckFramebufferStatus() で報告されるエラーは GL_FRAMEBUFFER_UNSUPPORTED です。これは、色またはステンシル形式の内部形式がレンダリングできないことを意味します。
コードが実行されるグラフィック ハードウェアでサポートされている正しい色またはステンシル レンダリング可能な内部形式を取得するにはどうすればよいですか? または、異なる OpenGL バージョンやハードウェア実装間でコードを移植可能にするにはどうすればよいですか?
私の研究: