有时传递过多的参数会起作用,为什么?

亚历山大

我正在使用此网站进行测试:http : //glslsandbox.com/

这显示为红色:

#ifdef GL_ES
precision mediump float;
#endif

void main( void ) {
    vec4 c = vec4(1.0, 0.0, 0.0, 1.0);
    gl_FragColor = c;
}

我可以用不同的方式更改色线,有时可以编译,有时不能:

    vec4 c = vec4(1.0, vec2(0.0), vec4(1.0)); // works
    vec4 c = vec4(vec2(1.0), vec2(0.0), 0.0); // doesn't compile
    vec4 c = vec4(1.0, vec2(0.0), vec2(1.0)); // works
    vec4 c = vec4(1.0, vec4(0.0), 0.0); // doesn't compile
    vec4 c = vec4(vec4(1.0), vec4(0.0)); // doesn't compile

为什么传递过多的参数有时会起作用,有时却没有呢?

拉比德76

请参阅OpenGL阴影语言4.60规范(HTML)-5.4.2。向量和矩阵构造函数

[...]参数将被从左到右使用,每个参数将按顺序消耗其所有组件,然后再消耗下一个参数的任何组件。[...]
在这些情况下,必须有在参数设置,以提供用于在构建的值的每个分量的初始值设定足够的组件。在此最后使用的参数之外提供额外的参数是编译时错误。

因此,允许以下操作:

vec4 c = vec4(1.0, 2.0, 3.0, vec4(4.0));
vec3 c = vec3(vec4(4.0));

但是,以下内容是不允许的,因为构造函数(vec4(4.0))中的最后一个元素会导致编译时错误(提供超出最后使用的参数的额外参数是编译时错误。):

vec3 c = vec3(1.0, 2.0, 3.0, vec4(4.0));

这样做的原因是应该允许较大的向量(或矩阵)构造较小的向量(或矩阵)。例如:

vec4 v4;
vec3 v3 = vec3(v4); 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么有时重定向(>)有时不起作用,而附加(>>)却起作用?

来自分类Java

为什么有时不起作用?

来自分类Dev

为什么提供程序有时不起作用?

来自分类Dev

为什么 UseState 有时在我的代码中有时不起作用

来自分类Dev

为什么别名有时像nameref一样起作用,有时却不起作用?

来自分类Dev

为什么此URLClassLoader有时起作用而有时却不起作用?

来自分类Dev

为什么粘贴有时在 gnome-terminal 中不起作用?

来自分类Dev

为什么@PostFilter有时在Spring Security服务中不起作用?

来自分类Dev

为什么自动完成有时在 python IDE 中不起作用

来自分类Dev

为什么有时npm install在Mac上不起作用?

来自分类Dev

为什么map [time.Time]字符串有时不起作用?

来自分类Dev

为什么 regex 在 javascript 中有时不起作用?

来自分类Dev

python-打印换行符有时不起作用。为什么?

来自分类Dev

吱吱作响的小话,为什么有时简化的方法不起作用?

来自分类Dev

为什么有时变量分配在列表上不起作用

来自分类Dev

为什么php strpos()有时对Unicode字符不起作用?

来自分类Dev

为什么我的带脚本的Button有时不起作用?

来自分类Dev

为什么在动作参数中有时需要传递lambda而不是其他时间?

来自分类Dev

为什么有时需要在将对象作为参数传递之前创建变量

来自分类Dev

为什么有时urllib.request.urlopen不起作用,但浏览器起作用?

来自分类Dev

为什么有时某些键盘键不起作用,而另一些时候却起作用?

来自分类Dev

为什么主题有时会起作用?

来自分类Dev

为什么 Django 中的 POST 请求有时会起作用,而有时却不起作用?(这几乎是随机的)

来自分类Dev

为什么有时File.write会变慢?

来自分类Dev

传递多个参数时,onclick事件不起作用。为什么?

来自分类Dev

为什么 fmt::Arguments as_str 在传递参数时不起作用?

来自分类Dev

为什么将我的委托作为参数传递给方法时不起作用?

来自分类Dev

传递多个作用域时,为什么 gcloud 会崩溃?

来自分类Java

我尝试将方法转发给super,但有时不起作用。为什么?

Related 相关文章

  1. 1

    为什么有时重定向(>)有时不起作用,而附加(>>)却起作用?

  2. 2

    为什么有时不起作用?

  3. 3

    为什么提供程序有时不起作用?

  4. 4

    为什么 UseState 有时在我的代码中有时不起作用

  5. 5

    为什么别名有时像nameref一样起作用,有时却不起作用?

  6. 6

    为什么此URLClassLoader有时起作用而有时却不起作用?

  7. 7

    为什么粘贴有时在 gnome-terminal 中不起作用?

  8. 8

    为什么@PostFilter有时在Spring Security服务中不起作用?

  9. 9

    为什么自动完成有时在 python IDE 中不起作用

  10. 10

    为什么有时npm install在Mac上不起作用?

  11. 11

    为什么map [time.Time]字符串有时不起作用?

  12. 12

    为什么 regex 在 javascript 中有时不起作用?

  13. 13

    python-打印换行符有时不起作用。为什么?

  14. 14

    吱吱作响的小话,为什么有时简化的方法不起作用?

  15. 15

    为什么有时变量分配在列表上不起作用

  16. 16

    为什么php strpos()有时对Unicode字符不起作用?

  17. 17

    为什么我的带脚本的Button有时不起作用?

  18. 18

    为什么在动作参数中有时需要传递lambda而不是其他时间?

  19. 19

    为什么有时需要在将对象作为参数传递之前创建变量

  20. 20

    为什么有时urllib.request.urlopen不起作用,但浏览器起作用?

  21. 21

    为什么有时某些键盘键不起作用,而另一些时候却起作用?

  22. 22

    为什么主题有时会起作用?

  23. 23

    为什么 Django 中的 POST 请求有时会起作用,而有时却不起作用?(这几乎是随机的)

  24. 24

    为什么有时File.write会变慢?

  25. 25

    传递多个参数时,onclick事件不起作用。为什么?

  26. 26

    为什么 fmt::Arguments as_str 在传递参数时不起作用?

  27. 27

    为什么将我的委托作为参数传递给方法时不起作用?

  28. 28

    传递多个作用域时,为什么 gcloud 会崩溃?

  29. 29

    我尝试将方法转发给super,但有时不起作用。为什么?

热门标签

归档