纹理贴图时,为什么像素深度是8,2,4时不能贴上?请各位高手指教!
请教各位高手,我在进行纹理贴图时用到下面的程序,只有24位图才能显示。如何才能使最简单的黑白2值图像以纹理的形式贴到三维空间中呢?我曾经用过【glRasterPos3f(-0.1,-0.1,0);//设置光栅起始位置
glDrawPixels(checkImageWidth,checkImageHeight,GL_RGB, GL_UNSIGNED_BYTE,checkImage);】语句,只能以平面图显示,不能在三维空间中显示,请指教!!!
AUX_RGBImageRec *OpenGLView::LoadBMP(char *filename)
{
FILE *file=NULL;
if(!filename)
return NULL;
file=fopen(filename,"r");
if(file)
{
fclose(file);
return auxDIBImageLoad(filename);
}
return NULL;
}
int OpenGLView::LoadTexures(char *filename, int id)
{
int status=false;
AUX_RGBImageRec *TextureImage=NULL;
ZeroMemory(&TextureImage,sizeof(void*)*1);
if(TextureImage=LoadBMP(filename))
{
status=true;
glGenTextures(1,&texture[id]);
glBindTexture(GL_TEXTURE_2D, texture[id]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->sizeX, TextureImage->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT);//增加内容,无影响
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT);//增加内容
}
if(TextureImage)
{
if(TextureImage->data)
free(TextureImage->data);
free(TextureImage);
}
return status;
}
GLint OpenGLView::InitGL(GLvoid)
{
glEnable(GL_TEXTURE_2D);
glClearColor(0,0,0,0);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPixelStorei(GL_UNPACK_ALIGNMENT ,1);
LoadTexures("Data/0.bmp",0);
return TRUE;
}