問題タブ [point-sprites]
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 - GLFW を使用してテクスチャ ポイント スプライトをレンダリングする
現在、ポイント スプライトを使用してテクスチャを適用したい多数のポイントをレンダリングしています。テクスチャをロードするには、GLFW を使用しています。これについて OpenGL Super Bible の章の指示に従いましたが、フラグメント シェーダーでテクスチャを適用しようとしてもうまくいきません。
これに関する私のコードスニペットの一部を次に示します。
私のinitGLメソッドでポイントスプライトモードが有効になっています。ポイントにテクスチャが適用されない理由は何ですか?
編集: if ステートメントを挿入して、glfwLoadTexture2D の呼び出しが適切に機能しているかどうかを確認しましたが、実際にはそうではありません。これが失敗する原因は何ですか? 相対パスと実際のパスをパラメーターとして使用してみましたが、それでも変わりません。また、別の .tga イメージを使用してみました。なぜそれがうまくいかないのか、まだわからない人はいますか?
編集 2: freeglut と glfw が一緒に動作しないのでしょうか?
point-sprites - ポイントスプライトとビルボードの違い
OpenGL の Point Sprites と Billboards の違いを誰か教えてもらえますか? 私はそれらの両方について多くのことを読みましたが、どちらをいつ使用するか、実際に違いがあるかどうかについてますます混乱していますか?
android - Android OpenGL ES 2.0 でのポイント スプライトの使用
「ポイント スプライトとテクスチャ付きクワッド スプライト」などに関するいくつかの議論を見てきました。
しかし、私が正しく理解していれば、ポイントスプライトのサイズは(ポイントスプライトの範囲によって)制限されていませんか?
私は OpenGL ES 2.0 にかなり慣れていないので、何かが欠けている可能性が非常に高いですが、どのような状況でゲームでスプライトを効果的に使用できるでしょうか (パーティクル システムであることは明らかです)。ある程度のサイズを超えないと、キャラクターなどではほとんど使い物にならないのではないですか?(また、最小サイズと最大サイズがデバイスによって異なり、さらに予測が困難になることも理解しています)?
編集:以下のコメントとさらなる調査に加えて、「ポイント」に保証されている唯一のサイズは「1」(1ピクセル)であるようです。
非常に多くの画面 DPI と解像度を備えた Android のようなシステムでは、パーティクル システムでポイントを実際に使用できるのでしょうか?
詳しく説明すると、解像度 / DPI の低い画面では 1 つのピクセル ポイントが非常に大きく表示されますが、たとえば、Res / DPI が非常に高い画面を備えた Nexus 10 タブレットでは、1 つのピクセル ポイントはほとんど目立たなくなります。通常、スプライトを操作するときは、画面の解像度に応じてスケーリングします (つまり、スプライトを使用可能な画面の 1/4 を占めるようにしたい場合は、X 方向と Y 方向の両方で、単純に画面/2 でスケーリングします。これにより、次のようになります。私はスクリーンの独立性とうまく機能します. しかし、N10タブレットでたとえば4の粒子サイズが必要な場合、ポイントのみを使用するローエンド(および低解像度)の電話デバイスと同じ量の相対スペースを占有します.サイズは 1 で、1 ピクセルより大きいものは保証できません。これはどのように機能しますか?
ポイント/ポイント スプライトが Android のようなシステムでいつ役立つかを理解しようとしているだけです!?
macos - GL_POINT_SIZE_ARRAY_OES に相当する OpenGL?
小さな Mac アプリでポイント スプライトを描画しようとしています。各スプライトに独自のサイズを持たせたいのですが、OpenGL ES にはクライアント状態 "GL_POINT_SIZE_ARRAY_OES" があることがわかっています。
私はいくつかのグーグルを行い、同じことを行う必要がある(あなたが思うだろう)「GL_POINT_SIZE_ARRAY_APPLE」という同様の値があることを発見しました。しかし、何らかの理由で、そうではないようです。ここに私の描画コードがあります:
SpriteData は、各スプライトの頂点/サイズ データを含む構造体です。spriteVertices は、その構造体の単なるインターリーブ配列です。
頂点ポインターは正常に機能しています。スプライトを描画していますが、サイズの値を無視しているようです。代わりに、glPointSize() によって設定された値にデフォルト設定されます。
このコードは警告なしでコンパイルされるという事実にもかかわらず、「GL_POINT_SIZE_ARRAY_APPLE」をグーグル検索してもほとんど結果が得られないことは非常に疑わしいと思われます。これは役に立たないパラメーターですか?もしそうなら、他にどうすれば私が望むものを達成できますか?
opengl - OpenGL 4.3 のテクスチャ付きポイント スプライト
OpenGl 4.3 でポイント スプライトにテクスチャを適用する方法はありますか? 私はインターネットを検索しましたが、ほとんどのチュートリアルとガイドは、まだサポートしている古いバージョンを使用しています:
ただし、この機能はサポートされていないようで、標準のテクスチャ環境は機能していないようです。それを行う方法またはそれを行う方法をどこで見つけるかについてのアドバイスはありますか?
opengl - 最新の OpenGL によるポイント スプライト サイズの減衰
ポイント スプライトを使用して OpenGL 3+ でいくつかのパーティクルをレンダリングしようとしています。ポイントに大きな問題があることに気づきました。カメラの距離に応じて自動的にサイズが大きくなります。その結果、次のようになります。
パーティクル エミッタの近く:
そして、遠くにあると、すべてがぼやけて肥大化して見えます。
古いバージョンでは、ポイント サイズ スケールを で調整できるようglPointParameter
です。この関数は、新しい 3 以降の OpenGL でも引き続き使用できますが、サポートされるパラメーターは 2 つだけです。GL_POINT_FADE_THRESHOLD_SIZE
必要なもののように思えましたが、試してみましたが結果はありませんでした。私も使っていますglEnable(GL_PROGRAM_POINT_SIZE);
カメラの距離に基づいたポイントの自動スケーリングを回避できる他の方法はありますか? 三角形で作られた標準のビルボードを使用するためにコードを変更する必要はありません。
現時点で関連性があるかどうかはわかりませんが、これは私が使用している頂点シェーダーです:
c++ - Oculus Rift + ポイント スプライト + ポイント サイズの減衰
Oculus Rfit をサポートする小さなプロジェクトをコーディングしています。ポイント スプライトを使用してパーティクルをレンダリングしています。頂点シェーダーの「カメラ」からの距離に基づいて、ポイント スプライトのサイズをピクセル単位で計算します。デフォルトの画面 (Rift ではなく) で描画すると、サイズは完全に機能しますが、Rift に切り替えると、次の現象に気付きます。
左目の粒子は小さく、非常に急速にサイズが小さくなります。右目のパーティクルは巨大で、サイズは変わりません。
スクリーンショット: リフト無効: http://i.imgur.com/EoguiF0.jpg リフト有効: http://i.imgur.com/4IcBCf0.jpg
頂点シェーダーは次のとおりです。
st_screen_size ユニフォームはビューポートのサイズです。Rift でレンダリングするときに frambuffer を 1 つ使用しているため (片目ごとに 1 つの半分)、st_screen_size の値は (frabuffer_width / 2.0, frambuffer_height) にする必要があります。
ここに私のドローコールがあります:
この問題は何日も私を悩ませてきました...そして私は行き止まりに達したように感じます. ビルボードのクワッドを使用することもできます...しかし、簡単にあきらめたくありません:)プラスポイントスプライトはより高速です。Rift でのレンダリング時に、距離に基づくポイント サイズの減衰の背後にある計算は行われますか? 何かを考慮していませんか?数学は (少なくとも) 私の得意分野ではありません。:) どんな洞察も大歓迎です!
PS: 投稿したコードについて追加情報が必要な場合は、喜んで提供します。