OpenGL纹理贴图没有颜色
使用纹理贴图时没有颜色,显示黑白图,把纹理用bitmap图像输出时颜色显示正常
下面是贴图代码:
GLuint tex;
glGenTextures(1,&tex);
glBindTexture(GL_TEXTURE_2D,tex);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
//glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,size,size,0,GL_RGB,GL_FLOAT,_result);
unsigned char *bmp = new unsigned char[size*size*3];
for(int i = 0;i<size*size*3; i++)
{
bmp[i] = (unsigned char)(_result[i]*255);
}
wxImage img(size, size, bmp, true);
img.SaveFile("d:\\abc.bmp", wxBITMAP_TYPE_BMP);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,size,size,0,GL_BGR_EXT,GL_UNSIGNED_BYTE,bmp);
delete bmp;
void icfdRender::display_texture()
{
if(_dataset.points.empty() || _dataset.texture == 0) return;
glBindTexture(GL_TEXTURE_2D, _dataset.texture);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
icfdLICTech::Instance()->Enable(true);
icfdLICTech::Instance()->SetAlpha(0.5);
glBegin(GL_QUADS);
glTexCoord2f(0.0,0.0);
glVertex3fv(_dataset.points[0].coord);
glTexCoord2f(1.0,0.0);
glVertex3fv(_dataset.points[1].coord);
glTexCoord2f(1.0,1.0);
glVertex3fv(_dataset.points[2].coord);
glTexCoord2f(0.0,1.0);
glVertex3fv(_dataset.points[3].coord);
glEnd();
icfdLICTech::Instance()->Enable(false);
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,0);
}