【发布时间】:2020-05-19 18:34:21
【问题描述】:
我正在从事一个大学项目,该项目旨在制作像 Bejewled 这样的游戏。我们正在使用 OpenGL 和 CImg。项目文件中包含以下功能:
void ReadImage(string imgname, vector<unsigned char> &imgArray)
{
using namespace cimg_library;
CImg<unsigned char> img(imgname.c_str());
imgArray.resize(img.height() * img.width() * 3, 0);
int k = 0;
unsigned char *rp = img.data();
unsigned char *gp = img.data() + img.height() * img.width();
unsigned char *bp = gp + img.height() * img.width();
for (int j = 0; j < img.width(); ++j)
{
int t = j;
for (int i = 0; i < img.height(); ++i, t += img.width())
{
imgArray[k++] = rp[t];
imgArray[k++] = gp[t];
imgArray[k++] = bp[t];
}
//imgArray[i][j] = img[k++];
}
}
据我了解,顾名思义,这个函数应该读取一个图像。但我不知道如何使用它以及如何读取图像。如果有人可以指导我,我将不胜感激。
编辑: 这就是我调用函数的方式:
vector<unsigned char> imgvec;
ReadImage("donut", imgvec);
导致错误:
[CImg] *** CImgIOException *** [instance(0,0,0,0,00000000,non-shared)] CImg<unsigned char>::load(): Failed to open file 'donut'.
【问题讨论】:
-
我的回答解决了您的问题吗?如果是这样,请考虑接受它作为您的答案 - 通过单击计票旁边的空心对勾/复选标记。如果没有,请说出什么不起作用,以便我或其他人可以进一步为您提供帮助。谢谢。 meta.stackexchange.com/questions/5234/…