問題タブ [opengl-es]

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 投票する
5 に答える
4860 参照

iphone - タイリングにもかかわらず、512x512 テクスチャが iPhone で大きな GPU ストレスを引き起こす

シンプルな OpenGL ES 実装 (2D ゲーム) を iPhone でテストしていますが、プロファイラーの使用中にレンダリングの使用率が高いことに気付きました。これらは事実です:

  • プリロードされた大きなテクスチャ( 512x512 ピクセル) を 1 つだけ 60fps で表示しており、レンダリングの使用率は約 40% です。
  • 私のテクスチャは、私が使用している唯一の GL 関数である をGL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA使用してブレンドされています。
  • テクスチャを小さくしてタイリングしようとしましたが、違いはありませんでした。
  • 1024x1024 ピクセルの PNG テクスチャ アトラスを使用しています

この1 つのテクスチャがこれほど激しい GPU 使用率を引き起こしているのは非常に奇妙です。

これは予想されることですか?私は何を間違っていますか?

編集:私のコード:

編集:いくつかの改善を行いましたが、レンダリングの使用率を下げることはできませんでした。テクスチャを 32x32 の部分に分割し、座標のタイプとテクスチャ座標を GLfloat から GLshort に変更し、縮退三角形の頂点を追加しました。

アップデートは次のとおりです。

initState: (頂点とテクスチャ ポインターは GL_SHORT になりました)

drawView:

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

iphone - glClearColor()が27%のレンダリング使用率でiPhoneをプッシュ

この質問の答えを探した結果、私はかなり不快な発見に遭遇しました。

glClearColor()60 fpsでのみレンダリングすると、iPhoneのレンダリング使用率が27%になるようです。

つまり、ほとんど何もしない(画面を更新するだけ)と、iPhoneはレンダリング容量の4分の1以上を使用することになります。

これは予想されることですか?

ドキュメントによると、POWERVRは少なくとも約270メガピクセル/秒に達するはずです。以下に正しく説明されているように、60 fpsでの480×320は約9.2メガピクセル/秒に相当し、全体のパフォーマンスは約40メガピクセル/秒になりますが、これは疑わしいことです。

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

iphone - Opengl ES - z 軸のレンダリングが正しくありませんか?

.obj ファイルから読み込んでいる雪だるまのモデルがあります。glRotatef() を使用してモデルを回転させると、雪だるまの頭が常に体の前にレンダリングされることを除いて、すべてがうまく機能します。雪だるまの鼻も常に頭の後ろにレンダリングされます。これにより、雪だるまが回転しながら方向を変える効果が生まれますが、実際にはパーツが正しい z オーダーでレンダリングされません。なぜこれが起こっているのですか?

注: 雪だるまのすべてのパーツは、blender を使用して作成された同じ .obj ファイルからのものです。

このようにモデルをレンダリングします(描画ループ内)

このように回転します (in touchesMoved)

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

opengl-es - 任意のサイズのピクセル ブロックを OpenGL ES テクスチャにコピーする...どういうわけか?

私は描画アプリケーションを作成しており、描画キャンバスは OpenGL テクスチャです。キャンバスに描画すると、キャンバス テクスチャのどの領域が変更されたかが判断され、変更を適用する前にそのピクセル データが (glReadPixels を使用して) コピーされます。

元に戻すには、コピーしたピクセル データを使用して以前のテクスチャの状態に戻したいだけです。ただし、OpenGL ES は glDrawPixels コマンドを提供しません。それを行う最良の方法は何ですか?

2 つのオプションを検討しましたが、どちらが優れているかはわかりません。

  1. コピーしたピクセルを使用して一時的なテクスチャを作成し、それを描画します (ただし、コピーされた領域は 2 のべき乗ではありません!)。

  2. 大きなキャンバス テクスチャを完全にバインド解除し、テクスチャのバイトを手動で変更してから、OpenGL に戻します。私はいかなる種類の圧縮も使用していないので、これはそれほど悪くないかもしれません. しかし、それはハックのようですか?

誰にもアイデアはありますか?本当に感謝します!

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

iphone - iPhone : 64x64より大きいテクスチャ?

私はGLPaintの例を取り上げました...「PaintingView」に背景を入れようとしているので、背景の上に描画して、最終的に画像をファイルとして保存できます.....私は迷っています。

PNG (512x512) を読み込んで、プログラムの最初で「ペイント」しようとしましたが、512x512 ではなく 64x64 としてペイントされました...

前に、ペイント ビューのサブビューとしてロードしようとしましたが、glReadPixels が期待どおりに機能しません (サブビューではなく、PaintingView のみが考慮されます)。また、PaintingView には initWithImage のようなメソッドがありません... 画像 (および変更) で glReadPixels が機能する必要がありますが、ロード時にテクスチャのサイズが 64x64 になる理由が本当にわかりません..

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

iphone - OpenGL でサーフェス全体のテクスチャをアニメーション化する

私は iPhone OpenGLES 実装で作業しており、単純な表面 (長方形を構成する 2 つの三角形) でテクスチャを際限なくスクロールしたいと考えています。これは簡単なはずですが、これは私が以前に行ったことではなく、何かが欠けているに違いありません。テクスチャをうまく回転できますが、変換はまったく機能しません。マイナーな実装上の問題がありますか、それとも何か根本的に間違っていますか?

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

opengl-es - オブジェクトを縮小すると、OpenGL ES でオブジェクトが軽くなるのはなぜですか?

OpenGL ES 1.x でオブジェクトを (均一に) 縮小するとオブジェクトが軽くなるのはなぜですか?

法線が縮小されてもオブジェクトが暗くなるのではないので、暗くなる方が理にかなっていますか? しかし、何らかの理由でオブジェクトが軽くなります。拡大するとオブジェクトが暗くなります。私の意見では、これは逆であるべきです。

GL_NORMALIZE などの使用を提案しないでください。なぜ OpenGL の実装がそのように機能するのか興味があります。

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

opengl-es - OpenGL ESのglNormal3fの目的は何ですか?

OpenGL ESのglNormal3fの目的は何ですか?OpenGL ESで利用可能な即時モードがない場合、glNormal3fを何に使用しますか?サンプルコードがいいでしょう。

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

iphone - OpenGL ESレンダリングビューをUIViewの上に配置することは可能ですか?一方、UIViewは、OpenGL ESが透明性のあるPNGであるかのように透けて見えますか?

私にはそれについてはわかりませんが、それが可能であれば(たとえば、Flashのように)、それは本当に素晴らしいことです。

おそらくいくつかのOpenGLES機能が必要なビューベースのアプリがありますが、フルスクリーンのOpenGLESは必要ありません。コアグラフィックスでは難しいかもしれない小さなチャートやその他のものを描くために、特定の小さな領域でそれが必要です。