問題タブ [opengl-es-2.0]
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.
c - DisplayContext、displaySurface、displayBufferの違いは?
通常、グラフィックスとディスプレイに取り組んでいると、Displaybuffer、DisplaySurface、DisplayContext などの言葉に出くわします。これらの用語の違いは何ですか?
iphone - iPhone の BGRA glTexImage2D と glReadPixels
ドキュメントを見ると、テクスチャの内部フォーマットに BGRA を使用できるはずです。テクスチャに BGRA データを提供しています (BGRA は許可されていないように見えるため、glRenderbufferStorage に GL_RGBA8_OES を使用しています)。ただし、次の場合は機能しません。
これは私に黒いフレームを与えますが:
これは機能しますが、青/赤が反転します (テクスチャに BGRA データを提供します):
...全体で BGRA を使用できないのはなぜですか? glRenderbufferStorage が BGRA フォーマットを受け入れないように見えることに気付きました... 本当に混乱しています。BGRA は、iPhone のカメラからのデータであるため、私のデータに適した唯一の形式です。
android - Androidでパーティクルを表示するには?
Androidでopengl esプログラム(NDK)を書いていますが、いくつかのパーティクルをレンダリングする必要があります。Androidでパーティクルを表示する方法を教えてもらえますか? ありがとう!
android - glDepthMask(GL_FALSE)は、一部のGPUのフレームバッファーを破棄します
glDepthMask(GL_FALSE)
フレームのレンダリング中に、デプスバッファの書き込みを無効にすることがあります。これは一部のGPU(Motorola DroidのPowerVRなど)では完全に正常に機能しますが、たとえばAdrenoGPUを搭載したHTCEVOでは、フレームバッファーが完全にゴミになってしまいます(どこかにレンダリングしたメッシュの痕跡が表示されますが、画面全体がほとんどゴミ箱に入れられています)。
glDepthMaskを常にtrueにすると、すべてが正常に機能します。
アルファレンダリングの一部でglDepthMaskをオフにする必要があります。デプスライトをオフにすると、フレームバッファが破壊される原因は何ですか?
opengl-es - OpenGL ES 2.0 は行列の要素をどのような順序で読み取りますか?
よくわかりません。それは...ですか:
または、他の何か?
android - Android OpenGLES2.0ビューポートを回転させる
Androidアプリで取得したOpenGLES2.0レンダリングコンテキストはポートレートモード(480x800)ですが、ランドスケープモード(800x480)でレンダリングしたいと思います。
できればシェーダーに送信されるマトリックスを変更せずに、OpenGLビューポートを回転させるにはどうすればよいですか?
たくさんのシェーダーがあり、その中には単位行列を使用するものもあります(フォントレンダラーなど)。したがって、いくつかの場所で行列に回転コンポーネントを追加する必要があるようです。どういうわけかビューポートをグローバルに回転させる方法はありますか?
どういうわけかAndroidにランドスケープレンダリングコンテキストをリクエストできますか?
この問題のアーキテクチャパターンはありますか?
iphone - アルファのみ (A8) の pixelFormat に切り替えると、フラグメント シェーダーがアルファ情報を読み取れないのはなぜですか?
OpenGL ES 2.0 を使用する iOS アプリを作成しています。私は OpenGL に少し慣れていないので、これは些細な間違いかもしれません。
アルファ チャネルを使用して、あるテクスチャを別のテクスチャでマスキングするための単純なシェーダを作成しました。マスク テクスチャは次のように初期化されます。
glGenTextures(1, &name); glBindTexture(GL_TEXTURE_2D、名前);
glTexParameterf(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1024, 768, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glGenFramebuffersOES(1, &buffer); glBindFramebufferOES(GL_FRAMEBUFFER_OES, バッファ);
glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, 名前, 0);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
次に (後で) マスク テクスチャに何かを描画し、マスク テクスチャをこのフラグメント シェーダにリンクして別のテクスチャに適用します。
これは、私が望む方法を正確にレンダリングします。ただし、マスク テクスチャのバッファをバインドする際のオーバーヘッド (かなりの量のようです) を減らすために、マスク テクスチャに 8 ビットのアルファのみのピクセル フォーマットを使用しようとしています。しかし、RGBA セットアップからコードを変更すると、次のようになります。
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1024, 768, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
...アルファのみに:
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 1024, 768, 0, GL_ALPHA, GL_UNSIGNED_BYTE, バッファ);
...フラグメントシェーダーは何も描画できません。そもそもマスク テクスチャのアルファしか使用していないので、引き続き機能するはずです。なぜそうしないのか、何か考えはありますか?
android-ndk - Android(NDK)のopenglに適したCマトリックスライブラリ
NDKでopengles2.0を使用してCでレンダリングルーチンを作成しています。行列のグラフィカル変換用の(精度よりも高速な)ライブラリと、推奨できるベストプラクティスに興味があります。
自分で関数を書くことはありそうもないことではありませんが、車輪の再発明をする前にここで聞いてみようと思いました。ありがとう。
android - アンドロイドで良いことが知られているシェーダーをコンパイルできない
androidSDKsampeleから取得した次のシェーダーがあります。
シェーダーはopengles2.0の例からのものであり、例をコミリングすると正常に機能します。
ただし、プログラムでシェーダーをコンパイルしようとすると、次のようになります。
この方法には次のような事実もあります。
情報を返しません(私が信じているのは、グーグルの調査から理解した限り、既知のバグです)
誰かが私が間違っていることを知っていますか?
ありがとう、ジェイソン
android - Android、画面に触れると jni で openGL が遅れる
現在、Android プラットフォームでのゲームに必要なすべての機能をテストしています。hello-gl2 サンプル コードのみを変更し、いくつかのテクスチャ、VBO、FBO、および単純なシェーダーを 2 つのレンダリング パスに追加しました。
問題は、画面に触れずにアプリを実行すると、約 35 ~ 45 fps になることです。しかし、連続して画面に触れ始めると、レンダリングが遅くなり始めます! 入力とレンダリングが同じスレッドにあるため、これは問題なのでしょうか (あると思いますか?)、修正することはできますか? そのラグを修正できない場合、私のゲームはプレイできるほど十分に動作しない可能性があります。(いくつかの重いレンダリング要素があります)
//前もって感謝します!