7

glslを使用してセルシェーダーを正常に実装しました。しかし、私の問題はすべての概要を説明することであり、インターネット上のopenglのすべての例はかなり古く、現在のテクノロジーと一致しないため、遅いテクニックなどです。したがって、glslでそれを行う方法を見つけることができませんでした。最も強度の低い領域を黒に着色するなどのアイデアについて考えましたが、gl_Vertex、gl_Position、および目の位置については十分な説明がありません。それで、すべてのテクニックが古すぎるので、私はついにこのアウトラインの問題について誰かに尋ねることに決めました。

4

2 に答える 2

9

zbuffer である種のエッジ検出フィルタを使用し (カラー バッファのエッジ検出と組み合わせることができる可能性があります)、(反転された) 結果でフレームバッファを変調します。最も一般的なエッジ検出フィルターの 1 つは、sobel 演算子です。

http://en.wikipedia.org/wiki/Sobel_operator

編集:これを行うもう 1 つの安価な方法は、通常のメッシュをレンダリングする前に、メッシュの黒いコピーを描画し、カリングを反転させ、頂点を法線の方向にわずかに移動させることです。これはおそらく XIII で行われたことであり、Jet Set Radio で行われた方法でもあると確信しています。

EDIT2:ビューアーまでの距離に関係なくアウトラインの太さを一定にしたい場合は、この距離で頂点を移動する量をスケーリングする必要があります。

于 2012-06-25T11:24:15.113 に答える
1

glPolygonOffsetを見たことがありますか?

塗りつぶされたポリゴンの上に輪郭を描くために使用しました。

http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPolygonOffset.xml

于 2012-06-26T08:24:28.730 に答える