我正在學習OpenGL NeHe製作。當我閱讀第22課Bump-Mapping,多紋理時,我遇到了一個問題。使用OpenGL中的auxDIBImageLoad將紋理加載爲紋理
當我加載徽標bmp文件時,我需要加載兩個bmp文件:一個存儲顏色信息,另一個存儲alpha信息。 這裏是兩個BMP文件: OpenGL_Alpha.bmp:
和OpenGL.bmp:
下面是代碼:
if (Image=auxDIBImageLoad("Data/OpenGL_ALPHA.bmp")) {
alpha=new char[4*Image->sizeX*Image->sizeY];
for (int a=0; a<Image->sizeX*Image->sizeY; a++)
alpha[4*a+3]=Image->data[a*3]; //???????
if (!(Image=auxDIBImageLoad("Data/OpenGL.bmp"))) status=false;
for (a=0; a<Image->sizeX*Image->sizeY; a++) {
alpha[4*a]=Image->data[a*3];//??????????
alpha[4*a+1]=Image->data[a*3+1];
alpha[4*a+2]=Image->data[a*3+2];
}
glGenTextures(1, &glLogo);
glBindTexture(GL_TEXTURE_2D, glLogo);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, Image->sizeX, Image->sizeY, 0, GL_RGBA, GL_UNSIGNED_BYTE, alpha);
delete alpha;
}
我的問題是:爲什麼Image->數據的索引是* 3?
有人能爲我解讀嗎?
:你能推薦一些好的書籍或材料研究的OpenGL非常感謝? – XiaJun
我可以推薦這個:http://www.arcsynthesis.org/gltut/。如果它是由Nicol Bolas生產的,我無法解決! – Robinson
http://arcsynthesis.org/gltut是一個很好的教程,但仍在工作中。 http://www.lighthouse3d.com/tutorials/具有非常好的着色器教程資料。當然http://www.opengl.org/wiki/Getting_Started#Tutorials_and_How_To_Guides – datenwolf