問題タブ [glkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
10919 参照

ios - GLKit を使用したオンデマンド OpenGL ES レンダリング

OpenGL レンダリング コードを変換して、 のいくつかの機能GLKit(つまり、非同期テクスチャの読み込みと によって提供される自動化GLKView/Controller) を利用することを検討しています。ただし、クラスは主にアニメーション ループを使用してレンダリングする人々に対応するように設計されているようですが、私はオンデマンド レンダリングを使用しています。さらに、一部のレンダリングは GLKView のフレームバッファではなくテクスチャに対して行われるため、GLKView をサブクラス化して FBO を追加するだけでよいのでしょうか?

このタイプのセットアップに推奨されるアプローチはありますか? 私は次のようなものを期待しています:

  • ビュー コントローラpreferredFramesPerSecondを に設定0するか、フレームの更新を一時停止しますか?
  • glkViewControllerUpdateまたはメソッドを無視して、glkView:drawInRect:必要なときに必要なものだけを描画します。
  • フレームを表示するには、ビューsetNeedsDisplayを法線と同様に使用します (テクスチャにもレンダリングするUIViewので、呼び出す必要がありますか?)。bindDrawable

これが新しい API の設計目的ではない場合、努力する価値がないのではないでしょうか? ドキュメントがもう少し完全であることを望みます。おそらく、API が少し「成熟」したときに、より多くのサンプルが提供されるでしょう...

ありがとう

0 投票する
5 に答える
14555 参照

ios - GLKitで描く

opengl を使用してゲームを作成しようとしていますが、新しい glkit クラスと iOS の既定のテンプレートで多くの問題が発生しています。

これにより、バッファは (灰色に) クリアされますが、頂点配列からは何もレンダリングされません。ここから何をすればよいかわかりません。また、テクノロジーが古くなっているため、glkit の適切な使用方法に関する情報はあまりありません。

0 投票する
1 に答える
2377 参照

ios - GLKView のサイズ変更

GLKViewサイズが変更されると、バッファとそのコンテキストで行われる舞台裏の操作がいくつかありますGLKView。これらのバックグラウンド操作の実行にかかる時間の間、 への描画はGLKView正しい結果を生成しません。

私のシナリオでは、有効になっGLKViewている がsetNeedsDisplayあるので、画面上のコンテンツを更新する必要があるときはいつでも、それを呼び出すだけ-setNeedsDisplayです GLKView。を使用GLKViewして画像を描画しているため、別のサイズの画像を描画する必要がある場合は、 のサイズも変更する必要がありGLKViewます。

問題: のサイズを変更してそのビューGLKViewを呼び出すとsetNeedsDisplay、画面上の結果が正しくありません。これはGLKView、新しいイメージを描画しようとする前に、新しいサイズ変更によって呼び出された舞台裏の操作が完了していないためです。

performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0の代わりに: を呼び出すことで、これに対する回避策を見つけましsetNeedsDisplayGLKView。これは基本的に、メイン スレッドがsetNeedsDisplay. これは問題なく機能しますが、より良い解決策があるかどうか疑問に思っています。たとえば、続行する前にすべての openGL 操作が完了するまでスレッドを待機させる openGL 呼び出しはありますか?

0 投票する
1 に答える
1032 参照

testing - IOS5 GLKit GLView とヒット テスト

新しい GLKit GLView リファレンスでは、次の警告が強調されています。

重要: 描画メソッドは、framebuffer オブジェクトの内容のみを変更する必要があります。OpenGL ES 関数を呼び出して、基礎となるフレーム バッファー オブジェクトからピクセル情報を読み取ったり、フレーム バッファー オブジェクトを変更または破棄したり、その他のプロパティを読み取ったりしないでください。代わりに、GLKView クラスによって提供されるプロパティとメソッドに依存します。

以前、EAGLView で公開されたベスト プラクティスは、レンダリングされたが提示されなかったフレーム バッファを使用した glReadPixels の使用を含むヒット テスト用でした。

GLKView を使用すると、レンダリングから UIImage オブジェクトを作成するための「-snapshot」呼び出しだけが近づくように見えます。次に、ピクセルを掘り出します。これは非常に非効率に思えます。

新しい GLKit 関数を使用したヒット テストの「ベスト プラクティス」はありますか? 別のフレームバッファのバインドと再バインドが可能であるように見えますが、GLKView リファレンスの劇的な警告が何を意味するのかわかりません。

GLKit を使用する場合のヒット テストの最適なアプローチに関するアイデアはありますか?

0 投票する
1 に答える
741 参照

ios - OpenGLで「テキストが書かれた紙」を作る(特にiOS 5で)

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

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

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

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

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

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

0 投票する
2 に答える
1558 参照

iphone - GLKViewController: 正しくない fps

私はいくつかの問題を抱えているので、GLKViewControllerの専門家がそこにいることを願っています:)

