3

私は OpenGL をやったことがありませんが、私が練習している AR アプリに関するこの特定の質問に関するいくつかの指針を探しています。

「平らな長方形」と、その長方形の表面に文字を書いたアプリを作りたいです。視覚的には、文字が書かれた紙の線に沿って何かを想像しています。アプリが起動するたびに、テキストが異なります (テキストは plist ファイルから取得されます)。

ユーザーは、目の前に一枚の紙がぶら下がっているかのように、紙を四方八方から見ることができます。

これは OpenGL で行うのは簡単ですか? どうすれば始められますか?

本当に自由回答の質問で申し訳ありませんが、この種のことがどのように行われるかを感じたかったのです。

Xcode サンプル プロジェクトの OpenGL テンプレート ソース コードを見ると、多数の頂点の配列があることがわかります。「平らな」長方形を作成するには、本質的にz軸を削除またはゼロにするだけでよいと思います。そして、平らな長方形の表面に添付される動的テキスト...どうすればいいのかわかりません....

4

1 に答える 1

6

この質問に明確に答えるのは難しいです。一般に、これは些細なことですが、そうではありません。

「何かを載せた平らな四角形」の描画は、API 呼び出しを 2 回行うだけで、可能な限り簡単です。OpenGLでテキストを効率的に、高品質に、大規模な前処理なしで描画することは、まったく別の話です。

私がすることは、iOS での「通常のシステムでサポートされている」方法を使用してテキストをレンダリングすることです (他のウィンドウに描画するのと同じように、この特定の詳細はわかりません) が、画面ではなくビットマップに描画します。 . これはサポートされるべきであり、ほぼすべての OS が少なくとも 10 ~ 15 年間これをサポートしてきました。次に、このビットマップをテクスチャに変換してバインドし、OpenGL を使用して単純なフラット クワッドを描画します (4 つの頂点を持つ頂点バッファーを設定し、各頂点はテクスチャ座標であり、2 つの三角形を描画します。これは非常に簡単です)。

これの大きな利点は、インストールされているシステム フォント (または利用可能な任意のフォント) を使用できることです。ビットマップ フォントを生成する必要はなく、ヒンティングや適切な間隔などの非常に厄介なことを考える必要もありません。もちろん、OpenGLにはテキストのサポートも組み込まれていますが、それほど効率的でも優れたものでもありません。テキストがミリ秒ごとに変更されない場合は、オペレーティング システムが提供する標準のレンダラーを使用してレンダリングするのが本当に最善です (そうです、おそらくハードウェア アクセラレーションにはなりませんが、ユーザーはテキストを読まなければならないため、おそらくミリ秒ごとに変更されることはありません)。

「一枚の紙」が曲がったりねじれたりしたり、平らな長方形ではなくページをはがしたりする必要がある場合は、さらに複雑になります。その場合、それをテッセレートする必要がありますが、これも思ったより難しい場合があります。すべてのテッセレーションがすべての曲げ/ねじれに対して最適に見えるわけではありません。または、最適な (最小として読み取られる) 数の頂点を持っていません。

GPU Gems または GPU Pro の書籍の 1 つに「ページ ピール」とそのようなテッセレーションに関する記事があります。検索させてください...

そこに: Andreas Bizzotto: "シェーダーベースの eBook リーダー - ページ ピーリング エフェクト"、GPU Pro2 pp. 278-299

コピーを入手できるか、幸運にも Google ブックスなどで見つけることができるかもしれません。

于 2011-10-27T09:27:02.750 に答える