|
[em17] [em17] [em17] [em17]
这里是对一个位图进行读取,
static BOOL bBusy = FALSE;
if(bBusy) return;
bBusy = TRUE;
m_pDib = new CDib("1.BMP");
GLubyte* pTextureBits=(GLubyte*)m_pDib->GetDibBitsPtr();
GLint width=m_pDib->GetDibWidth();
GLint height=m_pDib->GetDibHeight();
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
// 定义纹理:
glTexImage2D(GL_TEXTURE_2D,0,3,width,height,
0,GL_BGR_EXT,GL_UNSIGNED_BYTE,pTextureBits);
// 控制纹理:
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,
GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,
GL_NEAREST);
// 说明纹理映射方式:
glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
// 启动纹理映射:
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
glClearColor(1.0f,1.0f,1.0f,0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// glTranslatef(0.0f,0.0f,-4.5f);
glPushMatrix();
glRotatef(m_fAngleX, 1.0f, 0.0f, 0.0f);
glRotatef(m_fAngleY, 0.0f, 1.0f, 0.0f);
glRotatef(m_fAngleZ, 0.0f, 0.0f, 1.0f);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.5f, 0.5f, 0.5f);
glTexCoord2f(1.0f, 0.0f);glVertex3f(-0.5f, -0.5f, 0.5f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(0.5f, -0.5f, 0.5f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(0.5f, 0.5f, 0.5f);
glEnd();
然后到这里正式把第一个位图读取成功
我接下来准备调用下一张位图
然后我就考虑啊
m_pDib1 = new CDib("2.BMP");
......
这样调用完之后就不能显示了
为什么这样就不能继续调用呢
请教高手给个解释啊
|
|