問題タブ [vertex-buffer]

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

ios - メモリ使用量が時間とともに増加し続ける (GLKit - iOS)

アプリをほぼ完成させました。ビューの 1 つは GLKit を使用します。記憶に問題があるだけです。基本的に何が起こるかというと、GLKView が表示されると、メモリ消費量が常に増加します (Instruments で見られます)。ある時点で明らかにクラッシュします。GLKit についてはよくわからないので、お役に立てれば幸いです。

問題は、表示している 3D 矢印です。私が描かなければ、他のすべてのことは問題になりません。これは、矢印の頂点データを含むヘッダー ファイルです。

そして、これは描画コードです:

なにか提案を?助けてくれてどうもありがとう!

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

opengl - OpenGLGL_POLYGONが正しく機能していません

OpenGL関連の問題があります。頂点バッファから4つの頂点を使用して単純なポリゴンを描画しようとすると、何も起こりません。ただし、歪んではいるものの、GL_TRIANGLESまたはGL_TRIANGLE_STRIPモードで形状を描画します。私は何か間違ったことをしていますか?

関連コード:

頂点配列: http: //i.imgur.com/nEcbw.png

GL_POLYGON: http: //i.imgur.com/idfFT.png

GL_TRIANGLES: http: //imgur.com/84ey3,idfFT,nEcbw#0

GL_TRIANGLE_STRIP: http: //i.imgur.com/JU3Zl.png

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

direct3d - Z ファイティング Direct3D9、動的バッファーのみ

Direct3d9 のフレームごとに頂点バッファーをロックして、blendshape コードからのデータを入力します。私のシェーディングは 2 つのステップを使用するため、1 つのシェーダーで 1 回レンダリングしてから、もう 1 つのシェーダーで加算ブレンドを描画します。

私以外の理由で、頂点バッファーのデータは、これら 2 つの描画呼び出しの間で (明らかに) わずかに異なります。

これはすべて 1 つのスレッドで行われ、バッファは render が呼び出されるかなり前にロック解除されます。さらに、シェーダー命令への変更は発生しないため、データは両方の呼び出しでまったく同じである必要があります。ブレンドシェイプが変更されない場合、Z ファイティングは発生しません。

今のところ、シェーダーの深度を少し「プッシュ」していますが、これは非常に洗練されていない解決策です。

このデータが変更される理由 バッファーのロックを解除した後、DirectX がバッファー内のデータを変更するのはなぜですか? 変更しないように強制できますか?

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

opengl - OpenGLのglDrawArrays()がコアプロファイル3.2のGL_INVALID_OPERATIONで失敗するのに、3.3または4.2では失敗しないのはなぜですか?

