問題タブ [depth-testing]

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.

0 投票する
2 に答える
944 参照

ios - iOS / Core-Animation: 12 枚の重なり合ったカードが円になっている

円の中に 12 個のオブジェクトを配置して、それぞれが反時計回りの隣のオブジェクトと重なるようにしようとしています。

このようなもの:

ここに画像の説明を入力

問題は、描画順序だけに頼ると、そのうちの 1 つが常に完全に上に表示されることです。この場合、12 時の位置にある赤いものです。

使ってみました

垂直軸を中心に回転させて、片側を隣の側の後ろに押し込もうとしていますが、これは機能していません。

これは、コア アニメーションがデプス テストをサポートしていないためだと言われています。

GLに侵入せずにこれを行う方法はありますか?

0 投票する
1 に答える
2345 参照

ios - GLKit での深度テスト

私は OpenGL/GLKit が初めてで、深度テストに問題があります。下の図は、5 つのビームが交差しているポストを示しています。それらはすべて中央 (ポストの内側) で集まりますが、ご覧のように、隠されるはずの梁の部分がまだ見えています。それらは狂ったようにちらつき、ビームが画面上で重なるようにビューを変更すると同じことが起こります。glEnable(GL_CULL_FACE) を使用しないと、各シェイプ内で発生します。つまり、背面ポリゴンの背面が描画され、前面ポリゴンの前面と干渉します。

ここに画像の説明を入力

関連すると思われるコード スニペットを次に示します。頂点と視野角の設定に関する内容は省略しています。うまくいけば、誰かが問題を認識し、そこに特効薬があるでしょう.

私のビューコントローラで

Beam.mで

私はこれに関して非常に新しく、経験が浅いことを完全に認めているので、アプリの構成が不十分である場合は、建設的な批判に対して非常にオープンです.

乾杯、クレイグ

0 投票する
2 に答える
2875 参照

opengl - OpenGLで動作する深度テストを取得できません

SFMLを使用してウィンドウを作成します。

このスクリーンショットでは、立方体はピラミッドの後ろにあるはずですが、機能しません。 スクリーンショット

これが私が使用した最小限のコードです:

さまざまな深度関数、GL_LESS、GL_EQUALを試しましたが、それらすべてを試しました。また、さまざまな場所での深度テストを有効または無効にしても、何も機能していないようです。

私はMacOSX 10.7(Lion)を実行していますが、それが重要かどうかはわかりませんが、アップグレードする前はこのようなことで問題はなかったようです。

0 投票する
2 に答える
2608 参照

qt - QtでのOpenGL深度テストが機能しない

フォーマットを設定します:

コンストラクター内。

次に、initializeGLでdepthTestingをオンに設定します。

paintGLで、デプスバッファをクリアします。

以前はより少ない頂点で動作していたことを覚えているので、depthbufferが処理するには多すぎる頂点を使用している可能性があります(?)。私は32*32 * 32のボクセルを持っており、ほとんどの場合半分の時間で描画されるため、98304クワッドです。

ただし、深度テストはまだ機能せず、実行順にクワッドが表示されます。

0 投票する
2 に答える
4158 参照

java - OpenGL を使用した 2D LWJGL - 2D テクスチャをレイヤリングするための深度テストを有効にしますか?

深度テストを有効にするには、OpenGL の init メソッドに何を追加する必要がありますか? また、それを実際にテクスチャ レイヤリングにどのように使用しますか?

glOrtho の最後のパラメーターを -1 よりも極端なものに拡張する必要があり、もちろん glEnable 深度テストも必要です。それを使用するには、glVertex の 3 番目のパラメーターを 0 以外の値に変更して、他のテクスチャの前/後ろに送信することしか考えられません。

私はこれを試してみましたが、いまいましいテクスチャは表示されません。xD 何かが欠けているに違いない。


編集: RE: ティムの応答

画像のzを-1よりも極端にすると、画面が真っ黒になることはありませんでした。

0 投票する
1 に答える
131 参照

opengl - 特定の範囲の深度テストを行うにはどうすればよいですか?

特定の範囲の深さをテストする最も一般的/最も簡単/最速の方法は何ですか?

pass if (currentDepth-offset < newDepth && newDepth < currentDepth)

  • currentDepth := 深度バッファの値
  • オフセット := 定数 (コンパイル時に認識され、すべてのフラグメントで同じ)
  • newDepth := フラグメントの深さ

理想的には、関数 glDepthFunc(...) がより柔軟になります。

0 投票する
1 に答える
342 参照

c - 立方体を描画するときの OpenGL の奇妙な動作

このコードで立方体を描くと

私は奇妙なcudeの絵を手に入れます:

img1

img2

gluLookAt() がなくても、奇妙な描画になってしまいます。

奇妙なことに、Python OpenGL プロジェクトでまったく同じコードを使用しましたが、問題はありませんでした。Cエラーのようですか?

また、最初の 2 つのクワッド (緑とオレンジ) がまったく描画されていないようです。

0 投票する
2 に答える
2248 参照

cocos2d-iphone - cocos2d-iphone で 2D プロジェクションを有効にする正当な理由は何ですか?

cocos2d-iphone では、デフォルトの投影タイプは「3D」投影です。ただし、次のように投影を「2D」に設定することもできます。

舞台裏では、3D プロジェクションは透視投影を使用しますが、2D プロジェクションは OpenGL 正投影です。これら 2 つの投影モードに関する技術的な詳細は、ここで確認できますが、それは私が興味を持っていることではありません。

cocos2d ユーザーにとっての 2D プロジェクションの利点と欠点は何ですか? 2D プロジェクションに切り替える正当な理由は何ですか?

個人的には、2D プロジェクションを使用して、等角タイルマップに深度バッファリングを使用できるようにしました。アイソメ タイルマップでは、タイルマップ上のタイルとオブジェクトの正しい z 順序付けのためにこれが必要です。

また、非タイルマップ プロジェクトで深度バッファリングを使用した 2D プロジェクションを使用して、頂点 Z プロパティを介して完全な z オーダー制御を取得しました。このプロジェクトでは、オブジェクトの頂点 Z が Y 座標に基づく疑似アイソメ表示を使用しました。

これは、2D プロジェクションを使用して vertexZ プロパティを使用できるようにするためだけに使用してきたことを意味します。これには、深度バッファリングも有効にする必要があります。2D プロジェクションに切り替えたいと思う他の理由はありますか?

0 投票する
1 に答える
1622 参照

opengl-es-2.0 - glreadpixel gl_depth_component が 0 を返す?

立方体と線の交点の解を探しています。だから私は使った

zz を表示しましたが、結果は0でした。キューブに触れたときに(実際には2D画面で)キューブの深度バッファ値を取得するにはどうすればよいですか。私はGLES20とAndroid APIレベル15を使用しています。私のコードは以下です。

ところで、色の選択はうまくいきます。

ありがとう!

0 投票する
1 に答える
1413 参照

opengl - OpenGL を使用した深度マップの読み取り

2 つの画像の深度マップを抽出し、.tif ファイルとして保存しました

今、openGLを使用して、深さに応じてこれら2つの画像を結合したいと思います

そのため、.tif ファイルから各画像の深度を読み取り、その深度を使用して深度の高いピクセルを描画したいと考えています。

深度マップをより明確にするために、この リンクのような2つの画像があります

つまり、前の画像があり、この画像と結合したいとします

リンク

私の質問は、.tif ファイルからこの深さを読み取る方法です