問題タブ [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 - 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 ビットでぎっしり詰まっています。