[程式] GLSL的shader套用

看板GameDesign (遊戲設計)作者 (茶樓推點心的)時間16年前 (2008/11/10 13:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
關於shader套用的問題, 小弟想要套用下面網站裡的shader,卻一直做不出效果, 還請大大們開示。 http://www.ozone3d.net/tutorials/bump_mapping_p4.php 我的code大概如下: 作法是載入兩張圖到shader,一張是有顏色的, 一張是黑白算normal的。 是不是兩張圖LoadTexture要寫得不一樣呢? 還是說display裡面掛材質到shader裡寫錯了呢? 卡好幾天了 @@ int main(int argc, char** argv) { // 初始化 ... // 載入shader LoadShaders(); // 載入兩張圖 glGenTextures(2, texObject); LoadTexture(0, "有顏色的材質"); LoadTexture(1, "黑白的計算normal變化的材質"); // callback & mainloop ... } void LoadTexture(int textureIndex, char* filename) { AUX_RGBImageRec* img; img = auxDIBImageLoadA(filename); glBindTexture(GL_TEXTURE_2D, texObject[textureIndex]); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, img->sizeX, img->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, img->data); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); } void Display() { // 初始化 & 矩陣設定 ... // 將兩張圖掛入shader使用 glActiveTextureARB( GL_TEXTURE0_ARB ); // glBindTexture(GL_TEXTURE_2D, texObject[0]); GLint location = glGetUniformLocationARB(MyShader, "colorMap"); glUniform1iARB(location, 0); glActiveTextureARB( GL_TEXTURE1_ARB ); glBindTexture(GL_TEXTURE_2D, texObject[1]); location = glGetUniformLocationARB(MyShader, "normalMap"); glUniform1iARB(location, 1); int i,j; for (i=0;i < object->fTotal;i++) { glBegin(GL_POLYGON); for (j=0;j<3;j++) { glMultiTexCoord2fv(GL_TEXTURE0_ARB, object->tList[object->faceList[i][j].t].ptr); glNormal3fv(object->nList[object->faceList[i][j].n].ptr); glVertex3fv(object->vList[object->faceList[i][j].v].ptr); } glEnd(); } // swapbuffer & redisplay ... } -- 謝謝看完。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.218.120
文章代碼(AID): #195yNhk_ (GameDesign)
討論串 (同標題文章)
文章代碼(AID): #195yNhk_ (GameDesign)