回答編集履歴
1
ビットとバイトの誤りを修正
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
- その番号を`glEnableVertexAttribArray`を使って使用可能にする(初期状態ではすべての番号は使用不能に設定されているので、明示的に使用可能にします)
|
16
16
|
|
17
|
-
- `glVertexAttribPointer`で、その番号と対応する属性の要素数(floatやintなら1、vec2やivec2なら2...ここでは法線なので、vec3が適当でしょう。その場合は3です)、要素の成分のデータ型(vec3は3つのfloatからなるのでGL_FLOAT)、整数で与えられたデータを正規化するか(もし法線でなく、例えば色の情報を追加するとして、しかも与える側のデータが0〜255の整数...などという状況の場合、これを設定するとシェーダー側では0.0〜1.0に変換された値として取り出されるので便利)、ストライド(ある頂点の頂点データの先頭から、次の頂点の頂点データの先頭まで何バイト読み進めればいいか...今まで位置しか属性を使用していなかった場合は0を設定していたかもしれませんが、0の場合は自動的に「1つの属性だけが密に詰まっている」と解釈してくれるため正しく指定されますが、今回のように複数の属性を交互に詰める場合、読み進める量を正しく渡してやる必要があります)、オフセット(この属性が頂点データの先頭から何バイト先にあるか...今回の場合、法線データの前には位置データが入っていますので、float3つ分で
|
17
|
+
- `glVertexAttribPointer`で、その番号と対応する属性の要素数(floatやintなら1、vec2やivec2なら2...ここでは法線なので、vec3が適当でしょう。その場合は3です)、要素の成分のデータ型(vec3は3つのfloatからなるのでGL_FLOAT)、整数で与えられたデータを正規化するか(もし法線でなく、例えば色の情報を追加するとして、しかも与える側のデータが0〜255の整数...などという状況の場合、これを設定するとシェーダー側では0.0〜1.0に変換された値として取り出されるので便利)、ストライド(ある頂点の頂点データの先頭から、次の頂点の頂点データの先頭まで何バイト読み進めればいいか...今まで位置しか属性を使用していなかった場合は0を設定していたかもしれませんが、0の場合は自動的に「1つの属性だけが密に詰まっている」と解釈してくれるため正しく指定されますが、今回のように複数の属性を交互に詰める場合、読み進める量を正しく渡してやる必要があります)、オフセット(この属性が頂点データの先頭から何バイト先にあるか...今回の場合、法線データの前には位置データが入っていますので、float3つ分で4*3=12バイトのずれがあります)を指定する
|
18
18
|
|
19
19
|
|
20
20
|
|