OpenGL图像加载方式

OpenGL加载图像常用几种方式

OpenCV方式

    //create texture
    cv::Mat image = cv::imread("awesomeface.png",cv::IMREAD_COLOR);
    GLuint texture;
    glGenTextures(1, &texture);
    glBindTexture(GL_TEXTURE_2D, texture);

    cv::Mat fp;
    cv::cvtColor(image,fp,cv::COLOR_BGRA2RGBA);
    glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,fp.cols,fp.rows,0, GL_RGBA, GL_UNSIGNED_BYTE, fp.data);
    glGenerateMipmap(GL_TEXTURE_2D);

SOIL2方式

int width, height;
unsigned char* image = SOIL_load_image("awesomeface.png", &width, &height, 0, SOIL_LOAD_RGBA);			// 获取图片
	/* 生成纹理 */
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image);			// 读取图片信息
glGenerateMipmap(GL_TEXTURE_2D);	// 多层渐进纹理
SOIL_free_image_data(image);

stb方式

    int width, height, nrChannels;
    unsigned char *data = stbi_load("awesomeface.png", &width, &height, &nrChannels, 0);

    GLuint texture;
    glGenTextures(1, &texture);
    glBindTexture(GL_TEXTURE_2D, texture);

    glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,width,height,0, GL_RGBA, GL_UNSIGNED_BYTE, data);
    glGenerateMipmap(GL_TEXTURE_2D);
    stbi_image_free(data);

总结

类型使用感受
OpenCVCV过于庞大,不推荐
SOIL2功能很强大
stb推荐,只有头文件。精简好用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值