2012-10-02 55 views
0

我想凹凸贴图应用到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(); 
+0

你为什么用glTexEnv打扰?只需使用着色器并完成! – datenwolf

回答

1

您是否正在为正在使用的着色器提供切线向量?您需要为着色器访问切线矢量属性以使其正常工作。您还需要为普通地图定义制服。当我回到家时,我可以全面回答这个问题,但这比你在这里发布的内容更为复杂。另外,您希望遵守哪些OpenGL核心? 1.x的? 2.X? 3.X/4.x的?

+0

我期待遵守,我猜,无论是在我的机器上,我认为是4.3 –

+0

您正在使用折旧功能,然后(glBegin()和glEnd())。尝试通过http://www.swiftless.com/教程。它提供了4.x兼容性编程的良好概述。 –