2012-10-23 24 views
6

私はOpenGLを使用して独自の2D GUIライブラリをプログラミングしています。グラフィック要素を含むことができるコンテナコントロールを持っている段階にあります(丸い四角または星のような)と他の子コントロールなど... 子コントロールとグラフィックス要素のレンダリングを親コントロールにクリップしようとしました。したがって、子コントロールがコンテナの境界線をオーバーフローすると、レンダリングされません。OpenGL 2D矩形領域のクリッピング

私の最初のアイデアは、ウェブを検索しながら発見した後、「はさみテスト」を使用することでした。 しかし問題は、私は四角形のクリッピングに拘束されていて、多角形のような任意の領域にコンテンツをクリップしたいと思っています。私のコントロールは、その内容をクリップしたりしてはならない場合、私はアイデアを持っている

は...

それはコントロールとそのグラフィック要素を描画する瞬間だ

、私が見て。はいの場合は、オフスクリーンのテクスチャで黒い背景に均一な白の色で描画します。それから私はそれをシェーダープログラムに送ります。 私は各子供を (コントロールとグラフィック要素)のシェーダをアクティブにしてレンダリングします。 このフラグメントシェーダでは、フラグメントごとに、先に渡された特殊テクスチャ内の同じ座標を見ると思います。特殊なテクスチャのフラグメントが白い場合、可視領域にあるためこのフラグメントをレンダリングできます。

これはうまくいくと思いますか?良いアイデアですか、それとも良いアイデアですか?

答えて

2

これは、必要に応じていくつかの方法で行うことができます。レンダリングテクスチャやステンシルバッファがおそらく最善の策だろう。あなたの答えのための

OpenGL clipping

+1

こんにちはと感謝:このリンクは、より多くの作業を開始するための情報を持っています。私はこのステンシルソリューションを読んで見ました。私はこれを使ったことはありませんでしたが、シェーダソリューションより実装が簡単になると思います。 – user1768815

関連する問題