|
做地形渲染, 里面有2个以上sampler2D时渲染结果就不对了。
以下是fs代码
- uniform sampler2D detailMap1; /*细节纹理*/
- uniform sampler2D lightMap; /*光照贴图*/
- uniform sampler2D detailInfo; /*细节纹理分布图*/
- uniform float fTexScale;
- void main(void)
- {
- vec3 vInfo = vec3(texture2D(detailInfo, gl_TexCoord[0].xy)); /*获取细节纹理的分布信息*/
- /*根据分布信息中的权重,调整细节纹理的颜色*/
- vec3 vColor = vInfo.x * vec3(texture2D(detailMap1, gl_TexCoord[0].xy));
- /*获取光照贴图的数据*/
- vec3 vLight = vec3(texture2D(lightMap, gl_TexCoord[0].xy));
- /*合并为最终颜色*/
- gl_FragColor = vec4(vColor * vLight.x, 1.0);
- }
复制代码
以上代码渲染后的结果竟然是把detailInfo给渲染上去了, 而我试验了一下,如果去掉detailInfo,在只有两个或1个sampler2D的情况下,合并颜色都是正确的。
我的显卡是 ATI MOBILITY RADEON X300 , 莫非只支持两个sampler2D ?
还是有什么设置没打开?
注:我没有使用glActiveTexture等多纹理函数
|
|