問題タブ [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 投票する
1 に答える
1038 参照

c# - SharpGLでのカラーリング

球体があり、それに色を付けて光の効果を追加したいので、球体に光を当てると、球体の元の色が消え、照明光の色に置き換えられます。

何が問題なのかわかりません、助けてください。

これが私のコードです:

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

c# - SharpGL (C# の OpenGL) 太陽系 - カメラの位置が正しく計算されない

私は現在 OpenGL を学習しており、チュートリアルにあるものと同様の単純な太陽系アプリケーションを作成しようとしていますが、何らかの理由でカメラの動作が非常に奇妙で、何が原因なのかわかりません。カメラで太陽を見たいのですが、惑星の本当に奇妙な角度しか得られないか、まったく何も得られません。純粋なカメラの問題でさえないかもしれません. 誰かが私が間違っていることを正確に教えてもらえますか? いくつかのコードをいただければ幸いです。ここでコードを読むのではなく、アプリケーションを確認することを希望する人がいる場合は、以下にリンクを追加します。

ここでのカメラは可能な限りチュートリアル (FPS) に近いものになりますが、これの代わりにドラッグ/スクロール システムも取得しました。

Planet.cs:

Sun.cs

Stars.cs

SolarSystem.cs (基本的に、上記のすべてのコレクションです。列挙型は必要ありません。将来役立つ可能性があるため、残しました)

API (ポインター位置の変換を含む。この方法でしかカーソルを中央に配置できなかったため、カメラ システムをドラッグすると削除されます)):

Extensions.cs

MainWindow.cs

アプリケーション全体へのリンク:

https://www.dropbox.com/sh/uhfyeayxn8l7q9y/AAA8tFda5-ZLAjTUzJcwKUm6a?dl=0

更新 1:

Look() 関数を次のように変更しました。

そして今、それは機能します。

なんらかの理由で、アプリケーションが正しくないテクスチャをロードしていることがわかります。私が書いた LoadTextures() メソッドが Gl.GenTextures(1, texture) を使用しているためだと思います。(sharpgl には Gen(Single)Texture メソッドがないか、すべて間違っています)。

更新 2:

したがって、基本的に私のテクスチャのほとんどは 2 の累乗ではないため機能しませんが、私が読んだことから、2 のべき乗である必要はもうありません。SO 私の現在の質問は:sharpGL に NPOT テクスチャを強制的に表示させる方法は?

更新 3:

このようにロードできることがわかりましたが、まあ、逆さまです:)。

更新 4:

テクスチャを反転して正しく表示することはできますが、なぜこれが起こっているのでしょうか?

更新 5:

Update 4 からの質問はまだ残っていますが、最後の質問がありました: カメラを再計算して、-90/90 度のみに限定されないようにするにはどうすればよいですか?

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

opengl - OpenGLで部分描画

OpenGl でフレームを部分的に再描画できますか?

例: フレームにラインとポリゴンの両方がある場合、ポリゴンは変化しません (同じ寸法、色など) が、ラインに若干の変化があります。そのため、ポリゴンではなくラインのみを再度レンダリングしたいと思います。

これを達成する方法はありますか?これが可能であれば、アプリケーションのパフォーマンスが劇的に変化します。

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

c# - DrawArrays の呼び出し後に頂点データが描画されない

C# で OpenGL の他のフレームワークを使用した後、SharpGL を使い始める私は、SharpGL の構文の変更/機能を確実に理解するために、最も単純な例から始めることにしました。

だから私は、あまり難しくない単一の単色の三角形をレンダリングしようとしています。

2 つの頂点バッファーがあります。1 つは三角形のポイントを格納し、もう 1 つは各ポイントの色を格納します。これらは次のように構築されます (ポイント配列を使用することを除いて、ポイント 1 は同じです)。

次に、これらに正しい属性ポインターを設定して有効にします。

しかし今、呼び出しを使用して描画すると:

画面に何も映りません。例外はありませんが、背景は単に空白です。

当然、シェーダーにコンパイルの問題があると推測しましたが、幸い、SharpGL は簡単なチェック方法を提供し、Vertex シェーダーと Fragment シェーダーの両方が正しくコンパイルおよびリンクされていることを示しています。

