問題タブ [pyopengl]

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 に答える
1007 参照

opengl - openGL テクスチャの初心者向けの質問 - 1D テクスチャの作成ですか?

編集

わかりました、テクスチャ レンダリングにいくつかの変更を加えましたが、今は思いどおりに見えませんが、何かを変更しようとする前に、正しい道を進んでいることを確認したいだけです。私が修正しようとしている問題は次のとおりです。180000 個の頂点があります。それらのそれぞれは、190 の「クラス」のいずれかから取得できます。各クラスには、異なる時間に異なる色を割り当てることができます。だから私は190色のテクスチャを作成しようとしています.180000個の頂点のそれぞれには、対応するクラスへのtextureCoordがあります。したがって、いくつかのコードの場合:

したがって、textureIndexes は [0..1] からの float の配列です。len(textureIndexes) は、使用している頂点の数 (180000) です。テクスチャの場合、 textureArray には、各クラスに必要な色の RBG に対応する 190 * 3 の float が含まれています。

描画部分:

それで、このアプローチは正しいと思いますか?結果は私が期待しているものではありませんが、それは私が選んだ色分けのためかもしれません。ほとんどの場合、インデックスの作成が間違っていると思います。それらを構築するために、各インデックスのクラスに対応する 0 から 190 までの番号を持つファイルがあります。したがって、これまでのインデックス構築は、[0..1] の数値を取得するために、各頂点のインデックスを読み取ってからインデックス / 190 を読み取るだけでした。

EDIT2 だから私はあなたのアドバイスを受けて、私のインデックスを生成するためにインデックス + 0.5 / 190 をしました。インデックス配列の長さと値を出力しています。これは 60000 で、すべて 0 から 1 の間の数値で、ほとんどが 0.3 から 0.95 の間です。しかし、それでもすべての頂点は同じ色です。私がチェックしていない唯一のことは、1D テクスチャの生成です。多分ここで私はそれを間違えました:

これが、テクスチャ配列を生成する方法です。これは実際の解決策ではありませんが、テスト上の理由からです。したがって、私のテクスチャは 1/6 red - 1/6 ... になるはずです。上記のテクスチャ生成:

このテクスチャの生成は正しいですか? インデックスの範囲は前述のとおりですが、すべての頂点はテクスチャの最初の色の色を持っているためです。面白いことに、描画から glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.bufferTextureIndex) を「省略」し、テクスチャ インデックスの代わりに法線を使用すると、いくつかの異なる色が得られますが、textureIndexes はすべて最初の色を指しているように見えます。私のテクスチャから。textureIndices と法線の実際の値を含む 2 つのサンプル ファイルをアップロードしました。最初のものは機能しないが、2番目のものは機能しているように見える理由はわかりません(正しい色であるかどうかを実際に確認することはできませんが、少なくともそれらは異なります)。 http://www.megafileupload.com/en/file/315895/textureIndices-txt.html http://www.megafileupload.com/en/file/315894/normalsTest-txt.html

EDIT3

だから今、私のインデックスは機能しているようです。サンプル画像は次のとおりです。

http://i.stack.imgur.com/yvlV3.png

ただし、奇妙な点は、ご覧のとおり、境界が適切に定義されていないことです。これは、テクスチャに渡すパラメータのいくつかによって何らかの影響を受ける可能性がありますか、それとも textureIndex の作成をトリプルチェックする必要がありますか?

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

opengl - glTexCoordPointer は効果がないようです

私はまだテクスチャの使用方法を理解しようとしていますが、現在、各頂点にそのクラスに固有の色を与えるために glTexCoordPointer を使用しようとしています。いくつかのチェックを行いましたが、状況は次のとおりです。

そこで、頂点、法線、三角形、テクスチャ インデックスの VBO を生成します。ここで、textureIndexes に対して取得している値を確認したいと思いました。すべては間隔 [0..1] からのもので、textureIndexes の長さ = length ( vertices ) / 3 です。

テクスチャについては、190 個の [x,x,x] RGB 値のベクトルである textureArray を生成します。私も6等分にしました。したがって、テストを簡単にするために、最初の 1/6 エントリはある色から次の色へと続きます。

描画のために:

しかし、テクスチャの最初の 1/6 部分の色に対応して、すべてのポイントが同じ色になっています。ご意見をお寄せください。

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

opengl - OpenGL シェーダーに関する質問

glVertexPointer、glNormalPointer などを使用して多数の要素を描画する実行中のプログラムがあります。これは約 30 FPS で動作します。これで、シェーダーの統合が実行可能なオプションになるポイントに到達しました (各頂点には、特定のクラスに基づいて計算された色が必要です)。1. 最初の質問は、シェーダーを使用すると FPS にどの程度影響するかということです。私の現在の実装 (私は 99.99% で、少なくとも何らかの形で欠陥があります。以下にコードを投稿します) は、FPS を 3 FPS に大幅に低下させます。このような FPS の低下が正常である場合、これに苦労する必要はありません。

次に、いくつかのコードについて説明します。私のシェーダーは次のようになります。