私はglDrawArraysを呼び出すOpenGLレンダリングコードを持っています。これは、OpenGLコンテキストが(自動的に/暗黙的に取得される)4.2の場合は問題なく機能しますが、明示的に要求されたOpenGLコアコンテキスト3.2では一貫して失敗します(GL_INVALID_OPERATION)。(どちらの場合も、シェーダーは常に#version 150に設定されていますが、それはここでのポイントの脇にあると思います。)

仕様によると、glDrawArrays()がGL_INVALID_OPERATIONで失敗する場合は2つだけです。

  • 「ゼロ以外のバッファオブジェクト名が有効な配列にバインドされていて、バッファオブジェクトのデータストアが現在マッピングされている場合」-この時点ではバッファマッピングを行っていません

  • 「ジオメトリシェーダーがアクティブで、モードが[...]と互換性がない場合」-いいえ、現時点ではジオメトリシェーダーはありません。

さらに:

  1. glDrawArrays()呼び出しだけが失敗することを確認して再確認しました。また、glDrawArrays()に渡されるすべての引数が、両方のGLバージョン、バッファーバインディングでも同一であることを再確認しました。

  2. これは、3つの異なるnvidia GPUと2つの異なるOSで発生します(Win7とOSX、どちらも64ビット-もちろん、OSXには3.2コンテキストしかなく、4.2はありません)。

  3. 統合された「IntelHD」GPUでは発生しませんが、その場合は、自動の暗黙的な3.3コンテキストしか取得しません(ここでGLFWを介してこのGPUで3.2コアプロファイルを明示的に強制しようとすると、ウィンドウの作成に失敗しますが、これはまったく別の問題です...)

価値のあるものとして、Golangのレンダリングループから抜粋した関連ルーチンを次に示します。

したがって、もちろんこれはより大きなレンダリングループの一部ですが、現時点での「* TMesh」構造全体は、単純な立方体と単純なピラミッドの2つのインスタンスにすぎません。重要なのは、描画ループ全体が問題なく動作し、GLが3.3と4.2の両方でエラーを照会されたときにエラーが報告されないことですが、明示的な3.2コアプロファイルを持つ3つのnvidia GPUでは、仕様に従ってのみ呼び出されるエラーコードで失敗します2つの特定の状況がありますが、私が知る限り、ここでは当てはまりません。

ここで何が間違っている可能性がありますか?これに遭遇したことがありますか?私が見逃しているアイデアはありますか?

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

opengl-es-2.0 - OpenGL ES 2.0 の VBO で何も表示されない

私は OpenGL ES を学んでいます。カメラの位置などの背後にある基本的な行列ロジックを理解して、いくつかの立方体を正常に描画しました。現在、VBO の例を作成しようとしていますが、画面には何も描画されません。コードを貼り付けます。おそらく誰かが私が間違っていることに気付くでしょう。

フラグメント シェーダー コード

頂点シェーダー

テクスチャの読み込み

頂点オブジェクトの構造

VBOの作成

VBO 図面

前に指摘したように、以前に行ったより単純な例 (テクスチャ、変換行列) と基本的に同じコードを使用してきました。エラーもチェックしましたが、コードエラーはありません。

誰かが私のコードで何が問題なのかを強調していただければ幸いです。

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

python - VBOをPythonおよびPyOpenGLで動作させる方法

次のPythonプログラムは、ウィンドウの右上の象限に白い三角形を描画する必要があります。

エラーは発生しませんが、残念ながら三角形は描画されません。

また、バッファデータをNumPy配列として送信しようとしました。

また、三角形は描かれていません。PyOpenGL ... YU NOドローVBO?

私のシステム:Python 2.7.3; OpenGL 4.2.0; Linux MintMaya64ビット

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

opengl - glMapBuffer 常に 0x00000000 を返す

glewInit( ) とその他の openGL のものを初期化しました。これらの呼び出しを行う前にすべて。

これは、バッファオブジェクトを作成する方法です。iiは、glMapBufferが常に0x00000000を与えるようになる少なくとも1回呼び出さないと、ストレージスペースがまったくないopenGLの記事を読んだため、glBufferDataを実行しました。

後で glMapBuffer を呼び出して、glMapBuffer を使用するときにデータの保存を開始するストレージの場所を取得します。このように呼び出します

buffer1 には常に 0x00000000 が入ります。どうしてこれなの?私が見つけた唯一の2つの原因は、glewInitを適切に初期化しなかったことと、少なくとも1回はglBindBufferDataを呼び出していなかったことです。

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

opengl - OpenGL glTexCoordPointer がテクスチャを適用していないように見える

私はコードを持っています:

そして、クワッドが完全にうまく描画されているのに、テクスチャがまったくマッピングされていない理由について、私は困惑しています。

セクションを と の呼び出しに展開することは完全glTexCoord2fglVertex3fうまく機能するので、テクスチャ バインディングで何か間違ったことをしているとしか思えません。

texcoords は以下で初期化されています:

今のところ変更しないでください。これは、頂点配列が頂点トリプレットを持っているのと同じ数のペアです。

私はGL_NO_ERRORを取得しており、面はすべて、への最初の呼び出しで設定されたデフォルト値として色付けされていますglColor3f(0.9f, 0.1f, 1.0f);

私が見逃している可能性のあるものはありますか?

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

c++ - C ++:OpenGL、glm、および構造体のパディング

glm :: *タイプ(vec4、mat4など)を安全に使用して、頂点バッファーオブジェクトを埋めることはできますか?

私がテストしたすべてのコンパイラは期待されるサイズを返しますが、構造体のパディング(メンバーの配置)が私の意見で問題を引き起こす可能性があるため、それについてはよくわかりません。

私はC++11コンパイラ用に開発しています(おそらくこれが違いを生むでしょう)。

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

c++ - 頂点バッファを作成できません

DirectX コンポーネントを使用した Windows Phone 8 C#/XAML プロジェクトがあります。私はいくつかの粒子をレンダリングしようとしています。頂点バッファーを作成し、作成する関数に入るのを見ましたが、更新頂点バッファーに到達すると、バッファーは NULL になります。まだバッファを解放していません。なぜこれが起こるか知っていますか?出力メッセージは役に立ちますか? ありがとう。

出力ウィンドウの出力とエラー:

CreateDeviceResources では、CreateVertexShader、CreateInputLayout、CreatePixelShader、CreateBuffer を呼び出します。次に、サンプラーと頂点バッファーを作成します。コードは次のとおりです。

私の頂点は、位置、tex、および色です。

VertexShader.HLSL:

m_d3dDevice->CreateBuffer(&vertexBufferDesc, &vertexBufferData, &m_vertexBuffer) の呼び出し後、m_vertexBuffer は null ではありません。

しかし、Update() 関数に到達すると、m_vertexBuffer は NULL です!