0

OpenGLでImageViewerを作ろうとしています。しかし、OpenGL でベクター/テクスチャの特定の部分を非表示にする方法がわかりません。

ImageViewer は、ページングが有効になっている UIScrollView の正確なコピーである必要があり、画像が画面全体に表示されます。

UIScrollView の優れた点は、UIScrollView の実際のフレームを設定し、コンテンツ サイズを設定できることです。そのため、画像がフレームからはみ出すと、画像が見えなくなります。

何をすべきかを調査し続けることができるように、いくつかのガイドラインが必要です。

4

2 に答える 2

1

フラグメント シェーダーをセットアップして、範囲外のピクセルを非表示にすることができます。

4 つの頂点 (左上、右上、左下、右下) の位置とテクスチャの位置がわかります。次に、ウィンドウの x と y の最小サイズと最大サイズを含む均一な vec4 をフラグメント シェーダーにアップロードできます。次に、ピクセルがその領域の内側にあるか外側にあるかを計算します。内側の場合: 実際の色、外側の場合: gl_fragcolor=vec4(1,1,1,0);

これは何か助けになりますか?

于 2013-06-03T16:49:10.393 に答える
0

私は自分で解決策を見つけました。

画面全体を埋める UIScrollView を配置し、そのオフセットを使用してテクスチャ座標を移動します。

これが最適な解決策かどうかはわかりませんが、パフォーマンスの問題などはありません。したがって、今のところ十分です。

より良い解決策がある場合は、遠慮なく提案してください。

于 2013-06-04T09:34:51.907 に答える