2

私はWebGLを学んでおり、次のことをしたいと思っています:

フラグメント シェーダーを使用して、四角い穴のある 3D クワッドを作成します。

gl_FragColorに基づいてgl_FragCoord適切に設定する必要があるようです。

だから私はすべきです:

a)gl_FragCoordウィンドウ座標からモデル座標に変換し、適切なジオメトリ チェックを行い、色を設定します。

また

b) 頂点シェーダーからフラグメント シェーダーに何らかの方法でホール情報を渡します。たぶん、テクスチャ座標を使用してください。この部分についてははっきりしていません。

上記のいずれかの実装については曖昧なので、どちらかのコーディングのヒントをいただければ幸いです。

私のバックグラウンドは、新しいシェーディング言語のパラダイムに追いついておらず、追いつこうとしている OpenGL の古いタイマーのバックグラウンドです...

編集 (2011 年 3 月 27 日):

tex coord ヒントに基づいて上記を正常に実装できました。以下のリンクにこの例を書きました。

穴のあるクワッド - 例

穴のあるクワッド - 例

4

1 に答える 1

5

最も簡単な方法は、テクスチャ座標を使用することです。corrds を追加の属性配列として指定するだけで、可変長を使用してフラグメント シェーダーに渡すことができます。シェーダーには次のようなものが含まれている必要があります。

バーテックス:

attribute vec3 aPosition;
attribute vec2 aTexCoord;

varying vec2 vTexCoord;

void main(){
     vTexCoord=aTexCoord;
     .......
}

断片:

varying vec2 vTexCoord;

void main(){
     if(vTexCoord.x>{lower x limit} && vTexCoord.x<{upper x limit} && vTexCoord.y>{lower y limit} && vTexCoord.y<{upper y limit}){
discard; //this tell GFX to discard this fragment entirly
}
.....
}
于 2011-03-24T12:03:08.440 に答える