|
|
Hi:
首先,我把代码贴上来哈
- glPushAttrib(GL_ALL_ATTRIB_BITS);
- DrawCubeBox();
- glPopAttrib();
- glEnable(GL_LIGHTING);
- glPushAttrib(GL_ALL_ATTRIB_BITS);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, decal);
- glActiveTexture(GL_TEXTURE1);
- glBindTexture(GL_TEXTURE_2D, base);
- glBegin(GL_QUADS);
- glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
- glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
- glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
- glEnd();
复制代码
我写的shader只希望对四边形有影响;但是最后结果确对DrawCubeBox也有影响啊。怎么将shader范围控制在四边形的范围内呢?后来,我在渲染完四边形后,还贴加了
- glDeleteObjectARB(v);
- glDeleteObjectARB(p);
- glDetachObjectARB(p, v);
- glDetachObjectARB(p, f);
复制代码
也没有效果。于是,我就将连接的代码放在前面,结果确是不符合shader效果。片元shader为:
uniform sampler2D TextureUnit0;
uniform sampler2D TextureUnit1;
void main()
{
vec4 value1 = texture2D(TextureUnit0, gl_TexCoord[0]);
vec4 value2 = texture2D(TextureUnit1, gl_TexCoord[1]);
if(tex1.x >= 0.2 && tex1.y >= 0.2 &&
tex1.x <= 0.8 && tex1.y <= 0.8)
gl_FragColor = value2;
else
gl_FragColor = value1;
}
3Q |
|