私のアプリの簡単な説明です。さまざまな画面をプッシュする UINavigationController があります。

ある時点で、UINavigationController のサブクラスであるゲーム画面に到達します。この画面では、viewDidLoad手動で EAGLContext、GLKView を作成し、新しい GLKViewController をインスタンス化します (update&draw 呼び出しを処理するため)。

私は 30 の優先 fps を設定しています。

問題は、最初の 3 ~ 4 回の更新呼び出しには正しい DT が付属していることですが、その後、フレーム間に 1 秒の間隔が 2 ~ 3 個あることです。を使用して DT を測定しcontroller.timeSinceLastUpdateます。だから私は次のようになります:

この後、DT回だけ有効になります。これらのフレームにそのような遅延がある理由がわかりません。update & draw メソッドでの所要時間を測定したところ、1 秒近くありませんでした。

また、テクスチャをロードしたり、ジオメトリを作成したりしていません。かなり小さなゲームなので、ロード時にすべてが行われます。

また、ゲーム画面コントローラーをポップして、ゲーム画面の別のインスタンスをプッシュバックすると、この新しい GLKViewController は約 1 秒ごとに更新メソッドを呼び出すだけです。

GLKViewController を使用しているときにフレームレートに問題があった人はいますか?

ありがとう、

0 投票する
1 に答える
3798 参照

iphone - GLKit & テクスチャへの色合いの追加

GLKit で PNG 画像を着色する際に問題が発生しています。

アプリケーションに読み込み、テクスチャを作成するために使用する白い PNG 画像があります。

テクスチャはエラーなしで作成されます。

ただし、ブレンドを有効にしてテクスチャをレンダリングすると、色が無視され、白い画像が表示されます。OpenGL1でこれを行っていたとき、画像がで定義された色を拾うという問題はありませんでしたglColor4f()。ここに私のレンダリングコードがあります:

誰でもこの問題を解決できますか ありがとう

レザ

0 投票する
1 に答える
2009 参照

ios - OpenGL ES 2 /iOSGLKitの設計アドバイス

新しいGLKitフレームワークを使用してアプリを作成したいのですが、設計に関するアドバイスが必要です。最大数千の「ブリック」(非常に単純なジオメトリのオブジェクト)を表示するアプリを作成したいと思います。ほとんどが同じテクスチャを持ちますが、最大数百は独特のテクスチャを持ちます。レンガが数秒ごとに表示され、所定の位置に移動してから、(世界の座標で)配置されたままになります。ユーザーのジェスチャーによって位置と向きが制御されるカメラをシミュレートしたいと思います。

私が必要とするアドバイスは、コードを整理する方法についてです。モデルを、グラフィックデータよりもはるかに多くのブリックに関連付けられたブリックのコレクションにしたいと思います。

  • ビューのようなオブジェクトを各ハンドルのジオメトリ、テクスチャなどに関連付けることは意味がありますか?
  • すべてのブリックに独自の頂点バッファーが必要ですか?
  • それぞれに独自のGLKBaseEffectが必要ですか?
  • セットアップ中にどのオブジェクトが何を実行するかを整理してからレンダリングするためのヘルプを探しています。

