我有以下GLSL着色器,它在带有NVIDIA GeForce GT 330M的Mac电脑上工作,这是一台带有ATI Radeon HD 5750的Mac计算机,第二台Mac内置的Ubuntu VM,但不在内置的Ubuntu VM上带有GeForce GTX 780的Windows机器(所有驱动程序都是最新的)。着色器非常基本,所以我正在寻找一些可能出错的帮助!顶点着色器看起来像(我使用cocos2d-x游戏引擎,这是定义所有CC_ {x}变量的地方):
varying vec4 v_fragmentColor;
void main() {
gl_Position = CC_PMatrix * CC_MVMatrix * a_position;
gl_PointSize = CC_MVMatrix[0][0] * u_size * 1.5f;
v_fragmentColor = vec4(1, 1, 1, 1);
}
片段着色器:
varying vec4 v_fragmentColor;
void main() {
gl_FragColor = texture2D(CC_Texture0, gl_PointCoord) * v_fragmentColor; // Can't see anything
// gl_FragColor = texture2D(CC_Texture0, gl_PointCoord); // Produces the texture as expected, no problems!
// gl_FragColor = v_fragmentColor; // Produces a white box as expected, no problems!
}
正如你所看到的,我得到了非常奇怪的行为,其中采样器CC_Texture0和变化的vec4,v_fragmentColor似乎都正常工作,但是它们相乘会导致问题。我有理由相信其他一切设置正确,因为我看到它在其他系统上正常工作,所以它似乎与图形卡有关或一些我不知道的未定义行为的?另外,我使用#version 120(gl_PointCoord需要)。谢谢你的帮助!