|
|
唐明理老师:
我分别买了你的两本大作“学VC编游戏”和“学OpenGL编3D游戏”,但有一个问题不知道是你书中没讲还是我理解愚钝。
即: 两本书中似乎提出的地图拼贴图都是用相同的一图形反复拼贴,这样产生的地图仔细一看都是块图,十分不舒服。
我现在企图将一大块位图分割成若干小图,然后不同部位贴不同的小图,具体方法如下:
bool baiscobj: oadT8(char *filename, GLuint &texture)//调8位贴图
{ AUX_RGBImageRec *pImage = NULL;
pImage = auxDIBImageLoad(filename); // 装入位图
if(pImage == NULL) return false; // 位图没装入返回错误
//--我添加的切图程序------------------------------
const int CutX = 16,CutY = 16; //切图大小
unsigned char pCutImage[CutX*CutY] = {0};
int i,j,m;
m = 0;
for(i=0; i<CutX; i++)
{
for(j=0; j<CutY; j++)
{
*(pCutImage + m) = *( (pImage->data) + i*(pImage->sizeX) + j );
m++;
}
}
//--我添加的切图程序完------------------------------
glGenTextures(1, &texture); // 生成贴图(纹理)
glBindTexture (GL_TEXTURE_2D,texture);// 捆绑贴图(纹理)
gluBuild2DMipmaps(GL_TEXTURE_2D, 4,
CutX,//pImage->sizeX, // 图形宽
CutY,//pImage->sizeY, // 图形高
GL_RGB, // 红绿蓝顺序
GL_UNSIGNED_BYTE, // 图像的数据类型是字节
pCutImage//pImage->data // 指定贴图(纹理)数据
);
free(pImage->data); // 释放位图数据占据的内存资源
free(pImage);
return true; // 返回成功
}
可是结果是纹理乱了。
请问究竟该怎样解决?
谢谢。
|
|