昨天做水波,遇到一个十分可恶的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: file name (Simple1.vs)
content: (copyed from RenderMonkey)
varying vec2 Texcoord;
void main( void )
{
gl_Position = ftransform();
gl_FrontColor = gl_Color;
Texcoord = gl_MultiTexCoord0.xy;
}
================
PS: file name (wavespread.ps)
Content: (write myself to calculate the water wave.
uniform sampler2D Texture0;
uniform vec4 pixel_dim;
uniform float fFrameTime;
varying vec2 texCoord;
void main(void)
{
......
}
注意两个varying vec2 texCoord;
这样两个shader在84.xx的驱动上竟然能正常工作。。。真是faint......