OPENGL 加载3D模型后的材质问题?
使用OPENGL 加载了个3DS 的模型,读取材质后,原来绘制的图形都变了颜色,真麻烦
////////// 遍历所有的材质
//for(int i = 0; i < g_3DModel.numOfMaterials; i++)
//{
// // 判断是否是一个文件名
// if(strlen(g_3DModel.pMaterials[i].strFile) > 0)
// {
// // 使用纹理文件名称来装入位图
// CreateTexture(g_Texture, g_3DModel.pMaterials[i].strFile, i);
// }
// // 设置材质的纹理ID
// g_3DModel.pMaterials[i].texureId = i;
//}
void BiscuitView::CreateTexture(UINT textureArray[], LPSTR strFileName, int textureID)
{
AUX_RGBImageRec *pBitmap = NULL;
if(!strFileName) // 如果无此文件,则直接返回
return;
pBitmap = auxDIBImageLoadA(strFileName); // 装入位图,并保存数据
if(pBitmap == NULL) // 如果装入位图失败,则退出
exit(0);
// 生成纹理
glGenTextures(1, &textureArray[textureID]);
// 设置像素对齐格式
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, textureArray[textureID]);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, pBitmap->sizeX, pBitmap->sizeY, GL_RGB, GL_UNSIGNED_BYTE, pBitmap->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_LINEAR);
if (pBitmap) // 释放位图占用的资源
{
if (pBitmap->data)
{
free(pBitmap->data);
}
free(pBitmap);
}
}
可以加载3DS 后不影响原来的图形吗?