問題タブ [stencil-buffer]
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.
opengl - この単純な OpenGL/JOGL ステンシル テストの何が問題になっていますか?
ステンシル バッファの使用方法を学んでいますが、これまでのところ、単純な例でさえ機能させることに成功していません。glStencilOp実際、とのパラメーターのさまざまな組み合わせを試してみましglStencilFuncたが、ステンシル バッファーが機能しているという証拠はまったく見つかりませんでした。グラフィックス ドライバ (Mac Pro、Mac OS X 10.8.5) または JOGL (2.0.2) がサポートしていないのではないかと疑い始めています... または、本当に基本的なものが欠けています。
これが私が見ているものです:

緑のひし形で切り取られた赤いひし形が見られることを期待しています。私は何を間違っていますか?
c++ - glreadpixels ステンシル バッファが常に GL_INVALID_OPERATION をスローする
ステンシルについて調べてみました。現在、ステンシル値でいくつかのボックスを描画し、値を読み取っています。GL_STENCIL_INDEX で glReadPixels を呼び出すたびに、GL_INVALID_OPERATION が返されます。問題のコードは次のとおりです。
5 つの異なるデータ形式、3 つの異なる glPixelStore モードを試し、glReadPixel エラーのリストを7 回確認しました。(はい、OGL 2.1) STENCIL_INDEX を DEPTH_COMPONENT に変更すると、正常に動作します。確認できないのは、ステンシル バッファーがあるかどうかだけです。不足している初期化や、それを確認するための glGet はありますか?
関連する可能性のある情報: Win7 x64 SP1 | ASUS GTX650Ti | VS2012 アルティメット
原因となっている場合に備えて、ボックスを描画する関数のコードを次に示します。
OGL が明らかな理由もなく間違ったことをしたのはこれが初めてではありませんが、これはインターフェースをコーディングするという私の計画を破ります。
c++ - ステンシル バッファ & ステンシル テスト
私が読んだ本によると、ステンシルテストは、参照値をピクセルに対応するステンシルバッファの値と比較することによって達成されますが、本の1つでは次のように述べられています:
A mask is bitwise AND-ed with the value in the stencil planes and with the reference value before the comparison is applied
ここで、マスクである 3 番目のパラメーターが表示されます。これはステンシル バッファーに関連するマスクですか、それとも openGL 自体によって生成された別のパラメーターですか??
誰かが比較プロセスと、valuesこのプロセスで役割を果たしている を説明できますか??
c++ - OpenGL ステンシル機能の DirectX 11 への移植
OpenGL で記述されたレンダリング コードがいくつかあります。ステンシル バッファーを使用してクリッピングを実装します。
問題は、このコードを DX11 に移植する必要があることです。MSDN の例といくつかの素晴らしいチュートリアルを見ました。私はこのロジックで終わります:
さて、ステンシルをターゲットまたは入力として設定する方法がわかりません。
MSDN は次のように述べています。
と
これらの呼び出しを正しく理解していれば、最初の呼び出しでステンシル状態を設定し、2 番目の呼び出しで pDSV を追加の「アタッチメント」としてレンダー ターゲットにバインドします。あれは正しいですか?
もしそうなら、これは私が期待するように機能しますか?
すべてのヘルプまたは有用なヒントを前もって感謝します。
opengl - DirectX と OpenGL 間のステンシル オプション
エミュレーションレイヤーを実装しています。ステンシルのものを除いて、それ以外の場合はすべて機能します(私の影が重なっています)。
私は物事を論理的に行っているかどうか疑問に思っています-適切な結論/仮定を作成している場合:
以下は上記で使用されます。glAble() は単に glEnable/glDisable のラッパーです。
c# - XNA、アルファ テスト、ステンシル バッファー、および 2 つの異なるプロジェクション
私の質問は、別のプロジェクションのステンシル バッファーを別のプロジェクションのマスクとして使用することです。これにアプローチする方法がわからないので、先に進んでいくつかのコードを書きます。
よし、Camera.Projection を最初の方程式から取り出して、スクリーン座標空間にレンダリングすれば、これは機能する。ただし、これはカメラ プロジェクションでは機能しません。私の理解では、レンダリングは、画面空間で行われる後者の描画呼び出しと比較して、「遠く離れた」ステンシル バッファーに対して単純に行われるということです。
最初の操作のステンシルを 2 番目の操作のマスクとして使用するにはどうすればよいですか?
opengl - ステンシル バッファーで GPU フラグメントのストールを防ぐことはできますか?
フラグメントシェーダーでいくつかの重い計算があり、これは複数のパスで行われます。ただし、一部のフラグメントでは、1 回のパスだけで結果が準備できます。また、別のフラグメントでは、さらに多くのパスが必要です。
このため、しばらくすると多くのフラグメントが破棄されますが、ご存知のように、これらはおそらく他のすべてのフラグメントが完了するまでスレッドが停止しています。
私は考えていた。一部のopenglバージョン以降、フラグメントシェーダからステンシルバッファへの書き込みが可能になりました。特定のフラグメントで別のパスが必要ないことがわかっている場合は、ステンシル バッファーに書き込むことができます。次のレンダリング パスでは、ステンシル テストをオンにして、これらのフラグメントが再度計算されないようにすることができます。
私の質問: これにより、失速の問題を防ぐことができますか? これらのスレッドは、まだ処理されていないフラグメントを実行するために利用可能になり、各パスが次のパスのフラグメントを除去するときに、各パスが前のパスよりも高速になりますか?
つまり、計算する必要がある 16x16 のテクスチャがあるとします。最初のパスでは、256 個のフラグメントを計算する必要があります (16 個のコアがあるとします。これは 16 サイクルを意味します)。たとえば、この最初のパスの後、128 個のフラグメントについてさらに計算する必要があることがわかっていて、ステンシル バッファーで実行されたフラグメントをマークした場合、この 2 番目のパスは 2 倍の速度で実行されます (つまり、16 で 128 個のフラグメント)。コア = 16 ではなく 8 サイクル)?
c++ - OpenGL ステンシル バッファーの凹面ポリゴン
私はこの例をやろうとしています。
それがどのように機能するのかまだ理解できず、コードがどのように見えるかを視覚化するのに苦労しています.
私が見つけることができると思う最も近いこの投稿に出くわしました。
レッドブックのリンクから、「2パスアルゴリズム」を実行して目的の出力を得るにはどうすればよいですか? GL_INVERTピクセルが偶数回カバーされているかどうかを使用して確認するにはどうすればよいですか?
ステンシルが凹面ポリゴンに対してどのように機能するかをなんとか理解できましたが、ポリゴンが正しくレンダリングされていないことが問題です。
http://img.photobucket.com/albums/v442/ardo/ScreenShot2013-12-30at24155PM.png
これを描いている場所は、次のように設定されたフレームバッファにあります。
次に、私の描画コードは次のとおりです。
マルチサンプリングのセットアップ方法はこちらです(これは図面が書かれる前です)
そして私のブリットコール:
c++ - OpenGL Stencil Buffer はどの程度サポートされていますか?
現在、OpenGL のハードウェアによって Stencil Buffer はどの程度一般的にサポートされていますか?
シェーダーよりもサポートされていますか?
ハードウェアがサポートしていない場合、ソフトウェアでエミュレートされますか?
残念ながら、この件に関する確かなデータを見つけることができませんでした...ステンシルは古い技術であるため、どこでもサポートされていると思います. ただし、古いテクノロジであるため、フラグメント シェーダーを優先して、新しい GPU ハードウェアから段階的に廃止される可能性があります。
私のシナリオでは、8 ビットのステンシル バッファーを 24 ビットの深度バッファーと組み合わせて使用し、VBO と共に使用します (それが何かに影響する場合)。ステンシル バッファを使用すると、ステンシル サポートがない場合、作成中のゲームをプレイできなくなるのではないかと心配です。彼らが少なくともソフトウェアでステンシル効果をエミュレートできれば、理想的ではありませんが、私の恐怖を和らげるには十分でしょう.