問題タブ [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.

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

opengl - OpenGL GLSL 色を整数としてシェーダーに送信し、vec4 RGBA として分解します

色を 4 つのフロートとしてシェーダーに送信できます - 問題ありません。ただし、整数(または符号なし整数、実際には重要ではありません。重要なのは32ビットです)として送信し、シェーダーのvec4で分解したいと考えています。

私は OpenTK を OpenGL の C# ラッパーとして使用しています (ただし、それはほとんど直接のラッパーである必要があります)。

位置 (xyz) と色 (rgba) を含む頂点を持つ最も単純なシェーダーの 1 つを考えてみましょう。

頂点シェーダー:

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

頂点バッファを作成しましょう:

そして、頂点シェーダーで vec4 'in_color' のすべてがゼロになっています。何が悪いのかわからない。

私が見つけた最も近いもの: https://www.opengl.org/discussion_boards/showthread.php/198690-I-cannot-send-RGBA-color-as-unsigned-int

また、VertexAttribIPointer では、VertexBufferArray があり、データが分離されているため、ストライドとして 0 を渡しています。そのため、色は頂点ごとに (色ごとに) 32 ビットでぎっしり詰まっています。