このコードがオブジェクトを正しく表示しない理由を誰でも理解できますか? 基本的に、以前に使用したのと同じコードです。

完全なソース:

頂点シェーダー:

フラグメント シェーダー:

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

c# - 3Dクワッドにアークボール効果を追加

描画されたクワッドにアークボール エフェクトを追加するにはどうすればよいですか?

この例では、立方体が作成され、正常に機能しているアークボール エフェクトが追加されました。

これは完全なコードです。私が望むのは、drawCube関数内に描画された四角形にアークボール効果を追加することです。

}

これはこのプログラムの出力です。右側は回転でき、左側にも同じ効果を適用したい ここに画像の説明を入力

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

c# - WPF内のsharpGLのパフォーマンスが悪い

回転ブロックを表示できる SharpGL チュートリアルに従いました。当初、これには で描画されたデフォルトの色しかありませんでしたgl.Color(r, g, b)。これが成功した後、UV マップでキューブをテクスチャリングしようとしました。

立方体を色付けするだけでアプリケーションをフルスクリーンで実行すると (sharpGL コンポーネントがアプリケーションの内部全体をカバーします)、色付けされた立方体を表示する場合にのみ 70 ~ 80 fps が得られます。OpenGL.GL_TEXTURE_2D単一の立方体でテクスチャを有効にして描画すると、8 ~ 9 fps になります。

テクスチャとして使用するためにビットマップがロードされるたびに、ビットマップはメモリに保存されます。このフレームレートの低下は、すべての座標を有効にOpenGL.GL_TEXTURE_2Dして呼び出した後にのみ発生します。gl.TexCoord(c1, c2)でオブジェクトを実際に移動しても、gl.Rotate(angle, x, y, z)パフォーマンスに顕著な影響はありません。

GetBlockUvおよびを含むメソッドに提供されるデータは、CubeCoordinates静的浮動小数点配列です。

SharpGLはこれをうまく実行しないはずですか(つまり、特異な立方体を表示する場合)、それとも別の理由がありますか? パフォーマンスに影響を与える何か間違ったことをしていますか? テクスチャを適用すると、そのようなパフォーマンスに影響するはずですか?

メイン ドロー イベントはブロックで発生します。

OpenGL が別の場所で初期化されている

中間者が現在行っていることは、ルーチンGameRunnerを呼び出すことだけです。DrawBlock

私が主に知りたいのは、openGL/sharpGL に期待できるパフォーマンスと、より良い代替手段があるかどうかについての洞察です。ゲームを取り巻く WPF アーキテクチャを引き続き使用したいと考えていますが、WPF 内の openGL がよりギミックとして意図されている場合、それは最善の方法ではない可能性があります。

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

c# - SharpGL 2D テクスチャリングの問題

SharpGL ラッパーを使用して、実行時に生成されたテクスチャで三角形をテクスチャリングしようとしています。

三角形がテクスチャ化されていない理由がわかりません。

描画ループに置かれた gl.Error() は、GL_NO_ERROR を意味する 0 を返します。

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

opengl - 頂点シェーダーからフラグメント シェーダーに色を渡すことができない

私は OpenGL を初めて使用し、OpenGL 関数への単純な C# バインディングである SharpGL を使用して学習しています。最も単純な頂点シェーダーとフラグメント シェーダーを使用しようとしています。フラグメント シェーダーがそれ自体で出力を生成する場合は問題ありませんが、頂点シェーダーから取得したデータを使用しようとすると、黒い画面しか表示されません。シェーダーは正常にコンパイルされ、プログラムにリンクされています。OpenGL からエラーは返されませんでした。大量の記事、例、チュートリアルの後、なぜそれが起こるのかまだわかりません. これが頂点シェーダーです。

フラグメント シェーダー:

初期化コードは次のとおりです。

最後に、すべての反復で何が起こったかを次に示します。

更新 1 . バッファに渡されるデータは次のとおりです。

UPD 2 これがシェーダーのコンパイルコードです

UPD 3そして、コンパイラが呼び出される方法は次のとおりです