OPENGL 什么时候2D纹理会显示不出来

zhou3724042 2009-07-08 11:24:19
弄了一天了 想请高手帮帮忙 希望可以解答 源码太多贴不上来 如果需要源码 我QQ是110190357

Texture::Texture(char* filename){
this->m_image = new BMPImage(filename);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

glBindTexture(GL_TEXTURE_2D, this->m_txtname);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, this->m_image->getImageWidth(), this->m_image->getImageHeight(),
0, GL_RGB, GL_UNSIGNED_BYTE, this->m_image->getPixelData());

}

Texture::~Texture(){
delete this->m_image;
}

void Texture::appTexture(){
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
glBindTexture(GL_TEXTURE_2D, this->m_txtname);
}
这个是我封装的Texture类


void GameView::display(){

glPushMatrix();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(10 * cos(this->m_angle), this->m_horizon, 10.0 * sin(this->m_angle), 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glScalef(this->m_zoom, this->m_zoom, this->m_zoom);

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluPerspective(90.0, (GLfloat)WINDOW_HEIGHT / (GLfloat)WINDOW_WIDTH, 0.0, 1000.0);


for(GLint i = 0;i < this->m_temple->getWidth();++i){
for(GLint j = 0;j < this->m_temple->getLength();++j){
switch(this->m_temple->getLandState(j, i)){
case LAND_COVERED:
this->drawCover(j, i);
break;
case LAND_UNCOVERED:
this->drawUncover(j, i);
break;
case LAND_ROAD:
this->drawRoad(j, i);
break;
case LAND_STONE:
this->drawStone(j, i);
break;

}
}
}

glPopMatrix();

glMatrixMode(GL_MODELVIEW);
glPopMatrix();

}

void GameView::drawRoad(GLint x, GLint y){
glEnable(GL_TEXTURE_2D);
this->m_landUncover->appTexture();
glBegin(GL_QUADS);
glColor3f(1.0, 0.0, 0.0);
glTexCoord2f(0.0, 0.0);glVertex3f((x - (GLfloat)this->m_temple->getLength() / 2) * LENGTH_PER_SQUARE, 0, (y - (GLfloat)this->m_temple->getWidth() / 2) * LENGTH_PER_SQUARE);
glTexCoord2f(1.0, 0.0);glVertex3f((x + 1 - (GLfloat)this->m_temple->getLength() / 2) * LENGTH_PER_SQUARE, 0, (y - (GLfloat)this->m_temple->getWidth() / 2) * LENGTH_PER_SQUARE);
glTexCoord2f(1.0, 1.0);glVertex3f((x + 1 - (GLfloat)this->m_temple->getLength() / 2) * LENGTH_PER_SQUARE, 0, (y + 1 - (GLfloat)this->m_temple->getWidth() / 2) * LENGTH_PER_SQUARE);
glTexCoord2f(0.0, 1.0);glVertex3f((x - (GLfloat)this->m_temple->getLength() / 2) * LENGTH_PER_SQUARE, 0, (y + 1 - (GLfloat)this->m_temple->getWidth() / 2) * LENGTH_PER_SQUARE);
glEnd();
glDisable(GL_TEXTURE_2D);
}这个是绘制的函数
...全文
174 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
helocy 2009-09-28
  • 打赏
  • 举报
回复
是不是被挡住了,换角度看看?
VR_Lab 2009-09-27
  • 打赏
  • 举报
回复
按5楼说的试试
olancome 2009-09-24
  • 打赏
  • 举报
回复
你们的弄出来没?
我的也是,整个模型都是显示的一个点的纹理。郁闷哦。
月中蓝 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ghost129 的回复:]
你drawRoad中glBegin(GL_QUADS);的前面加入
 glBindTexture(GL_TEXTURE_2D, this->m_txtname);
这句试试
[/Quote]

UP
VR_Lab 2009-08-23
  • 打赏
  • 举报
回复
确认你的位图在当前的目录下?
ghost129 2009-08-23
  • 打赏
  • 举报
回复
你drawRoad中glBegin(GL_QUADS);的前面加入
glBindTexture(GL_TEXTURE_2D, this->m_txtname);
这句试试
ghost129 2009-08-23
  • 打赏
  • 举报
回复
确认贴图是否存在,是否为bmp格式,大小是否为64*64,128*128,256*256中的一种,载入是否正确
hattrick110 2009-08-23
  • 打赏
  • 举报
回复
我的也显示不出来,请问怎么回事?
feilinhe 2009-08-10
  • 打赏
  • 举报
回复
1. glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(10 * cos(this->m_angle), this->m_horizon, 10.0 * sin(this->m_angle), 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glScalef(this->m_zoom, this->m_zoom, this->m_zoom);

2. glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluPerspective(90.0, (GLfloat)WINDOW_HEIGHT / (GLfloat)WINDOW_WIDTH, 0.0, 1000.0);
1,2两部分换下位置试试
zhou3724042 2009-07-08
  • 打赏
  • 举报
回复
不仅纹理无法显示 点化模式也无法显示

19,468

社区成员

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

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