GLKViewControllerがモデルの状態の変化を観察したり、ジェスチャーに基づいて目の座標を制御したりすることで、典型的なMVCパターンに近づき続けることができれば幸いです。

あなたがいくつかのアドバイスを与えるか、良い例に向かって私を導くことができれば、多くの義務があります。前もって感謝します!

0 投票する
1 に答える
1142 参照

ios - iOS GLKViewController ネストされた GLKit ビュー

アプリケーションの出発点として OpenGL ゲーム テンプレートを使用しましたが、さまざまな理由から、描画している GLKView をメイン ビューの子ビューにする必要があります。「self.view = glView」を設定しようとしました。ここで、glView はネストされた GLKit ビューであり、そのビューを GLKViewController サブクラスのビュー アウトレットにリンクしましたが、うまくいきませんでした。GLKViewController がそのビュー コントローラーのメイン ビューの子ビューを制御する GLKView を作成する方法を教えてもらえますか? 前もって感謝します

0 投票する
1 に答える
4120 参照

objective-c - OpenGL ES インターリーブ頂点バッファー オブジェクト

私は iOS 用の新しい OpenGL フレームワーク (GLKit という適切な名前) を検討しており、既存の OpenGL 1.0 コードを OpenGL ES 2.0 に移植して遊んでいました。

API と、Apple が提供するその他のベスト プラクティスと OpenGL のドキュメントを読んだ後、頂点バッファ オブジェクトを使用し、「要素」またはむしろ頂点インデックスを使用する必要があることをかなり深く理解しました。必要に応じてパディングを使用してメモリストレージを最適化することについても多くの言及があるようですが、それはおそらく別の日の会話です;)

SO で、従来の malloc/free よりも NSMutableData を使用する利点について少し前に読み、VBO を作成するときにこのアプローチを試してみたいと思いました。これまでのところ、正しい道を進んでいるように見えるスニペットをまとめることができましたが、VBO に含まれるデータの量については完全にはわかりません。これが私がこれまでに持っているものです:

現在、インターリーブ頂点データには、各頂点の頂点、法線、色、およびテクスチャ座標を格納するのに十分なデータが含まれています。頂点とインデックスの数が等しいという印象を受けましたが、実際には明らかにそうではないため、インデックスは InterleavingVertexData ではなく VBO の一部です。

質問が更新されました:

上記のコードを動作状態にすることができた後、コードを更新しました。うまくいけば、それは将来誰かに役立つでしょう。

すべてを設定できたので、VBO にバインドされたコンテンツをレンダリングして期待される結果を得ることができません。データを OpenGL にロードするためにこれまでに取得したコードは次のとおりです。

そして、すべてをレンダリングするためのコード:

私の iPhone は、目から虹を放つユニコーンの素晴らしいグラフィックスでまだ爆発していませんが、髪を引き裂かずに単純な形状を完全にレンダリングすることはできませんでした.

レンダリングからは、各形状の 1/3 だけが描かれているように見えます。見る角度によっては、おそらく 1/2 が描かれているように見えます。glDrawElements に渡された count パラメータがこれをいじると結果が異なるのが原因のようですが、ドキュメントを読んで値を何度も確認しましたが、実際にはインデックスの総数が予想されます (これは私が現在通過中)。

元の質問で述べたように、私は現在の VBO にかなり混乱しているか、少なくとも概念ではなく実装に混乱しています。誰かが私の実装に目を向けてくれるほど親切であれば、それは非常に素晴らしいことです。途中でどこかで新人エラーを犯したと確信していますが、何かを何時間も見つめているとどうなるか知っています進展なしで終了。

読んでくれてありがとう!