用stb_image.h轻松地加载图片到程序中(比如纹理)

stb_image.h是Sean Barrett的一个非常流行的单头文件图像加载库,它能够加载大部分流行的文件格式,并且能够很简单得整合到你的工程之中。
stb_image.h可以在https://github.com/nothings/stb下载。
在这里插入图片描述
解压后找到stb_image.h加入你的工程,并另创建一个新的C++文件,输入以下代码:

#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"

通过定义STB_IMAGE_IMPLEMENTATION,预处理器会修改头文件,让其只包含相关的函数定义源码,等于是将这个头文件变为一个 .cpp 文件了。,现在只需要在你的程序中包含stb_image.h之后输入你的代码并编译就可以了。

要使用stb_image.h加载图片,我们需要使用它的stbi_load函数:

int width, height, nrChannels;
unsigned char *data = stbi_load("图片路径", &width, &height, &nrChannels, 0);

参数:
首先接受一个图像文件的位置作为输入(放入项目文件夹下只需要输入图片名称即可)。
接下来它需要三个int作为它的第二、第三和第四个参数,stb_image.h将会用图像的宽度、高度和颜色通道的个数填充这三个变量。我们生成纹理的时候会用到的图像的宽度和高度的。

应用:
因为我是用stbi_load来加载纹理图片的,所以这里举一个纹理的例子:
我们可以直接把上面得到的data用glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);生成纹理,可以看到之前定义并传入stbi_load的width和height在此使用。GL_UNSIGNED_BYTE就是data的数据类型在OpenGL中的标识。

最后:
释放图像的内存是一个很好的习惯stbi_image_free(data);。

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值