[MAC] Xcode OpenGL中SOIL库与stbi_load库加载图片
在learnopengl的教程里面贴图那一章,xcode里面使用stbi_load 会报错,教程里面是
// load image, create texture and generate mipmaps
int width, height, nrChannels;
// The FileSystem::getPath(...) is part of the GitHub repository so we can find files on any IDE/platform; replace it with your own image path.
unsigned char *data = stbi_load(FileSystem::getPath("resources/textures/container.jpg").c_str(), &width, &height, &nrChannels, 0);
unsigned char *data = stbi_load("images/test1.bmp", &width, &height, &nrChannels, 0);
然而fileSystem这个有问题。
解决方法1:使用SOIL库
安装了SOIL库使用命令行
git clone https://github.com/DeVaukz/SOIL
之后需要在xcode 设置编译文件

注意只留这些src文件夹的文件,其他的不留会有重复。
int texwidth,texheight,nrChannels;
unsigned char *image = SOIL_load_image("/Users/kangyixiao/EchoFile/coding/SJTU-SE-Junior/SE344_ComputerGraphics/OpenGLTest2/images/test1.png", &texwidth, &texheight, 0, SOIL_LOAD_RGB);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, texwidth, texheight, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
if(image){
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, texwidth, texheight, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D);
}
else
std::cout<<SOIL_last_result()<<std::endl;
SOIL_free_image_data(image);
glBindTexture(GL_TEXTURE_2D,0);
成功

解决方案参考了
https://www.cxyzjd.com/article/gcola007/78458009
在学习OpenGL贴图时,使用stbi_load在MAC的Xcode环境中出现错误。通过引入SOIL库解决了问题。安装SOIL库后,保留src文件夹的内容,并配置Xcode编译设置,成功实现图片加载。参考解决方案来源于网络。

807

被折叠的 条评论
为什么被折叠?