後で実際の頂点と法線を渡すために使用するため、位置と法線を返します。ここから、質問があります。シェーダーがなければ、VertexPointer と NormalPointer を使用して法線と頂点の配列を渡すだけで、残りは OpenGL が処理します。2. シェーダーには gl_Vertex および gl_Normal 属性が組み込まれていることを読みました。VBO からこれらに値を渡すにはどうすればよいですか? ご覧のとおり、現在、頂点の位置を属性の位置に渡し、法線を法線に渡していますが、法線については何もしていません。

描画は次のように行われます。

ここで、self.bufferVertices、self.bufferNormals は、頂点と法線を含む VBO です。self.triangles インデックス配列。これまでのところ正しいインデックスを描画していますが、前述のように私の FPS は非常に低いです。

  1. この描画順序は正しいですか? また、有効にするとシェーダーと競合する可能性のあるものは他にありますか? (GL_LIGHTNINGなどGL_DEPTH_TEST)
0 投票する
1 に答える
1757 参照

opengl - OpenGL-テクスチャリングはシャドウ/ライトニングにどのように影響しますか?

したがって、問題は、ColorPointersからTexturesに切り替えると、稲妻/影の効果が大幅に減少しているように見えるということです。私が見つけたがそれほど多くはしないいくつかの解決策は、glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL、GL_SEPARATE_SPECULAR_COLOR)を設定することです。テクスチャなしで得られるものに近い効果を得るために私ができることは他にありますか?

これは私が私のライト/シーンを初期化する方法です:

そして実際の図面のために。

各頂点の色については、法線をダミーカラーとして使用していました。これは、テクスチャを統合するための1つのステップにすぎなかったためです。テクスチャは自己生成されたものであり、基本的に値は次のものからのものです。

実際の作成:

よろしく、ボグダン

編集

さて、私は望んだ効果に近づきましたが、それは純粋に、次のパートでglColor4fとマテリアルおよびライトのさまざまな組み合わせを試すことによるものでした。

これらすべて(glColor4f +マテリアル+ライト+テクスチャ)が最終的な色/影/光沢効果にどのように影響するかについて、ある種の公式はありますか?

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

python - pyOpenGLで単純な正方形をグラフ化しようとしています

私はpyopenglを使用してOpenGLを自分自身に教えようとしていますが、原点を中心とした単純な2D正方形をレンダリングしようとしています。配列の値を1以上に設定すると、軸のごく一部しか表示していないかのように、図形が画面全体に表示されます。pyopenglで書き直されたNeHeチュートリアルに基づいて作成しようとしましたが、間違っていることがわかりません。

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

python - PythonからOpenGL拡張機能を呼び出す

UbuntuNattyでPyOpenGL3を使用しています。

glDrawElementsBaseVertexこの機能を使いたい。

私はそれが私のglxinfo出力にリストされているのを見ることができるので、私のカードがそれを持っていることを知っています。

しかし、実際に呼び出す方法がわかりません。私がそれを使おうとするとimport OpenGL.GL私が得るとき。NameError(それとは異なりNoneます)。

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

python - PyOpenGL 呼び出しでバッファーへのオフセットを使用する

OpenGL では、indicesパラメータ forglDrawElementsは、使用しているかどうかに応じて 2 つの異なる意味を持ちますGL_ELEMENT_ARRAY_BUFFER

VBO がバインドされている場合は、バッファー自体ではなく、そのバッファーで開始するオフセットです。

PyOpenGL を使用する場合、glDrawElements呼び出しで開始するオフセットをどのように指定できますか? glMultiDrawElements呼び出しで複数の開始オフセットを指定するにはどうすればよいですか?

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

python - PyOpenglまたはpygletをデスクトップ上に描画するにはどうすればよいですか?

私は、OpenGLを使用してWindows7デスクトップで基本的なポリゴンと楕円を描画しようとしているアプリケーションを書いています。この前の質問によると、これはおそらくデスクトップへのウィンドウハンドルを取得することによるものです。これは私が行う方法を知っています。 ウィンドウなしでWindowsデスクトップにOpenGLを描画します

ただし、2つの質問があります。

  1. 実際にOpenGLにどのウィンドウに描画するかを指示しますか?私は例1を調べてきましたが、openGLがhwndを通過している場所を正確に把握することはできません。openGLにウィンドウハンドルまたはデバイスコンテキストを提供しますか?

  2. PyOpenGLまたはPygletを使用してこれを行うことは可能ですか?または、Cで記述してから、コードをctypesでラップする必要がありますか?

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

opengl - PyOpenGLWindowsOSの問題

そこで、Mac OSでアプリケーションを開発し、WindowsXPを搭載したマシンでテストしようとしています。ここでこれは機能しません。最初の問題は、glGenBufferとglGenBufferがNullFunctionExceptionを与えていることです。そのため、そのマシンでOpenGLのバージョンを確認しようとしましたが、glGetString(GL_VERSION)はNoneを返します。問題は、テストしているマシンについてあまり知らないことです。dxdiagを実行すると、directXはビデオカードに関するすべての詳細にn/aのみを返します。

0 投票する
3 に答える
486 参照

python - pyglet と pyopengl を一緒に使用する際の問題

次のコードがあります。

pyglet の opengl バインディングを使用すると、期待どおりに動作します。ただし、pyopengl を使用すると、ごちゃごちゃした混乱しか表示されません。