OpenGLワイヤフレーム


18

いいえ、glPolygonModeを探していません。私はメソッドを探しています。おそらく、レトロスタイルのワイヤフレームルックを生成するGLSLシェーダーです。助言がありますか?

Vector Tanksのようなもの。

http://toucharcade.com/wp-content/uploads/2009/01/picture-111-300x204.png

できれば、ソリューションはOpenGL ES 2.0でも動作するはずです。

ヒントとポインター(NULLでない限り)はありがたいです!

回答:



5

Daveが言ったように、テクスチャを使用することを強くお勧めします。苦痛かもしれませんが、パフォーマンスはずっと良くなると思います。

エッジ検出アルゴリズムを検索してみてください。(わずかな透明度のために)単色と中程度のアルファ値を持つ頂点カラーリングを使用してメッシュを作成し、エッジ検出シェーダーを使用すると、十分に見える場合があります。まったく同じではありませんが、もっと好きになるかもしれません。またはそうでないかもしれません。

それ以外の場合、2パスソリューションを見て、半透明のポリゴンを描画し(再び、頂点の色を中程度のアルファ値の単色に設定します)、glPolygonMode(GL_LINE)を設定し、必要に応じてglLineWidthを調整します(おそらくオブジェクトに基づいて)距離)、ポリゴンを再度描画します。

それは少し遅れており、私はこれを読むのに苦労していますが、フォーラムの議論はこのPDF:シングルパスワイヤフレームレンダリングを指します。関係ない場合はおologiesび申し上げます。


+1:どうにかしてテクスチャを生成する方法を見つけた方が簡単でしょう。後のOpenGL ESターゲティング(iStuff)のため、glPolygonModeを使用できません。
コーネルKisielewicz

2

おそらくあなたが望んでいるものではないことはわかっていますが、Vector Tanksはテクスチャモデルを使用しているように見えます。テクスチャはワイヤーフレームの外観を与え、シェーダーをサポートしないiPod touchで実行されます。


私は知っていますが、Subversionの写真を貼り付けることもできますが、テクスチャをまったく使用しません(AFAIK)
Kornel Kisielewicz

2

私が見た唯一の方法は、Tron 2.0のような高解像度で、ほとんど黒のテクスチャを使用することです。そのテクスチャは、ほぼ例外なく、太い色付きの境界線を持つフラットブラック、または単純なパーリンノイズテクスチャのいずれかです。

彼らはいくつかの簡単な後処理を適用し、グロー効果を実現しました。


+1:私は記事を知っていましたが、思い出してくれてありがとう-それは確かに良い記事です(そして、私が持っていた2番目の問題を解決します-輝きます)。
コーネルKisielewicz

1

ピクセルシェーダーである種の単純な距離関数を試すことができます。おそらく重心座標のようなもの(頂点に異なるRGBを保存すると、ラスタライザーがほとんどの作業を行います)。

次に、ピクセルシェーダーは、現在のピクセルがポリゴンのどこにあるか(頂点の近く、エッジの近く、または中央)について必要な情報を取得します。

しかし、実際にはテクスチャーを作成する方が簡単だと思います。


1

これについてはどうですか:モデルを用意し、アウトラインとして表示するエッジをベベルします。作成された面を明るい不透明な緑で色付けし、古い面はすべて暗い半透明の緑にします。

これには、ピクセルシェーダーをまったく使用する必要がありません。(実際、テクスチャもありません。顔の色だけです。)一部のモデルの前処理が必要です。これは問題になる場合もあれば、そうでない場合もあります。

傾斜面がビューに垂直な場合、アウトラインを表示できません。これが気になる場合は、面取りした表面を少し押し出して、ベベルがあるように押し出しを着色することができます。さまざまな角度の面取りと押し出しを試して、細い線と太い線を作成できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.