当向量相乘时,OpenGL闪烁

时间:2017-11-08 15:13:21

标签: c++ opengl

我正在进行OpenGL分配,要求我们合并Phong照明模型。但是,当我试图将两个1x3向量相乘时,我看到了闪烁。

启用双重交换,mipmap也是如此。

示例:

  

color = texture(myTextureSampler,UV).rgb * vec3(0.5,0.5,0.5);

  

color = texture(myTextureSampler,UV).rgb * vec3(0.9,0.9,0.9);

  

color = texture(myTextureSampler,UV).rgb * 0.9;

  

color = texture(myTextureSampler,UV).rgb * vec3(1.0,1.0,1.0);

(是的......那是一个gif)

更新:即使这样闪烁:

  

color = vec3(0.9,0.1,0.2);

完整的源代码是here,它基于opengl-tutorials.org code,但(希望)此问题很快就会更新,并且问题的重复性很小。

干杯

1 个答案:

答案 0 :(得分:0)

事实证明,问题是OpenGL期望RGBA(vec4)输出而不是RGB(vec3),因为我启用了GL_BLEND

解决方案1 ​​:删除GL_BLEND,关闭glEnable(GL_BLEND)

解决方案2 :返回vec4。您可以使用vec4(existing_vec3, 1.0)将其“填充”为1x4向量。