我在 OpenGL 环境中使用 CImg。当我尝试添加纹理时,每种颜色似乎都在纹理中分离成单独的图块。例如,当我尝试使用如下所示的纹理时:
它出现在我的程序中,如下所示:
我正在加载的纹理是一个 512x512 .bmp 文件,以 24 位颜色深度 RBG 保存在 Gimp 中。我尝试了 Gimp 允许的其他一些格式,但这些只会导致 CImg 出错。
这就是我加载纹理的方式:
glBindTexture(GL_TEXTURE_2D, 13);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
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_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
CImg<unsigned char> src("MilkyWay.bmp");
glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, src.width(), src.height(),
0, GL_RGB, GL_UNSIGNED_BYTE, src);
这就是我显示纹理的方式:
glEnable (GL_TEXTURE_2D);
glBindTexture (GL_TEXTURE_2D, 13);
glBegin (GL_QUADS);
glTexCoord2f (0.0, 1.0);
glVertex3f (-120.0, 120.0, 0.0);
glTexCoord2f (1.0, 1.0);
glVertex3f (120.0, 120.0, 0.0);
glTexCoord2f (1.0, 0.0);
glVertex3f (120.0, -120.0, 0.0);
glTexCoord2f (0.0, 0.0);
glVertex3f (-120.0, -120.0, 0.0);
glEnd ();