問題タブ [vertex-attributes]
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.
opengl-es - WebGL - どの API を使用するか?
複数のポリゴン シェイプを描画したい (各シェイプには独自の頂点セットがある)。これらの形状を互いに独立して配置できるようにしたいと考えています。
頂点シェーダーの a_Position を設定するには、どの API を使用できますか?
- A) gl.vertexAttrib3f
- B) gl.vertexAttribPointer + gl.enableVertexAttribArray
ありがとう。
blender - Blender は頂点法線をどのように計算しますか?
さまざまなゲーム アセットの頂点法線を計算しようとしています。私が計算した法線は、モデルを「膨らませる」ために使用されます(実際のモデルの後ろに描画して太い輪郭を作成します)。
私は現在、各面の法線を計算し、それらすべての平均を計算しています (スタック オーバーフローに関する他のいくつかの質問で、このアプローチが提案されています)。ただし、これはこのような鋭いコーナーでは機能しません (隣接する面の法線はオレンジ色でマークされ、計算しようとしている法線は緑色で囲まれています)。
オブジェクトは小さな台座のように見え、正面左隅を見ています。3 つの隣接する面があります (底面は表示されません。その法線は真下を指します)。
Blender は、3 つの面の法線の真ん中にある優れた法線を計算します。3 つの面法線のそれぞれに対して最小の回転を持つ法線を何らかの方法で計算しているようです。ブレンダーの法線は、四角形が異なる方法で三角形化されても変化しません。
面の法線を平均化すると、Z 軸のわずかに上を指す別の法線 (-0.45、-0.89、+0.08) が得られます。この方法でモデルを膨らませても、アウトラインの底面が上に移動し、元のモデルを取り囲んでいないため、適切なアウトラインが生成されません。
Blender のソース コードを調べようとしましたが、探しているものが見つかりませんでした。誰かが Blender ソースのアルゴリズムを教えてくれれば、それも受け入れます。
opengl - glVertexAttribPointer を使用して明示的に属性をバインドしない場合、どのデフォルトの場所が使用されますか?
「OpenGL シェーダーの明示的 vs 自動属性位置バインディング」を参照してください。
を使用して属性を明示的にバインドしない場合glVertexAttribPointer
、どのデフォルトの場所が使用されますか?
公式リンクはどこにありますか?
c++ - glVertexAttribPointer GL_INVALID_OPERATION 無効な vao vbo ポインターの使用
最新のドライバーがインストールされた NVIDIA GTX 970 で、OpenGL 4.4 を使用してディファード シェーディングを実装しようとしています。
私のコードは、画面に直接レンダリングして動作しました。2 番目のパスを追加するには、シーンをレンダリングする FBO と、最終イメージをレンダリングするクワッドを作成します。最初のパスで何もレンダリングせず、2 番目のパスの後にクワッドを描画しようとすると、クワッドが表示されます。最初のパスでメッシュ (立方体など) をレンダリングしようとすると、クワッドが消えます。また、次のエラー メッセージが表示されます。
メッシュは AssImp でロードされました。
次のコードを使用して VBO / VAO を作成します。
そして、メッシュを次のようにレンダリングします。
gDEBugger を使用すると、エラー メッセージが glVertexAttribPointer から来ていることがわかりました。しかし、gDEBugger は OpenGL 4 をサポートしていないため、それ自体が多くのエラーをスローし、実際には機能しません。
FBO は次のように生成されます。
createGBuf() 関数は次のようになります。
glsl - GLSL: データの歪み
OpenGL 3.3 GLSL 1.5 互換性を使用しています。頂点データで奇妙な問題が発生しています。フラグメント シェーダーにインデックス値を渡そうとしていますが、カメラの位置によって値が変化するようです。
これは単純なはずです。頂点シェーダーを介して GLfloat をフラグメント シェーダーに渡します。次に、この値を符号なし整数に変換します。値は、フラグメントのエッジを除いて、ほとんどの場合正しいです。何をしても同じ歪みが現れます。カメラの位置によってこの値が変わるのはなぜですか? 以下のばかげた例でも、tI は不規則に 1.0 以外の値になります。
float データの代わりに整数データを送信すると、まったく同じ問題が発生します。頂点データとして何を入力しても問題ないようです。データに入力した値がフラグメント全体で一貫していません。歪みは毎回まったく同じに見えます。
opengl - OpenGL - シェーダーで頂点カラーを表示できない
そのため、最終的にopenglウィンドウを適切にセットアップし、vaos、vbos、glDrawElements()などを使用して三角形を表示しました.
しかし今、私は新しい問題を抱えています - シェーダーを動作させることができません。私はまだそれらをよく理解していません。別のバッファ オブジェクトに入れた頂点の色をフラグメント シェーダに表示させたい。
コード例:
そしてレンダリング:
シェーダー以外はすべて正常に動作しているようです。どんな助けでも大歓迎です:)ありがとう。