問題タブ [sharpgl]

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

c# - SharpGL- DrawArrays は AccessViolationException を与える

SharpGL サンプルをガイドとして使用して、WPF で最新の OpenGL ハロー ワールド アプリを作成しています。

Draw メソッドで DrawArrays を呼び出すと、AccessViolation Exception が発生するようです。インターネットをチェックしたところ、それらはすべて、基盤となるGC再配置アレイである可能性があることを示唆しています。しかし、私は VBO を使用しているので、これは起こらないはずですよね?

コード:

XAML:

XAML.cs

}

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

c# - 負荷がかかると WPF バインディングが機能しなくなる

私はこの問題に何週間も頭を悩ませてきたので、外部の助けを探す時が来たと思いました:-)

バインディングを使用する多数のコントロールを含むメイン ウィンドウを備えた WPF アプリケーションがあります。コントロールの 1 つは SharpGL コントロールです。

バインディングはすべて私のラップトップや他の高スペック マシンでは機能しますが、低スペック マシンでは確実に (またはまったく) 機能しません (私のラップトップはハイパースレッド クワッドで、失敗したテスト マシンの 1 つはデュアル コアです)。 . ラップトップで SharpGL コントロールのフレーム レートを上げると、バインディングが機能しなくなります。同様に、十分に遅くすると、デュアルコアマシンで動作し始めます(ただし、SharpGL コントロールは遅すぎて、必要なものに使用できません)。

注目に値する最後のことは、PropertyChanged イベントを処理してバインディングを手動で更新することで問題を解決できることですが、それではもうバインディングを行っていません。

だから私は本当にいくつかの質問があると思います:

1) 以前にこのような問題を見たことがありますか? それを解決する方法について何か考えはありますか?SharGL コントロールの存在に直接関係している可能性はありますか? 2) コントロール (この場合は SharpGL コントロール) が何らかの形で他のすべての要素でバインディングの更新を停止するような方法で失敗する可能性はありますか? 3) SharpGL コントロールによって発生し、私のコードで処理される Draw イベントが UI スレッドを十分にロードして、バインディングの更新が発生するのに十分な時間がないことは可能ですか?

前もって感謝します

マイク・ナッシュ

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

c# - SharpGL turn of SharpGL.WPF.OpenGLControl.timer_Tick

現在、SharpGL と WPF を使用して、そのパフォーマンスが適切かどうかをテストしています。テストは、大きな STL ファイル ( https://en.wikipedia.org/wiki/STL_(file_format) ) をロードし、それを SharpGL.WPF.OpenGLControl に描画して、回転、スケーリング、変換することです。現在の結果は、まともではありませんが、メソッド SharpGL.WPF.OpenGLControl.timer_Tick から呼び出される Paint() メソッドを継続的に呼び出している可能性があります。

質問: この time_Tick をオフにするにはどうすればよいですか? (即時モードで描画するため、time_Tick の呼び出しごとに 67 ミリ秒かかります。)

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

c# - OpenGL は n 個の頂点ごとに描画します

大規模なデータセットのライン プロットを含むアプリケーションの作成に取り組んでいます。

私の現在の戦略は、各チャネルのデータを 1D 頂点バッファーにロードすることです。

次に、描画時に頂点シェーダーを使用して、バッファーを頂点に組み立てます (これにより、バッファーの 1 つを複数のデータ セットに再利用できます)。

これはかなりうまく機能しており、あまり速度を落とさずに数億のデータポイントを描画できます。

物事をもう少し伸ばすために、実際に描画されるポイントの数を減らしたいと思いますが、すべてが単一のピクセルで表される1000ポイントをプロットするポイントはあまりないため、単純な削減(つまり、nポイントごとに描画)します。

これを行う方法の 1 つは、ジオメトリ シェーダーを使用して N ポイントごとにのみ放出することですが、これが最善の攻撃計画であるかどうかはわかりません。

これはこれを行うための推奨される方法でしょうか?

0 投票する
2 に答える
1698 参照

c# - C#: WinForms/WPF レンダリング ループ

WPF ウィンドウまたは WinForm でレンダリングするレンダリング ループを作成したいと考えています。したがって、SharpGL ( https://sharpgl.codeplex.com/ )を使用したいと考えています。ループを作成するために、スレッドを作成しました:

Render では、描画呼び出しを GPU に送信したいと考えています。これまでのところ問題はありません。ただし、Winforms と WPF には独自のスレッドとループが必要です。そのため、以前に使用した LWJGL ( https://www.lwjgl.org/ ) を使用して Java のように Window を作成して描画することはできません。アプリケーションでフォームを実行する別のスレッドを開始する必要があります (短くするためにエラー処理を切り取りました)。

レンダラーがフォームの OpenGL コントロールにアクセスして使用しようとすると、エラーが発生します。これは、WinForms (および WPF) がそのコントロールを他のスレッドで操作することを望まないためです。したがって、Invoke はオプションかもしれませんが、これはドローコールを遅らせ、ボトルネックになります。タイマーも正確ではなく、柔軟性がないため、オプションではありません...そして、私はそれが好きではありません. そして、ウィンドウコード内ですべてを行うことは可能かもしれませんが、アプリケーションをそのディスプレイから独立させて、変更できるようにしたいと考えています。アプリケーションを実行するディスプレイではなく、ディスプレイを持つアプリケーションである必要があります。LWJGL では、ディスプレイを作成して初期化し、それを使用することができました。考慮すべき唯一のことは、それを更新することであり、すべてがうまくいきました. したがって、レンダリングスレッドでウィンドウを作成して描画したいだけです。このようにすると、この .Net-Loop が必要なため、ウィンドウが使用できなくなり、灰色がかってしまいます。それを実現する可能性はありますか、またはWindowsを作成する別の方法を知っている人はいますか? ウィンドウループを手動で処理できますか?

どんなアイデアでも大歓迎です。

WPF ウィンドウでこれを行う方法があれば、それは素晴らしいことです。次に、OpenGL コントロールとすべての WPF スタッフを使用して、エディターを作成できます。

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

c# - SharpGL/WPFでレンダートリガーマニュアルを作成する方法

WPF 用の SharpGL コントロールをインストールしました。コントロールは常に Render Loop にあります。これは、特定の間隔でレンダリングすることを意味します。私が欲しいのは1回限りの抽選です。私はゲームを作っているわけではないので、シーンを常にレンダリングする必要はありません。私は何をすべきか?

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

c# - C#sharpGLはSharpGL.SceneGraph.Primitives.Polygonでテクスチャを使用します

Visual C# 用の SharpGL ライブラリを使用しています。SharpGL.SceneGraph.Primitives.Polygon にテクスチャを追加したい。

画像をロードする前に何をする必要がありますか? 私は自分のモデルを

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

c# - SharpGL で単純な透明スプライトをレンダリングできません

平面を生成してテクスチャをマッピングする方法を知っています。今、スプライトのように、アルファブレンドされた PNG をフォームに表示しようとしています。

グーグルと推測から次のコードを思いつきました:

私が使用している元のソース画像は次のとおりです。

フォームでこのスプライトを 10 × 10 (100) 回レンダリングしたときの出力は次のとおりです。

出力はすべてめちゃくちゃで、画像のアルファ チャネルを尊重していないようです。コードが正しくレンダリングされるようにするには、コードにどのような変更を加える必要がありますか?