問題タブ [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.
android - Android 5.1 のクラッシュ -- glDrawArrays GL_POINTS -- 致命的なシグナル 7 (SIGBUS)、コード 2
数か月前、Nexus 4 を Android 5.1 (現在は 5.1.1 - どちらも Google のストック ファクトリー イメージ) にアップデートした後、GL_POINTS で glDrawArrays を使用してパーティクルを描画しているときに、ゲームの 1 つがクラッシュし始めました。コードを単純化し、Java で再実装し、クラッシュを再現しました。
クラッシュは常に Fatal signal 7 (SIGBUS)、OpenGL ドライバー コードと思われるコード 2 です。
このテストでは、for ループで 118 回の drawPoint() 呼び出しを使用して、すべて正常に実行されているように見えますが、119 回の drawPoint() 呼び出しを試行すると (次のフレームで) クラッシュします。119 を超える drawPoint() の呼び出しもクラッシュします。
この Java コードは、Nexus 4 仮想デバイスで問題なく動作します。元の C コードは、PC、iOS、およびその他の Android デバイスで問題なく実行されます。
これは、Nexus 4 ドライバーの問題である可能性があります。何か案は?
ログキャット:
MainActivity.java のコード:
c++ - DirectX 9 ポイント スプライトがスケーリングしない
ポイント スプライトはほとんどすぐに動作するようになりましたが、1 つのことに固執しているだけです。それらはおそらく 2x2 ピクセルのスプライトとしてレンダリングされます。これは、特に他のモーションがある場合は、あまり簡単に見ることができません。ここで、すべての変数を微調整してみました。おそらく最もうまく機能するコードは次のとおりです。
わかりましたので、 と を変更POINTSCALE_A
してPOINTSCALE_B
も、実際には何も変わりません。CPOINTSIZE
も同様です。違いはありません。と に何かを割り当てようとするPOINTSIZE_MAX
と_MIN
、何を割り当てても、常にスプライトのレンダリングが停止します。また、falseに設定POINTSIZE
して設定しようとしましたが、運もありません。POINTSCALEENABLE
これは、周りを見回した多くの人が答えを見つけられなかったようです。メカニズムの説明はMSDNにありますが、はい、stackoverflow を確認したところ、回答のない同様の質問が見つかりました。別の情報源は、max 変数と min 変数を設定することだけを提案していましたが、これは私が言ったように、パーティクルをほとんど消し去っています。
ParticlePoints
およびparticleSpeeds
D3DXVector3 配列であり、期待どおりの結果が得られます。私がフォローしている本では、XYZ と拡散を使用してカスタム頂点を定義することが提案されていますが、正直なところ、これを行う理由はわかりません。宣言の長いリストにさらに多くの情報が追加されるだけです。
どんな助けでも大歓迎です、事前に感謝します。
編集:スケール値のいずれかが0.99999997fを超えている場合(少なくともそれと0.99999998fの間で効果が見られます)よりもさらに微調整が示された場合、小さなバージョンが得られます。テクスチャ - ただし、それはまだ大きい可能性があるため、実際にはそれほど良くなく、制御可能にするというタスクにほとんど失敗しています.
opengl - キューブ マップ内の複数のカメラでポイント スプライトをレンダリングする
頂点のパーティクル システムをレンダリングしています。次に、ジオメトリ シェーダーでクワッドにテッセレーションされ、ポイント スプライトとしてテクスチャリング/レンダリングされます。次に、カメラからの距離に応じてサイズが調整されます。シーンのすべてのフレームをキューブ マップにレンダリングしようとしています。基本的には、シーンに 6 台のカメラを配置し、立方体の面の各方向に向けて画像を保存します。
私のポイントスプライトはさまざまなサイズです。それらが 1 つのカメラの境界に近づくと (それらが十分に大きい場合)、2 つのカメラに同時に表示されます。ポイント スプライトは常にカメラの方を向いているため、キューブ マップを 3D 空間に戻すときに継ぎ目に沿って連続していないことを意味します。これは、ポイントがカメラに非常に近い場合に特に顕著です。ポイントが大きくなり、両方のカメラ ビューにさらに広がるためです。アルファブレンディングも行っているので、これも問題の原因になっている可能性があります。
カメラの端に近いポイントをカリングすることはできないと思います。なぜなら、すべてを 3D に戻すと、雲がまばらに存在する奇妙な領域があると思うからです。もう 1 つの考えは、各カメラのエッジをぼかすことでしたが、これもまた、3D 空間に戻ると奇妙なぼやけたゾーンになると思います。フォトショップでフレームを手動で編集して見栄えを良くすることもできると思いますが、30fpsのアニメーションなので、これはちょっと面倒です。
添付の画像は、キューブ マップの詳細です。スプライトが正しく並んでいない水平方向の継ぎ目と、画像の右側に少し目立たない垂直方向の継ぎ目が見られます。これと同じカメラ設定を他のシーンで使用したことがあり、キューブマップは問題なく表示されるため、カメラ設定が正しいことは確かです。
誰にもアイデアがありますか?
私はopenFrameworks / openGL fwiwでこれをやっています。
android - Android OpenGL ES ポイント スプライト テクスチャ イメージが上下反転していた
Android で使用してテクスチャ イメージを描画しglDrawArrays(GL_POINTS, 0, PARTICLE_NUMBER)
、それを画面にレンダリングします。
一部の携帯電話では、画像が上下反転していました。GL_POINT_SPRITE_COORD_ORIGIN
OpenGL ESにはコマンドがないようです。
他に修正できる方法はありますか?
javascript - three.js でのポイント スプライトのレンダリングの問題
私は現在、アニメーション化されたストロークの円を過剰にレンダリングすることにより、ブラウザーでデータを視覚化するプロジェクトに取り組んでいます。私は 3D ライブラリの評価を開始し、three.js を使用して概念実証アプリケーションを作成しようとしました。私の 1440p モニターでは、最大 150,000 ポイントのスプライトを 60 fps でアニメーション化およびレンダリングできます。詳細を見始めるまで、すべてが見栄えがします。2 つのレンダリングの問題があります。
- アニメーションをオフにしても変な横線が出る
- カメラを向けると、重なっているポイント スプライトの透明な領域に、下にあるポイント スプライトではなく背景が表示されます。
概念実証アプリケーションは次のとおりです: https://jsfiddle.net/tcpvfbsd/1/
問題を確認する最善の方法は、ポイント スプライトが領域全体に広がるのを数秒待ち、右上隅の速度コントロールを使用してアニメーションを一時停止し、マウスの左ボタンを使用してカメラを回転させて回転させることです。