图形卡之间的GLSL表现不一样

时间:2015-10-30 01:07:21

标签: opengl graphics glsl cocos2d-x

我有以下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需要)。谢谢你的帮助!

0 个答案:

没有答案