1
私は何か興味深いものを見つけました。私はそれを理解したいと思います。明示的または暗黙的vec4 in glsl
使用GLSL#version 330
gl_Position
のタイプはvec4
これらの線は、微細コンパイルある:どういうわけか
gl_Position = vec4(0, 0, 0, 0);
gl_Position = vec4(vec3(0, 0, 0), 0);
gl_Position = vec4(vec2(0, 0), vec2(0, 0));
...
:
gl_Position = (vec2(0, 0), vec2(0, 0));
は発生します
error C1035: assignment of incompatible types
コンパイラは、構文エラーを出さずに(vec2(0, 0), vec2(0, 0))
を解析することができました。私はこの声明が何を意味しているのかを知りたいのですが、それは正しいと信じて、別のタイプのvec4
です。
質問:(vec2(0, 0), vec2(0, 0))
はGLSLに何を意味するのでしょうか?
EDIT:
コンパイル:
float x = (0.0, 1.0, 1.0, 2.0, 3.0, 5.0, 8.0);
構文エラー:作成あなたがcomma operator使用
float x = 0.0, 1.0, 1.0, 2.0, 3.0, 5.0, 8.0;
どうしてですか?この標準ですか?これが許される理由は何ですか? –
@DombiSzabolcs [コンマ演算子](https://en.wikipedia.org/wiki/Comma_operator)は、GLSLを含むすべてのCベース言語の標準演算子です。これは、式の順序付けに使用されます。 –
お楽しみくださいhttps://www.opengl.org/registry/doc/GLSLangSpec.4.50.pdf :) – Mars