测试了一下的代码后发现是因为我定义的图片数组比图片大1,即一共右14张图,但是我定义的SNUM=15
void LoadGLTextures()
{
int i;
const char* pictures[SNUM] = {
"pictures\\pzxk.bmp",//前
"pictures\\nzxk.bmp",//后
"pictures\\nyxk.bmp" ,//下
"pictures\\pyxk.bmp",//上
"pictures\\nxxk.bmp" ,//左
"pictures\\pxxk.bmp",//右
"pictures\\skin1.bmp",//球皮肤
"pictures\\skin2.bmp",//球
"pictures\\skin3.bmp",//球
"pictures\\skin4.bmp",//球
"pictures\\skin5.bmp",//球
"pictures\\skin6.bmp",//球
"pictures\\skin7.bmp",//球
"pictures\\skin8.bmp",//球//一共14张图
};
AUX_RGBImageRec* someImage[SNUM];//是一个结构体类型,该结构体用于描述一个RGB图像的特征,包括图像的宽度、高度和像素数据的指针
memset(someImage, 0, sizeof(void*) * SNUM);//第一个参数是指向要填充的内存块的指针,第二个参数是要被设置的值,第三个参数是要被设置为该值的字节数
for (i = 0; i < SNUM; i++)
{
someImage[i] = auxDIBImageLoad(pictures[i]);
if (someImage[i]) //纹理是否存在
{
//printf("%d ", i);
glGenTextures(1, &texture[i]); //创建纹理
glBindTexture(GL_TEXTURE_2D, texture[i]); //绑定纹理
glTexImage2D(GL_TEXTURE_2D, 0, 3, someImage[i]->sizeX, someImage[i]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, someImage[i]->data);
//printf("%d %d %c\n", someImage[i]->sizeX, someImage[i]->sizeY, someImage[i]->data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
free(someImage[i]); //释放图像结构变量占用的内存
//free(someImage[i]->data);
}
else {
//printf("%d", i);//test
printf("NULL");
}
}
}