いいえ、glPolygonModeを探していません。私はメソッドを探しています。おそらく、レトロスタイルのワイヤフレームルックを生成するGLSLシェーダーです。助言がありますか?
Vector Tanksのようなもの。
できれば、ソリューションはOpenGL ES 2.0でも動作するはずです。
ヒントとポインター(NULLでない限り)はありがたいです!
いいえ、glPolygonModeを探していません。私はメソッドを探しています。おそらく、レトロスタイルのワイヤフレームルックを生成するGLSLシェーダーです。助言がありますか?
Vector Tanksのようなもの。
できれば、ソリューションはOpenGL ES 2.0でも動作するはずです。
ヒントとポインター(NULLでない限り)はありがたいです!
回答:
興味のあるリンク:
Baerentzen et al。「シングルパスワイヤフレームレンダリング」 http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=4884
Nividia Corporationの「Solid Wireframe」ホワイトペーパー http://developer.download.nvidia.com/SDK/10/direct3d/samples.html
編集:私は最初のものがすでに言及されているのを見ます、ごめんなさい!
Daveが言ったように、テクスチャを使用することを強くお勧めします。苦痛かもしれませんが、パフォーマンスはずっと良くなると思います。
エッジ検出アルゴリズムを検索してみてください。(わずかな透明度のために)単色と中程度のアルファ値を持つ頂点カラーリングを使用してメッシュを作成し、エッジ検出シェーダーを使用すると、十分に見える場合があります。まったく同じではありませんが、もっと好きになるかもしれません。またはそうでないかもしれません。
それ以外の場合、2パスソリューションを見て、半透明のポリゴンを描画し(再び、頂点の色を中程度のアルファ値の単色に設定します)、glPolygonMode(GL_LINE)を設定し、必要に応じてglLineWidthを調整します(おそらくオブジェクトに基づいて)距離)、ポリゴンを再度描画します。
それは少し遅れており、私はこれを読むのに苦労していますが、フォーラムの議論はこのPDF:シングルパスワイヤフレームレンダリングを指します。関係ない場合はおologiesび申し上げます。
おそらくあなたが望んでいるものではないことはわかっていますが、Vector Tanksはテクスチャモデルを使用しているように見えます。テクスチャはワイヤーフレームの外観を与え、シェーダーをサポートしないiPod touchで実行されます。
私が見た唯一の方法は、Tron 2.0のような高解像度で、ほとんど黒のテクスチャを使用することです。そのテクスチャは、ほぼ例外なく、太い色付きの境界線を持つフラットブラック、または単純なパーリンノイズテクスチャのいずれかです。
彼らはいくつかの簡単な後処理を適用して、グロー効果を実現しました。
これについてはどうですか:モデルを用意し、アウトラインとして表示するエッジをベベルします。作成された面を明るい不透明な緑で色付けし、古い面はすべて暗い半透明の緑にします。
これには、ピクセルシェーダーをまったく使用する必要がありません。(実際、テクスチャもありません。顔の色だけです。)一部のモデルの前処理が必要です。これは問題になる場合もあれば、そうでない場合もあります。
傾斜面がビューに垂直な場合、アウトラインを表示できません。これが気になる場合は、面取りした表面を少し押し出して、ベベルがあるように押し出しを着色することができます。さまざまな角度の面取りと押し出しを試して、細い線と太い線を作成できます。