問題タブ [glscene]

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

glscene - GLScene のデカール テクスチャ

多くの異なるテクスチャが割り当てられている多くの TGLPlane の 1 つに視覚的なハイライト (実際には選択ボックス) を配置したいと考えています。GLScene を使用して、その平面に 2 番目のデカール テクスチャを適用するにはどうすればよいですか?

いくつかの背景。プレーンに適用されるさまざまなテクスチャはすべて MaterialLibrary に保存され、それぞれのプレーン Material.MaterialLibrary および Material.LibMaterialName に割り当てられます。これは、テクスチャが何回使用されても 1 回だけロードされるため、テクスチャの適切な効率的な再利用です。

MaterialLibrary テクスチャを適用すると無視されるため、TGLPlane のプロパティを使用することはできないようです。

そうするために私が見つけることができる方法は、もちろん、その特定のテクスチャを共有する他のすべての平面に適用される LibMaterial を変更する必要があるようです。

Google Code (Checkers)で見つけた別の方法は、独自の「ハイライト」部分的に透明なテクスチャが適用された 2 番目の平面を作成し、元のオブジェクト (たまたま立方体) の少し上に配置することで問題を解決します。これは回避するためのハックのように思えますが、可能であれば回避したいと考えています。

GLScene の組み込み機能でない場合、その特定の平面に到達したときにレンダリングをインターセプトし、いくつかの OpenGL プリミティブを使用して、MaterialLibrary テクスチャが適用された後にデカール テクスチャを適用する方法はありますか?

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

delphi - オブジェクトの 3D 座標をビューポートの 2D 座標に変換する glScene 関数

オブジェクトの 3D (xyz) 位置座標を GlSceneViewer に表示されるそのオブジェクトの画面 2D (xy) 座標に変換するための glScene (Delphi) の組み込み関数はありますか?

ありがとうございました!

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

delphi - Delphi XE5 + GLSceneForm が一部の PC で動作しない

Delphi XE5 および最新の GLScene にアップグレードした後、一部の PC で TGLSceneForm がアプリを完全にクラッシュさせます (以下のログ ファイルを参照)。ただし、まったく同じアプリを使用して Delphi 2010 (古いバージョンの GLScene を使用) でコンパイルすると、完全に動作します!

これは、一部の PC でのみ行われます。たとえば、私たちのオフィスには 3 台の HP ワークステーションがあり、XE5 アプリでは 2 台が正常に動作し、1 台がクラッシュしました (グラフィック アダプターが異なります)。ただし、Delphi 2010 でコンパイルすると、3 台の PC はすべて問題なく動作します。

アプリからの GLScene ログ ファイルは次のとおりです。

サンプルのコードは次のとおりです。

これは、XE5 にアップグレードしてからの GLScene の根本的な問題のように見えるため、どこに向かうべきかわかりません。すべてのお客様にグラフィックス アダプターのトラブルシューティングを要求するソフトウェアをプッシュすることはできません。特に、まったく同じ PC で Delphi 2010 を使用しているため、問題の原因は私たちのプログラミングではないことがわかっています。

どんなアイデアや助けも大歓迎です。リック。

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

delphi - GLScene FreeForm RayCastIntersect の問題

Delphi (XE2) で GLScene RayCastIntersect 関数を使用して、弾道軌道のセグメントと FreeForm メッシュの間の交点を決定しています。メッシュをインポートして RayCastIntersect 関数を使用すると、交点が正しく報告されます。ただし、FreeForm オブジェクトを正の x 座標に変換すると、関数は正しい交点を返さなくなります。返される交点は、常にターゲットの前にあります (つまり、x = 0 付近の正しい着弾点の前)。FreeForm が x <= 0 にある場合、他のすべての変換と回転は、RayCastIntersect 関数によって正しく処理されるように見えます。

FreeForm の個々の MeshObject に対して x 変換を実行すると、RayCastIntersection 関数は正の x 変換に対しても正しい交点を返すことに気付きました。残念ながら、個々のメッシュ オブジェクトを回転させる方法がないため、これを回避策として使用することはできません。

他の誰かがこの問題に遭遇しましたか? これは既知のバグですか (オンラインでは何も見つかりませんでしたが)? それとも私は何か間違ったことをしていますか?任意の提案をいただければ幸いです。私の Check Impact コードについては、以下を参照してください。

0 投票する
0 に答える
198 参照

opengl - GLScene テクスチャのメモリ使用量の削減

平面上の画像を表示するためにGLSceneを使用しています。

1.2 メガバイトの写真が、平面に適用されるテクスチャにロードされたときに 50 MB を超えるメモリを使用する理由を理解するのに苦労しています。

レンダリング品質は私にとってそれほど重要ではないので、テクスチャ圧縮を tcHighSpeed に設定しようとしましたが、私が見る限り違いはありません。

テクスチャが設定されていない「空の」平面を追加する場合。1 ~ 2 メガバイトのメモリを使用します。

これは OpenGL の問題ですか、それともメモリ管理に関して GLScene は非常に非効率的ですか?

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

delphi - Delphi の GLScene または OpenGL を使用して、テクスチャを 4 ポイント ポリゴン/プレーンに適合させる

Delphi XE2 用の最新の GLScene トランクを使用しており、2D ではなく 3D を使用して画面に GUI 要素を描画する GUI っぽいタイプのプロジェクトに取り組んできました。

動作しますが、明らかな理由により、グラフィックスの配置はピクセル単位で完璧ではありません。

TGLSceneViewer の 1 ピクセルが画面上でほぼ 1 ピクセルになるように、3D ビューをマッピングすることができました。私にはそれで十分です。

ただし、GUI に 3D を使用するという考えはあきらめており、代わりに GLScene を 2D グラフィックス表現専用に使用することに集中します。これは GPU アクセラレーションであるためです。

次に、GUI に Graphics32 を使用した以前のプロジェクトで Projective Transformation を使用したことを思い出しました。

射影変換を使用すると、単純に 3D 空間にポイントをプロットし、それらのポイントの 3D 座標を読み取り、座標を 2D 座標に変換して、それらを TBitmap32 射影変換パラメーターに適用することができました。私のソフトウェアには 3D 機能がありました。

だから、私の質問は:

GLScene または OpenGL でテクスチャを「ストレッチ」して、テクスチャが 4 点間または平面内に収まるようにすることはできますか?

そうすれば、2D グラフィックスに GLScene を使用できますが、3D のように見せるために簡単なトリックを行うことができます。

以下のリンクは、私が探しているものを視覚的に表現したインターネット上の画像を指しています: http://i.stack.imgur.com/hDdqa.png

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

png - TGLCompositeImage に PNGImage を追加すると SIGSEGV エラーが発生する

私は Lazarus 1.2.4 と GLSCENE svn 6462 (1.2 svn バージョン) を使用しています。

この機能を使用して以下の資料を追加します

実行すると、以下のエラーが表示されます

pngimageがストリームからインラインでロードしようとすると、掘り下げてみてください

そして、raise EInvalidRasterFile.Create('Invalid PNG file'); を実行する前に

SIGSEGV を取得します。

だから誰でも助けられる...

Ps ... TGLComposite 画像を TGLPictureImage で変更すると完璧に動作しますが、画像の透明度がありません..

Ps2...さらに掘り下げた後、すべてのエラーが外部LIBPNGから発生しているため、GLPNGFILEとLIBPNGがうまく連携しないことがわかりました