|
|
发表于 2005-12-16 15:12:00
|
显示全部楼层
Re:OpenGL高手,请帮我修改
我也是刚学opengl,不过我试着改了一下还可以!
如下:没用你的shou(),直接在你的draw里边贴手纹理,不过另外写个函数也一样!
首先要制作hand.bmp的mask,就是将它的背景改为白色,其他要显示出来的为黑色!
你可以用一些画图软件得到这个遮罩!
然后在场景changjing();后写如下:
glEnable(GL_BLEND);
glDisable(GL_DEPTH_TEST);
glBlendFunc(GL_DST_COLOR,GL_ZERO);
glBindTexture(GL_TEXTURE_2D, texture[3]);//此为hand.bmp的mask纹理
glLoadIdentity();
glTranslatef(0.0f,0.0f,-2.0f);
glScalef(0.4f,0.4f,0.4f);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.5f, -2.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.5f, -2.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.5f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.5f, 0.0f, 0.0f);
glEnd();
glBlendFunc(GL_ONE, GL_ONE);
glBindTexture(GL_TEXTURE_2D, texture[1]);//此为hand.bmp的纹理
glLoadIdentity();
glTranslatef(0.0f,0.0f,-2.0f);
glScalef(0.4f,0.4f,0.4f);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.5f, -2.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.5f, -2.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.5f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.5f, 0.0f, 0.0f);
glEnd();
glDisable(GL_BLEND);
glEnable(GL_DEPTH_TEST);
|
|