首页 > 其他分享 >LearnOpengl_纹理初见问题

LearnOpengl_纹理初见问题

时间:2024-01-29 13:12:53浏览次数:21  
标签:设置 widthTex 纹理 RGB 初见 RGBA LearnOpengl GL

在跟随learnOpengl教程绘制纹理时发现了一个问题。原本彩色纹理绘制出来却是黑白的,且和原图像差距很大。如图。

 可以看出显示的纹理并不正确。

在确保顶点着色器和片段着色器正确的情况下。我按照网上的说法修改了图片大小为128*128保证是2的倍数。这也没有解决问题。

接着我查询了png图片的颜色通道,发现是RGBA的通道。但是在加载的时候我只用到了RGB通道。

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, widthTex, heightTex, 0, GL_RGB, GL_UNSIGNED_BYTE, data);

于是我把GL_RGB换成GL_RGBA就可以解决问题了。

 验证一下猜想。

换了个png图片,并设置GL_RGB,原图和绘制的结果对比

 当设置GL_RGBA时

 另外,jpg图像只有RGB三个通道,只用设置为GL_RGB。设置为GL_RGBA反而会出错。因此设置纹理的时候需要根据纹理颜色通道来设置GL_****。

注意到图片是反转的。这是因为,原图像0.0在左上,opengl中在左下导致的。解决办法如下

stbi_set_flip_vertically_on_load(true);//在加载纹理前加上这个语句
unsigned int texture;
int widthTex, heightTex, nrChannelsTex;
unsigned char* data = stbi_load("texture/s5.jpg", &widthTex, &heightTex, &nrChannelsTex, 0);

 

标签:设置,widthTex,纹理,RGB,初见,RGBA,LearnOpengl,GL
From: https://www.cnblogs.com/flippedBlogs/p/17994271

相关文章

  • Three.js 纹理贴图的实现
    在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.jsAI自动纹理开发包 - YOLO虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎纹理贴图简介当我们创建一个网格时,比如我们不起眼的立方体,我们传入两个组件:几......
  • 初见threejs
    threejs底层封装了强大的webGL技术,让开发者们可以开箱即用(其实也并非开箱即用,还是挺麻烦的......
  • 计算机图形:纹理与表面细节
    目录纹理技术为什么需要纹理?如何添加纹理?纹理映射线性纹理图案表面纹理图案体纹理图案纹理缩减图案凹凸映射构造凹凸图顶点空间(待完成)帧映射OpenGL函数线纹理函数表面纹理函数体纹理函数纹理图案的颜色选项纹理映射选项纹理环绕复制帧缓存中的纹理图案纹理坐标数组纹理图案命名纹......
  • 3D游戏角色建模纹理贴图处理
    在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.jsAI自动纹理开发包 - YOLO虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎在本文中,我们将介绍3D纹理的基础知识,并讨论为什么它是游戏美术的关键部分。期......
  • PBR纹理贴图类型详解
    在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.jsAI自动纹理开发包 - YOLO虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎PBR纹理是一种帮助3D艺术家使他们的3D渲染看起来更逼真的技术。与其他着色......
  • 初见 Amazon Q
    前言如果今年要写一篇年终总结的话,生成式Ai一定是绕不过的一个话题,自从去年的chatGPT火爆全球后,今年各种生成式Ai的产品络绎不绝地出现大众视线,版本迭代的速度也是非常快,大家甚至开始在自己的生活和工作中去尝试使用AI工具提升效率,我也认为AI可以帮助我们再一次提升人......
  • 【eBPF-01】初见:基于 BCC 框架的第一个 eBPF 程序
    闲言少叙,本文记录了如何零基础通过BCC框架,入门eBPF程序的开发,并实现几个简易的程序。有关eBPF的介绍,网络上的资料有很多,本文暂且先不深入讨论,后面会再出一篇文章详细分析其原理和功能。我们目前只需要知道,eBPF实际上是一种过滤器,这种过滤器几乎可以插入内核源码的任意的......
  • 解密视频魔法:将ExternalOES纹理转化为TEXTURE_2D纹理
    在使用OpenGLES进行图形图像开发时,我们常使用GL_TEXTURE_2D纹理类型,它提供了对标准2D图像的处理能力。这种纹理类型适用于大多数场景,可以用于展示静态贴图、渲染2D图形和进行图像处理等操作。另外,有时我们需要从Camera或外部视频源读取数据帧并进行处理。这时,我们会使用GL_TEXT......
  • 3D 纹理贴图基础知识
    在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.jsAI自动纹理开发包 - YOLO虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎介绍纹理贴图是创建模型时离不开的最后一块拼图。同样,如果没有纹理贴图的多样......
  • 如何使用不同的纹理贴图制作逼真的 3D 图形?
    在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.jsAI自动纹理开发包 - YOLO虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎在过去的很多年里,我一直在视觉效果行业工作,发现几乎每个艺术家都致力于在3D产品......