問題タブ [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.
opengl-es - IOS4 アプリで GLKit をリンクする方法はありますか?
画面に OpenGL のものを描画するために GLKit を使用するアプリケーションを作成します。これがiOS5フレームワークであることは知っていますが、手動でglkit dylibとリンクする方法があるかどうか疑問に思っていました. GLKit の方がはるかに使いやすいので、コードを再構築する必要がなければ感謝します。
ios - スプライトのテクスチャを囲む暗い影/線/フレームがあるのはなぜですか?
AppleのGLKitハンドでOpenGLを開始していますが、スプライトを正しく表示するのに問題があります。問題は、それらがすべて細い暗い線で囲まれていることです。以下のスクリーンショットは、透明度を含むpng画像テクスチャを持つ2つの長方形を示しています(明らかに)。
それらを囲む黒い影は、間違いなくpngSの一部ではありません。緑のpngはアンチエイリアスなしで実行され、青のpngにはアンチエイリアスの境界線があります。スプライトを1つだけ描画すると、黒い境界線もはっきりとわかります。
コードの関連部分(そう願っています...)は次のとおりです。
誰かアイデアはありますか?ありがとうございました。
iphone - GLKTextureLoaderは、特定のテクスチャを最初にロードするときに失敗しますが、2回目には成功します
GLKitを使用してOpenGLES2.0でiPhoneアプリケーションを作成しています。GLKTextureLoaderを使用して、テクスチャを同期的にロードしています。
問題は、特定のテクスチャについて、最初にそれをロードできないことです。このエラーが発生します:
The operation couldn’t be completed. (GLKTextureLoaderErrorDomain error 8.)
このエラーコードについて、アップルのドキュメントには次のように記載されています。
(それほどでもない)。
openglコンテキストがビジー状態などのときに、テクスチャを読み込もうとしていませんか?
ノート:
- このテクスチャをロードする前に、他のテクスチャをロードします。これらは最初の試行で機能します。また、まったく同じテクスチャファイルが2回目の試行で正常にロードされます。
- この前にロードされたテクスチャは2、3しかないので、十分な空きビデオメモリがあるはずです。
- テクスチャはアルファ付きの非圧縮PNGですが、TGA(24ビットおよび32ビット)でも試してみましたが、うまくいきませんでした。
どんなアイデアでも大歓迎です、ありがとう
編集:
より詳しい情報:
openglコンテキストは、すべての画面で共有されます。これは、シェーダーとテクスチャを画面間でロードしたままにするために行っています。
上記の問題は、2番目の画面に移動したときに発生します。最初の画面では、問題なくテクスチャを描画します(他のテクスチャも問題ありません)。
上記の問題は、ゲームの世界でコンテンツ(ゲームエンティティ)をロードするときに発生します。各エンティティはテクスチャを読み込もうとします。テクスチャを一度だけロードしてから、他のすべてのエンティティに対して同じIDを返す単純なキャッシュシステムがあります。1つの方法で、エンティティを同期的にロードしています。最初のエンティティはテクスチャのロードに失敗し、次に2番目のエンティティが来て成功し、3番目のエンティティがキャッシュされたIDを取得します。
でloadentitiesメソッドを呼び出していますが
viewDidAppear
、エンティティをロードする前に2秒間スリープを追加しようとしましたが、何も変更されていません。
編集:
テクスチャ読み込みコード:
ios - OpenGLES 2.0 (GLKit、iPhone): ポリゴンがワイヤフレーム ラインを部分的に覆い隠す
iOS 用の 3D 関数プロッターを作成しようとしています。三角形のストリップを使用してグラフをレンダリングすることに成功し、線を介してワイヤーフレームを描画することも実装しました。しかし、24 ビット (または 16 ビットは問題ではありません) の深度バッファーを使用して両方を同時にレンダリングすると、ラインがポリゴンによって部分的に隠され、非常に細く見えるか、完全に消えてしまいます。4xMSAA をオフにしても問題は解決しません。例については、下の画像を参照してください。
線だけを描くだけでも問題なく機能します。線の太さは適切です。線の深度バッファリングを無効にすると、それらも正しく描画されますが、もちろんすべてのポリゴンの上に表示されます (つまり、実際にポリゴンによって隠されている線)。また、ポリゴンの透明度を下げようとしましたが、役に立ちませんでした。ラインを上から見ている限り、ラインの y 座標を少し大きくすると見栄えが良くなり、実際にポリゴンの前に表示されます。
最適なパフォーマンスを得るために、レンダリングの前にすべての頂点データとインデックスを頂点配列に静的に格納します。したがって、私のレンダリング ループは非常に短いです。
ポリゴンとワイヤフレームを同時に適切に表示するにはどうすればよいですか? また、カメラが現在ある場所に線を少し近づけることも考えましたが、OpenGL ES でそれを行う方法がわかりません。また、このシフトがパフォーマンスに影響するかどうかもわかりません。カメラの現在の位置に依存します。線を描く直前に線に動的に変換を適用することは可能ですか?
iphone - GLKTextureLoaderによって割り当てられたテクスチャ(GLKTextureInfoオブジェクト)を解放します
iOSでの開発、特にiOS 5でのOpenGL関連の新機能は初めてです。そのため、私の質問のいずれかが非常に基本的なものである場合は、お詫び申し上げます。
私が取り組んでいるアプリは、カメラフレームを受信し、OpenGL ESを介して画面に表示するように設計されています(グラフィックの人々がこれを引き継ぎ、私がほとんど知らない実際のOpenGL図面を追加します)。アプリケーションはXCode4で開発されており、ターゲットはiOS 5を実行しているiPhone4です。今のところ、ARCとGLKit機能を使用しましたが、画像をテクスチャとしてロードする際のメモリリークを除いて、すべて正常に動作しています。アプリはすぐに「メモリ警告」を受け取ります。
具体的には、によって割り当てられたテクスチャを解放する方法をお聞きしたいと思います
これimage
は、カメラフレームから作成されたクォーツ画像です(アップルのサンプルコード)。割り当てを無効にするとアプリが警告を受け取らないため、コードのその部分に問題がないことはわかっています。
ios - GLKit を使用した OpenGL ES オブジェクトの回転
タッチを使用して iOS で OpenGL オブジェクトを回転させようとしていますが、問題が発生しています。ここでユーザーのタッチを取得しています:
ローテーションを実行するために更新機能でそれを使用しています。現在、左から右にタッチすると左から右に回転し、上下に移動すると前後に回転しようとしています。私は奇妙な組み合わせのローテーションを取得します。コードは次のとおりです。
opengl-es - GLKMatrix4Translate を使用した翻訳は、原点ではなくカメラを中心に動いているように見える
ユーザーが OpenGL ES でオブジェクトを上下左右にパンできるようにしようとしています。すべての描画と移動に GLKit を使用しています。ユーザーがオブジェクトをどのように動かしたいかを追跡するタッチ イベントを有効にしました。オブジェクトのパンをスライドさせるために GLKMatrix4Translate を使用していますが、何らかの理由で回転コンポーネントもあります。
ユーザーのタッチから翻訳ポイントを収集し、CGPoint に保存します。
変換したい X 位置と Y 位置に center.x と center.y を使用します。次の行で翻訳を実行します。
何か案は?
ios5 - GLKBaseEffect の適切な使用
アホイ!
GLKit に追加された新機能をブラッシュ アップするために、いくつかの古いテスト コードを更新することを検討しています。これまでのところ、GLKViewController をセットアップし、いくつかの基本的な形状のレンダリングを開始することができましたが、GLKBaseEffect に関する適切な情報を見つけるのに苦労しました。
GLKBaseEffect のドキュメントには次のように記載されています。
初期化時に、アプリケーションは最初に OpenGL ES 2.0 コンテキストを作成し、それを現在の状態にします。次に、新しい効果オブジェクトを割り当てて初期化し、そのプロパティを構成して、その prepareToDraw メソッドを呼び出します。エフェクトをバインドすると、シェーダーがコンパイルされ、現在の OpenGL ES コンテキストにバインドされます。ベース エフェクトでは、アプリケーションから提供される頂点データも必要です。頂点データを提供するには、1 つまたは複数の頂点配列オブジェクトを作成します。シェーダーが必要とする属性ごとに、頂点配列オブジェクトは属性を有効にし、頂点バッファー オブジェクトに格納されたデータを指す必要があります。
私が見分けるのに苦労しているのは;
レンダリングする「モデル」ごとに GLKBaseEffect オブジェクトが必要ですか? それとも、「シーン」ごとに 1 つの GLKBaseEffect を使用し、prepareToDraw を呼び出す前にその場でプロパティを変更するだけですか?
モデルごとに 1 つの GLKBaseEffect を単純に使用するゲーム エンジンとレンダラーのチュートリアルをいくつか見てきましたが、代わりに 1 つのインスタンスで同じことが達成できるとしたら、これはまったく非効率的です。
ドキュメントを読むと、これが最良のアプローチのように思えますが、非常に多くの人が複数のインスタンスを使用しているのを見たことを考えると、そうではないと思い始めています。
誰でもこれに光を当てることができますか?GLKit は iOS にとって (そして私にとって) まだかなり新しいので、どんな情報でも大歓迎です。
iphone - GLKShaderBlockNode リークはどこから来ているのですか?
開発中のアプリで Leaks Instruments を実行した後、に関連する多くのリークが見られGLKShaderBlockNode
ます。一部はGLKShaderBlockNode
、一部は 、一部はMalloc < varying sizes >
および__NSCFString
です。
これをオンラインで検索したり、Apple の開発リソースを検索したりしましたが、GLKShaderBlockNode
.
担当図書館:GLKit
担当フレーム :-[GLKShaderBlockNode copyWithZone:]
iphone - OpenGL ES でオブジェクトが表示されなくなった
私は OpenGL ES プログラミングが初めてです。開始するのに適したチュートリアルを見つけたところ、プロジェクトに四角形が表示されました。次に、ほとんどの OpenGL コードを View Controller から、頂点や色などを格納する Model オブジェクトに移動しようとしました。次に、View Controller で次のように呼び出します。
このようにして、表示するモデルが複数ある場合は、より実践的になります。これを行ったので、立方体が画面に表示されなくなりました。このメソッドをコメントアウトすると、キューブは表示されますが、画面いっぱいになるだけなので、すべてのモデル ビュー マトリックス計算が行われる update メソッドにエラーを特定したと思います。
そして、ここにロード方法があります:
そして、ここにレンダリング方法があります:
どんな助けでも大歓迎です。ありがとう。