問題タブ [powervr-sgx]
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.
ios - PowerVR GPU はどのように深度バッファーを提供しますか?
iOS デバイスは、PowerVR グラフィックス アーキテクチャを使用します。PowerVR アーキテクチャは、タイル ベースの遅延レンダリングモデルです。このモデルの主な利点は、深度バッファーを使用しないことです。
ただし、iOS デバイスの深度バッファにはアクセスできます。具体的には、オフスクリーン フレーム バッファー オブジェクトを使用して、深度バッファーをカラー テクスチャに変換し、レンダリングすることができます。
PowerVR アーキテクチャが深度バッファーを使用しない場合、どのようにして深度バッファーをレンダリングできますか?
c++ - VBO に送信されるデータの制限を決定しますか?
PowerVR SGX 540 を搭載した Playbook 用の 3D アプリケーションを作成しています。opengl を介して VBO に十分なデータを詰め込むと、デバイスがクラッシュする可能性があることに気付きました (アプリケーションだけでなく、デバイス全体、ハード リブートが必要です)。クラッシュを引き起こすために、最大 30 万個の三角形と最大 15 万個の頂点を持つモデルのデータを送信しました。頂点の通常のデータも送信しました。
送信するデータが少ない場合は問題が発生しないことがわかりました (三角形と頂点の半分で別のモデルを試しました)。また、頂点配列を使用しても問題は発生しません (非常に遅いですが)。
知りたい:
私が見ているのは、モバイル ハードウェアの一般的な結果ですか? つまり、150k の頂点と法線を持つ 300k tri モデルは過剰ですか?
さまざまなモデル サイズをテストする以外に、VBO の使用に使用できるメモリの量を確認できますか (クラッシュからデバイスを回復するのに 5 分ほどかかります)。
他に何かこの問題を引き起こしている可能性はありますか? 私はいくつかの追加情報を提供しました:
私は GUI に Qt を使用しており、GUI に描画する前に 3D シーンを FBO に描画しています (EGL ウィンドウを作成して UI なしでこれをすべてやり直すかどうかはまだ確認していません)。 - しばらく時間がかかります)。
OpenGL の使い方が下手ではないことを確認するために、すべての 3D 要素に対して生の OpenGL 呼び出しを使用することと、OpenSceneGraph を使用してすべてを実行することの両方を試しました。どちらの方法もまったく同じように失敗します (VBO は少ないデータで機能し、頂点配列は機能し、VBO データが増えるとクラッシュします)。
プログラムはデスクトップで正常に動作します。残念ながら、アプリケーションをテストできるモバイル デバイスは他にありません。
android - PowerVRSGX540Androidテクスチャの問題
Androidアプリケーションにいくつかのテクスチャをロードしようとしています。
samsung galaxy ace、s2などのすべてのデバイスで正常に動作しますが、PowerVR SGX540 gpuを使用するデバイス、たとえばsamsunggalaxyS-gti9000
には奇妙なアーティファクトがあります。
一部のテクスチャは正しくロードされます...しかし、他のテクスチャは完全に黒です...。
すべてのテクスチャが2の累乗であることを確認しましたが、正方形ではなく、長方形(64 * 128など)にすることができます。
テクスチャパラメータの設定には以下を使用しています。
android - 通話が終了した後、Androidゲームのネイティブアクティビティ(GLESレイヤー)を復元するにはどうすればよいですか?
Androidアプリでネイティブアクティビティを使用してGLES2を実行しています。通話が終了するとアプリに戻りますが、画面が空白のままです。タスクマネージャーを確認すると、アプリがまだ実行されていることがわかります。1)ゲームを保存および復元するためのコードを記述しなければならず、これを行うためにJavaでオーバーライドする必要がある呼び出しがあります。2)保存/復元せずにアプリを復元するより自動化された方法があります。
ありがとう、マダン
ios - クリッピングの問題が発生しましたが、その理由がわかりません
特定の角度から見ると気になりますが、少し動かしたり、カメラの向きを変えたりすると元に戻ります。これをどこから始めればよいかさえよくわかりません。
空気にさらされた面のみをレンダリングし、opengl でカリングを有効にしていません。
誰がこれを引き起こす可能性があるかについて何か考えがありますか?
編集: OpenGL フレームから Model-View-Projection マトリックスを取得してキャプチャし、クリップされた領域の中心点をテストしました。そして、私の計算によると、その点は視錐台にあるはずです。だから私はまだ混乱しています。テーブルは私の作品を示しています。このソリューションから視錐台にいることをテストしました:オブジェクトが OpenGL のクリッピング ボリュームの外側にあるかどうかを確認するには?
パースペクティブ マトリックスの作成に使用されるデータ:
lookAt マトリックスの作成に使用されるデータ:
ios - cppクラスのObjective-Cデリゲートを作成するにはどうすればよいですか?
openGL-es(xcodeopenGLゲームテンプレートとpowervr3.0 sdkのogles2toolsライブラリを組み合わせようとしています。私の問題は、エフェクトファイルをロードするコード行です。
コールバックを受け取ることができるように、「this」ポインタを渡すことになっています。実装する必要のあるデリゲートメソッドは次のとおりです。
私にとっての大きな問題は、objective-cでcppデリゲートメソッドを提供するにはどうすればよいかということだと思います。私はこの問題についていくらか読んだが、私が読んでいたものは逆に進んでいるようだった。つまり、cppのobjective-cデリゲートです。かなり紛らわしいですが、これが私の考えです...
必要なメソッドを実装するcppクラスを作成します。これをviewControllerクラスに追加し、m_pEffect->Load呼び出しでこのcppクラスへのポインターを渡します。これは正しいようですか?
ありがとう。
PSコードのフォーマットが悪い場合は申し訳ありません。まだ勉強してる。
編集: これは、objective-cとcppの混合に関して私が見つけた例です。それは私がやりたいことと本当に似ているようです。
更新:ここにいくつかの追加情報があります(user1118321によって要求されました)
デリゲートが必要なCPPクラスはCPVRTPFXEffect(PVRTPFXParserAPI.h-powerVR SDK 3.0から)です。リンクを追加しますが、これが許可されているかどうかはわかりません。 これがクラスヘッダーへのリンクですが、このバージョン(およびWeb上の他のバージョン)には、loadメソッドのpDelegate属性が含まれていませんでした。以前のバージョンの例だと思います。このクラスファイルを投稿しても大丈夫かどうか教えてください。投稿します。
このスレッドを読んで、私がやるべきだと思うことの良い例を見つけました。これが私がこれまでに持っているものです:
私のCPPデリゲートクラス...
私のObj-Cラッパークラス(上記のリンク例から変更したばかり)...
実装...
基本的に、コードをコンパイルしてデバッグすることはできますが、CPVRTPFEffectクラスが次の呼び出しを行うと次のようになります。
EXC_BAD_ACCESSを取得します。ブレークポイントを設定し、行が呼び出されないため、コールバックメソッドが見つからないと想定しています。
これは、デリゲートパラメータのブリッジコマンドを使用してCPVRTPFXEffect::Loadを呼び出す更新されたコードです。
ご協力いただきありがとうございます!
更新2: プロジェクトはARCを使用しています。私のviewControllerインターフェースは次のようになります。
@propertyを追加しても、EXC_BAD_ACCESSは役に立ちませんでした。CPPコードをトレースしているときに、pDelegateの値を「確認」する方法がわかりません。変数にカーソルを合わせると、Xcodeは何も表示しません。
次のコード行をCPVRTPFXEffect::Loadメソッドに追加しました(クラッシュする行の直前):
これは、デバッグ出力ウィンドウに表示されるものです。
クラスタイプIDは次のとおりです:P21PVRTPFXEffectDelegate。
「P21」が何を意味するのか(もしあれば)はわかりませんが、これが機能するようになりそうです。わからない、多分これはそれが得るのと同じくらい近い。まだクラッシュしていて、メソッドが見つかりません。
ios - x軸とy軸に沿った回転
opengl-es2.03DアプリにPowerVRライブラリと一緒にGLKitを使用しています。3Dシーンには、ガレージ環境をシミュレートするいくつかのメッシュがロードされます。ガレージの中央に車があります。アプリにタッチ処理を追加しようとしています。この場合、ユーザーは部屋を回転させることができます(たとえば、車を囲む4つの壁すべてを表示できます)。また、狭い範囲に制限されていますが、x軸を中心に回転できるようにします。基本的に、彼らは車の上部の少しから床の高さのすぐ上まで見ることができます。
YまたはXで回転できますが、両方では回転できません。両方の軸を回転させるとすぐに、車は軸外に投げ出されます。車はもうカメラと同じ高さではありません。これをもっとよく説明できればいいのですが、皆さんが理解してくれることを願っています。
これが私のタッチの実装です:
これが私の更新方法です:
最初に新しいX回転行列を現在のシーンの回転に乗算し、次に新しいY回転行列を乗算してみました。掛け算の順番が私の問題だと思って、その逆を試しました。それは役に立ちませんでした。次に、現在の回転に乗算する前に、新しいX回転行列とY回転行列を一緒に追加しようとしましたが、それも機能しませんでした。身近に感じますが、現時点ではアイデアが足りません。
助けてもらえますか?ありがとう。-ヴァレリー
更新:これを解決するために、私はそれを少し単純化しようとしています。上記のコードを更新し、Y回転の範囲の制限を削除しました。基本的に、ユーザーが画面をスワイプすることに基づいて、XとYの回転を計算します。
これを正しく理解していれば、_rotationXの計算でビューマトリックス(カメラ/目)を回転させたいと思います。
_rotationYの計算には、ワールドマトリックス(原点0,0,0)を使用する必要があると思います。私が話していることを正確にいくつかの画像を取得しようとします。
android - PowerVR Android サンプル: makefile が機能しない
すべての要件を満たしていると仮定して、Windows 8 64 で PowerVR SDK for Android をセットアップするのに苦労しています。
- Android SDK (新しい Eclipse)
- Android NDK
- Cygwin (make あり)
- PowerVR Android SDK 3.0
Android NDK サンプルを完全に作成して実行できます。ただし、(SDK から) PowerVR サンプルをビルドする場合、同じプロセスは失敗します。メイクファイルを実行しようとしたときの出力は次のとおりです。
$ ndk Compile++ サム: OGLES2Texturing <= OGLES2Texturing.cpp arm-linux-androideabi-g++.exe: エラー: C:/cygwin///cygdrive/c/Users/stfn/workspaces/android/03_Texturing/jni/OGLES2Texturing.cpp:そのようなファイルまたはディレクトリはありません arm-linux-androideabi-g++.exe: 致命的なエラー: 入力ファイルがありません コンパイルが終了しました。/cygdrive/c/android-ndk-r8d/build/core/build-binary.mk:269: ターゲット `obj/local/armeabi/objs/OGLES2Texturing//cygdrive/c/Users/stfn/workspaces/android/ のレシピ03_Texturing/jni/OGLES2Texturing.o' の作成に失敗しました: * [obj/local/armeabi/objs/OGLES2Texturing//cygdrive/c/Users/stfn/workspaces/android/03_Texturing/jni/OGLES2Texturing.o] エラー 1
エラーは、コンパイラに与えられた間違ったパスに関連していると思います。私には、標準の Windows と Cygwin/Unix のパスが混在しているように見えます: * C:/cygwin///cygdrive/c/Users/stfn/...*
この問題を解決しようとして非常に多くのメイクファイルを使用している場合でも、他にどこを見ればよいかわかりません。NDKをいじってみたのはこれが初めてです。これが私の最後になるのではないかと心配しています。
どんな助けでも大歓迎です
opengl-es-2.0 - 遅延レンダリングに基づく PVR SGX 5 シリーズを搭載した iOS デバイスでは、ハードウェアは以前に送信された描画コマンドをいつ実行しますか?
POWER-VR SGX 5 シリーズ GPU が組み込まれている iOS デバイス (3GS またはそれ以降) は誰もが知っています。
POWER VR GPU は TBDR テクノロジに基づいて opengl レンダリングを実行します。つまり、ハードウェアは描画コマンドをすぐには実行せず、ある時点までそれらをキャッシュしてから、すべてを実行します。
これにより、すべての描画データが実行ポイントで opengl に送信され、ハードウェアが処理中のすべてのタイルにグローバルな可視性情報を持っているため、初期の HSR を実行できます。
しかし、Openglオブジェクト(tex、シェーダー、バッファオブジェクト...)の変更操作に加えて、glDrawArrayまたはglDrawElementを何度も呼び出すアプリケーションとして以前に送信されたコマンドをキャッシングを停止し、実行するハードウェアをいつ行うか、または何にするかについて混乱しています。そしてglFlush、glFinish関数?
PS また、PB (HSR の実行に役立つパラメーター バッファー) がいっぱいになると、ハードウェアが以前に送信されたコマンドをフラッシュすることも知っています。
opengl-es - テクスチャが OpenGL ES 2.0 PowerVR SDK をロードしない
現在、PVR SDK を使用したテクスチャの読み込みに問題があります。両方のテクスチャに線形サンプル フィルタがあることはわかっています。ただし、テクスチャの読み込みが失敗した場合に設定したメッセージが表示されます。これが、テクスチャをロードする方法です。
これがテクスチャをロードする私の方法です
initView method() で LoadTextures を呼び出した後