問題タブ [openscenegraph]
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++ - OpenSceneGraphTexture2D画像の「ダーティ」と「setImage」のパフォーマンス
長方形の領域に2Dテクスチャを配置しています。これは動的テクスチャ画像(640x480)です。
私の画像データは他のスレッドで頻繁に(Nミリ秒ごとに)更新されます:
その後、テクスチャに設定された画像でダーティ(これが更新の最良の方法だと思った)を使用した場合、レンダリングされた画像を更新したいと思います。
同じポインタで画像を置き換えるだけの場合よりも、パフォーマンスが約7〜8倍遅くなります。
OSGのドキュメントとガイドラインを読むと、正しい方法は-'dirty()'だと思います。しかし、それは非常に遅いです。何かを誤解していませんか、それともコードに間違いがありますか?
opengl - osg アプリケーション内でシェーダー ソースをコンパイルする際の問題
テクスチャリングが完了する前にシーン内のすべてをレンダリングする必要があるため、finalDrawCallback で全画面クワッドをテクスチャ マップしたい OSG アプリケーションがあります。これが、プログラムとシェーダーを実行するために osg 呼び出しの代わりに openGL 呼び出しを使用する必要がある理由です。
具体的には、頂点シェーダーとフラグ シェーダーの両方のコンパイルに問題があるようです。)を呼び出すglGetShaderiv(shader, GL_COMPILE_STATUS, ¶m
と、param 値が変更されないか、未定義になります。ドキュメントによると、エラーが発生したと書かれています。ただし、glGetError()
確認のために呼び出すと、openGL はGL_NO_ERROR
.
セットアップ機能はこちら
シェーダー ソースを読み取るためのヘルパー関数:
そしてシェーダー自体
編集:私はこれを理解しました。問題は、これらの呼び出しを行うときにグラフィック コンテキストがなかったことです。
qt - OpenSceneGraph と Qt の統合
QtでOpenGLをいじりました。でも今は複雑なシーンが欲しい。(複数の COLLADA/MD2 モデルをロードした場合)。
これには、OpenSceneGraph (OSG) を使用することを考えています。OSG を Qt と統合することは可能ですか? もしそうなら、どのように?
ありがとう。
c++ - Qt4.7と4.8の間のOpenSceneGraphのパフォーマンス
私はOpenSceneGraph3.0.1(最新の安定版)とQtを使用しています。OSGには、OSGレンダリング用のウィジェットを作成するためのosgQtという名前のモジュールがあります。Qt4.7から4.8に切り替わる奇妙なフレームレートの低下に気づきました。4.7.3では、フレームレートはすべてのコンピューターで最大60fpsでした。4.8では、フレームはすべてのコンピューターで最大38〜40fpsです。間違いなく受け入れるには多すぎます。理由がわからない!それはバグですか、それとも何ですか?
c++ - if ステートメントを使用した奇妙な動作
OpenSceneGraph を使用してアプリケーションを開発していますが、if ステートメントで奇妙な動作が発生しています。それがAPIに固有のものであるかどうかはわかりません。私にとってはどのレベルでも意味がないからです。
コード:
どこ:
fileAddList_: ファイル名を維持するために使用されるカスタム オブジェクトの静的ベクトル
FileStampThread: OpenThreads オブジェクトのインスタンス
addFiles(): 渡されたファイル オブジェクトのリストを保存するスレッド内のメソッド
上記のコードは、アプリケーションにホットロードを実装しています。FileStampThread インスタンスは継続的に実行され、渡されたファイル名のタイム スタンプをチェックします。スタンプが変更されると、ファイル名が別のリストに保存され、再読み込みのために渡されます。
奇妙なことに、追加するファイルがなくても (つまり、fileAddList_ が空の場合でも)、コードのこのセクションを有効にすると、シーン グラフの更新トラバーサル (このコードが実行されるとき) が大幅に遅くなります。その結果、更新トラバーサル時間は桁違いに増加します。
ただし、sg::FileStampThread::addFiles への呼び出しをコメント アウトすると、スローダウンはなくなります。それでも、呼び出しをデバッグ モードでトラップしたため、実行されません。
だから、私は困惑しています: 条件付きテストが失敗し、どう見てもそれが実行されないのに、条件付き内のコード行がプログラムの実行速度に影響を与えるのはなぜでしょうか?
補足として、変数を静的として宣言することに関係があるのではないかと疑ったので、同じ効果を得るために、代わりに(externを使用して)グローバルとして宣言しようとしました。
以下のコメントのいくつかに対処するための編集:
スレッドは OpenThreads オブジェクトのインスタンスです。ここには MS 固有のものはありません。インスタンスは静的です。
addFiles() はテンプレート化されていません
コードを含むループをテストしました。行を交互にコメントアウトしました。addFiles() 呼び出しを含めることが原因であることに絶対に肯定的です。
デバッグとリリースは同じです。コードを別の関数にプッシュしても、残念ながら何も変わりませんでした。
- OSG は高性能であり、予測ミスについてのコメントは正しいかもしれません。今後の研究...
FileStampThread クラスのコード:
visual-studio-2010 - C2086: 'int WINGDIAPI': Open Scene Graph の再定義エラー?
私はこの問題を解決しました(ここから)。ここに置くだけで、エラーに遭遇した他の人が、私がそれを入手したWebサイトを掘り下げるよりも、より明確な質問と回答を見つけることができます. 私はすぐにこの質問に答えます。
発生したエラーは次のとおりです。
c++ - OSGで回転すると画像が消える
x、y軸を作成し、この軸の内側の点をランダム化する単純なOSGプログラムがあります。これにより、レーザースキャンデータ用の3Dビューアを作成できるようになります。(私はそれが以前に行われたことを知っていますが、私たちはそれが超軽量である必要があります)。コードは次のとおりです。
このコードは機能し、10ユニットの長さのx / y軸を生成し、その軸の内側にランダムなポイントの生成を開始します。ただし、問題は、OSGビューアで画像を回転させると、画像全体が消えることが多いことです。開始した場所に回転して戻すことで元に戻すことができる場合もありますが、多くの場合、永久に消えます。
なぜこれが起こっているのか誰かが知っていますか?
c++ - プリミティブのオーバーラップを排除しながら全体的な不透明度を維持する OpenGL ブレンド機能
トライストリップである単一のプリミティブ セットを持つジオメトリがあります。プリミティブの一部の三角形が重なり合っているため、マテリアルをジオメトリにアルファ値で追加すると、(予想どおり) 重なりが見えます。ただし、ジオメトリを変更せずにこの効果を取り除きたい - さまざまなブレンド モード (glBlendFunc()) をいじってみましたが、これを機能させることができませんでした。興味深い結果が得られましたが、トライ ストリップのプリミティブ内の不透明度効果を排除し、オブジェクト全体の不透明度を維持するものは何もありませんでした。私は OpenSceneGraph を使用していますが、問題のジオメトリに対して glBlendFunc() を呼び出すメソッドを提供しています。
したがって、画像から、ピンク色の道路、紫色の道路、黄色の道路が 3 つの個別のオブジェクトを構成し、それぞれが 1 つのトライ ストリップを使用して作成されていると仮定します (複数のストリップがありますが、議論のために、ここでは異なる色のトライ ストリップが 3 つしかないことにします)。 . 私は基本的に同じ色内の自己交差を見たくありません
また、私の質問はこれとほとんど同じです: OpenGL, Primitives with opacity without visible overloadですが、その質問に対する受け入れられた回答でブレンディング モードを試したときに、ストリップがシーンにレンダリングされなかったことに注意してください。全て。
c++ - osg::viewer からの RGB 画像
次のようなコードがあります。
さて、このビューアー オブジェクトは、車両モデル、地形などを含むシーンのビューを提供します。データがどのようにシーンに書き込まれたかに関係なく、このビューアーから RGB 画像を取得したいと考えています。
基本的に、ビューアーからの RGB 画像が必要で、シーンに書き込まれるデータに関する事前情報はありません。ビューアが 1024*768 ウィンドウに何かを表示する場合、RGB 画像として表示したいと考えています。
cmake - CMakeを使用してOpenSceneGraphプロジェクトを構築するにはどうすればよいですか?
OpenSceneGraphソースをダウンロードし、「〜/ OpenSceneGraph-3.0.1」ディレクトリに解凍し、CMakeを使用して「〜/OpenSceneGraph-3.0.1-build-eclipse-cdt」にソース外のEclipsemakeプロジェクトを作成しました。 "ディレクトリ。「〜/ OpenSceneGraph-3.0.1-build-eclipse-cdt」ディレクトリで「make」を実行すると、OpenSceneGraphは正常にビルドされます。OpenSceneGraphをUbuntuシステムにしっかりとインストールしたくないので、「sudomakeinstall」を実行していません。
次に、CMakeを使用して、コンパイルされたOpenSceneGraphライブラリを使用してプロジェクトを作成します。CMakeLists.txtで次のコードを使用します。
しかし、OpenSceneGraphはCMakeによって検出されなかったようです。
CMakeがコンパイル済みのOpenSceneGraphライブラリを「〜/ OpenSceneGraph-3.0.1-build-eclipse-cdt」ディレクトリで見つけて、「sudomakeinstall」を使用してOpenSceneGraphをしっかりとインストールしたかのようにプロジェクトを作成する方法を知っている人はいますか。提案をありがとう。