纹理贴图时,为什么像素深度是8,2,4时不能贴上?请各位高手指教!

circleyuanyuan 2009-01-05 10:53:26
请教各位高手,我在进行纹理贴图时用到下面的程序,只有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;

}
...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fandh 2009-01-05
  • 打赏
  • 举报
回复
我记得画刷填充是可以的!建议你试试!
zzz822163 2009-01-05
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080401/10/3dea298e-7810-4d79-ab1c-d8c0dbfc355e.html
circleyuanyuan 2009-01-05
  • 打赏
  • 举报
回复
谢谢所有的朋友,当改为glTexImage2D(GL_TEXTURE_2D, 0, GL_COLOR_INDEX , TextureImage->sizeX, TextureImage->sizeY, 0,GL_LUMINANCE, GL_UNSIGNED_BYTE, TextureImage->data),问题仍然存在 。
可能是哪里还有问题,烦恼中......
菜牛 2009-01-05
  • 打赏
  • 举报
回复
GL_COLOR_INDEX
circleyuanyuan 2009-01-05
  • 打赏
  • 举报
回复
谢谢大家的回复,不过问题仍然存在,我把语句改为如下:【
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB , TextureImage->sizeX, TextureImage->sizeY, 0,GL_LUMINANCE, GL_UNSIGNED_BYTE, TextureImage->data);】仍然是8位图不能显示,此时的24位图以黑白图形式显示出来,请高手们指点!

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