OpenGL NeHe Productionを学んでいます。レッスン22バンプマッピング、マルチテクスチャを読んだときに問題が発生しました。
ロゴbmpファイルをロードするとき、2つのbmpファイルをロードする必要があります。1つは色情報を格納し、もう1つはアルファ情報を格納します。これが2つの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->dataのインデックスがa* 3なのか?
誰かが私のために解釈してもらえますか?