問題タブ [opengl-4]
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 - 不変のテクスチャには GL_TEXTURE_MAX_LEVEL が必要ですか?
関数を使用してテクスチャを割り当てる場合、ここで説明するように、適切な値glTexImage*
に設定し、その値までのすべてのレベルを指定する必要があることを知っています。glTexParameteri(GL_TEXTURE_MAX_LEVEL)
関数の場合もこれが必要になるとは思っていませんでした。glTexStorage*
関数はレイヤーの数をパラメーターとして受け入れ、その数のレイヤーに事前にメモリを割り当てるためです。それでも、この方法で定義された不変のテクスチャをサンプリングできないことに気付きました - を呼び出すglGenerateMipmap
か指定GL_TEXTURE_MAX_LEVEL
するまではlevels-1
。
なぜそれが必要なのかという公式の理由は見つかりませんでした。不変のテクスチャのパラメーターは、まあ、不変である (そして適切に初期化されている) と予想していました。この動作が正しいかどうか (およびその理由) を誰かが確認できますか? それともAMDドライバーのバグですか?
opengl-4 - 単純な三角形はopengl 4.3で描画されません
私はopenglプログラミングで手を試し、コードブロックにデフォルトの例をロードしました.関数ポインタのロードをたくさん行った後、特定の色でクリアできるウィンドウにopengl 4.3コンテキストを取得しました(YES! )、先に進んで三角形をレンダリングしようとしました...うまく機能していません。どこが間違っていたのかわかりません。VBOとシェーダーの作成が間違っていないかどうかを確認するために、Googleとデバッガーの暗いコーナーを回っていました..運が悪い
関連する gl コードは次のとおりです。
そしてシェーダー:
言うまでもなく、私はどんな助けにも感謝します.
編集:あなたが疑問に思っている場合に備えて、クリアされた背景しか表示されません...
opengl - imageAtomic操作およびコンポーネントへのアクセスのためにRGBA32FテクスチャをR32Fとしてシェーダーに渡す
3D RGBA32FテクスチャをimageAtomic操作(つまりR32F)と互換性のあるタイプとしてシェーダーに渡し、RGBA32Fテクスチャの適切なコンポーネントが決定論的にアクセスされるようにivec3インデックスを何らかの方法で変更することは可能ですか?
これは、インデックス作成がはるかに簡単なバッファで可能であることを私は知っていますが、ivec3は巧妙なインデックス操作を妨げているようです。
c - OpenGL ウィンドウ エラー
C で単純な OpenGL ウィンドウを作成しようとしていますが、ウィンドウ自体に問題があります。ウィンドウが作成され、突然消えます。「msg」をゼロにすることでこれを修正しましたが、ウィンドウは引き続き終了しようとし、他のすべてのメッセージは渡されません。そのため、エスケープを押しても終了できません (WM_KEYDOWN が渡されません)。グラフィックのレンダリングは正常に機能します。これの原因と修正方法を知っている人はいますか?
entrypoint.c
main.c
main.h
opengl - 互換性のあるグラフィックス カードと更新されたドライバーを使用しても、nvidia OpenGL 拡張機能を利用できない
440 GT Nvidia カードを持っています。使用する必要がある新しい GL_NV_bindless_texture 拡張機能を含む opengl 4.3 のサポートが必要です。
ドライバーをアップグレードしたところ、OpenGl 4.3 はすべての Kepler または Fermi ベースの GPU で利用できるようになりました。私のはリストに載っています。ここで見ることができます:
しかし、私が何をしても、OpenGL 4.3 はサポートされていません。アップグレードしましたが、まだ opengl 4.2 を使用していると表示されます -> 拡張機能は許可されていません。
どうしてですか?この特別な拡張機能を使用することはできませんか?.
c++ - OpenGL4.0 でインターリーブされた属性配列を使用してパフォーマンスを向上
私は OpenGL4.X を使用しています。最近、このApple OpenGLES2 doc を読みました。ここでは、インターリーブされた属性配列を使用すると、IOS モバイル デバイスでのパフォーマンスが向上し、(属性のブロックを使用する代わりに) 推奨される方法であると述べられています。
私が何を意味するのか理解できなかった人のために、ここに例を示します。
単一の属性配列内の属性のブロック:
インターリーブされた属性配列:
だから私の質問は:デスクトップGPUで実行されているOpenGLにも当てはまりますか? はいの場合、パフォーマンスの向上は理論的にどのくらい大きくなりますか?
opengl - glGenerateMipmap と 1.#QNAN
グラフィック エンジン (遅延レンダリング) に HDR を実装しており、画像の平均輝度 (RGBA16F) を計算する必要があります。ミップマップを生成してから、最小のミップマップ (1x1) を読み取ります。
(カメラを動かしたときに) data[0]、data[1]、および data[2] に 1.#QNAN が含まれることがあることに気付きました。なんで ?それを修正する方法は?
opengl - 画像 API を使用したテクスチャへのレンダリング (フレームバッファなし)
実験として、画像 API のみを使用してテクスチャへのレンダリングを試みることにしました。最初は、深度テストの前にテクスチャの書き込みが行われたため、結果は明らかに間違っていました。を有効にしましたがearly_fragment_tests
、これはほとんどこのタイプのユースケースで導入されましたが、Z ファイティングのように見える奇妙なちらつきが発生します。通常のレンダリング。
とにかく、問題の画像を含めました。何が起こっているのか、なぜこれが機能しないのか、誰かが説明を持っているかどうか知りたいです。動作させることはできますか?
ここに最小限の再現子があります
opengl - OpenGL の個別のプログラム ステージ
比較的新しい機能 GL_ARB_separate_program_object を調査しています。私が理解しているのは、glUseProgramStages を介してそこにマップされるステージからのシェーダーを含むパイプライン オブジェクトを作成する必要があることです。
これにより、複数のシェーダーを使用する 2 つの可能性について考えさせられます。
1. 各パイプラインへの 1 回のマッピングから生じるバリアント頂点/フラグメント シェーダー カップル (現時点では他のシェーダー タイプを使用しない) を使用して複数のパイプラインを作成します。
2.単一のパイプラインを作成し、実行時にマッピングを別のシェーダーに切り替える
私は主にパフォーマンスに関心があります.どのオプションがよりパフォーマンスに優れていますか?