昨天做水波,遇到一个十分可恶的bug。
程序在笔记本的84.xx驱动下十分正常。
在台式机的6600显卡,84.xx驱动下工作基本正常,但是水波还是能看到的,但是如果shader所在路径不是很深的话,同一个VS链接到不同的PS会报错(这个错误只在通过expoler来启动release版才会碰到,调试器里启动不会。Debug版本也不会)。
如果把driver升级到91.47。则什么都没有了。glGetProgramiv去取link后的错误信息则取不到任何东西。很是奇怪。
程序在笔记本的84.xx驱动下十分正常。
在台式机的6600显卡,84.xx驱动下工作基本正常,但是水波还是能看到的,但是如果shader所在路径不是很深的话,同一个VS链接到不同的PS会报错(这个错误只在通过expoler来启动release版才会碰到,调试器里启动不会。Debug版本也不会)。
如果把driver升级到91.47。则什么都没有了。glGetProgramiv去取link后的错误信息则取不到任何东西。很是奇怪。
弄了我一天一夜。没明白怎么回事。
最后检查了一下两个shader,发现代码如下:
VS:filename(Simple1.vs)
content:(copyedfromRenderMonkey)
varyingvec2Texcoord;
voidmain(void)
{
gl_Position=ftransform();
gl_FrontColor=gl_Color;
Texcoord=gl_MultiTexCoord0.xy;
}
================
PS:filename(wavespread.ps)
Content:(writemyselftocalculatethewaterwave.
uniformsampler2DTexture0;
uniformvec4pixel_dim;
uniformfloatfFrameTime;
varyingvec2texCoord;
voidmain(void)
{
......
}
注意两个varyingvec2texCoord;
这样两个shader在84.xx的驱动上竟然能正常工作。。。真是faint......