我想凹凸贴图应用到2D纹理,从我在本教程中所看到的代码:http://www.paulsprojects.net/tutorials/simplebump/simplebump.htmlOpenGL的凹凸贴图没有工作
我已经改变了代码与我的设置工作(不使用客户端的状态,绘画与glVertex代替glDrawElements等... verticies),但是当我运行该程序,我得到这样的输出:
http://www.tiikoni.com/tis/view/?id=cf02ea7
这是代码:(X,Y,Z ,w,h,st都是有效值)
//Bind normal map to texture unit 0
glBindTexture(GL_TEXTURE_2D, bump->texnum);
glEnable(GL_TEXTURE_2D);
//Bind normalisation cube map to texture unit 1
glActiveTextureARB(GL_TEXTURE1_ARB);
glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, draw_ncm);
glEnable(GL_TEXTURE_CUBE_MAP_ARB);
glActiveTextureARB(GL_TEXTURE0_ARB);
//Set up texture environment to do (tex0 dot tex1)*color
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
glActiveTextureARB(GL_TEXTURE1_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_DOT3_RGB_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PREVIOUS_ARB);
glActiveTextureARB(GL_TEXTURE0_ARB);
glBegin(GL_QUADS);
glTexCoord2f(st[0], st[1]);
glVertex3f(x, y, z);
glTexCoord2f(st[0], st[3]);
glVertex3f(x, y+h, z);
glTexCoord2f(st[2], st[3]);
glVertex3f(x+w, y+h, z);
glTexCoord2f(st[2], st[1]);
glVertex3f(x+w, y, z);
glEnd();
// texture pass
glBindTexture (GL_TEXTURE_2D, pic->texnum);
glBegin(GL_QUADS);
glTexCoord2f(st[0], st[1]);
glVertex3f(x, y, z);
glTexCoord2f(st[0], st[3]);
glVertex3f(x, y+h, z);
glTexCoord2f(st[2], st[3]);
glVertex3f(x+w, y+h, z);
glTexCoord2f(st[2], st[1]);
glVertex3f(x+w, y, z);
glEnd();
你为什么用glTexEnv打扰?只需使用着色器并完成! – datenwolf