添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
力能扛鼎的饭卡  ·  原 ...·  1 年前    · 
伤情的凉茶  ·  linux - How to check ...·  1 年前    · 

最近做一个OpenGL渲染的小项目,渲染出来的效果颜色有偏差,偏蓝色,glColor没问题,光照没问题,材质没问题,怪了,冷静思考一下,只有在贴图的时候颜色有偏差,不显示贴图颜色没问题,可以把问题定位到贴图出问题了,到指定纹理的地方看了看,仔细检查参数,再想到我使用Opencv加载图像的,opencv的mat类的颜色通道是BGR,问题找到了,就出在这里,代码如下所示

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB , mat1.cols,    mat1.rows, 0, GL_BGR , GL_UNSIGNED_BYTE, mat1.data);

问题 :用Kinect Dk读出来的图像用Opencv显示没有纹理,保存为BMP也没有 问题 ,但是 OpenGL 纹理加载显示出来偏蓝 解决: OpenGL 纹理数据加载时使用的 颜色 通道错误了,原来数据的 颜色 通道是BGRA的 之前:glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, _width, _height, 0, GL_RGBA, GL_UNSIGNED... glGenerateMipmap(GL_TEXTURE_2D); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); if ((imageType == FIT_BITMAP) && (FreeImage_GetBPP(pBitmap) == 24)) textureFormat = GL_RGBA; 像素在bmp中图像中以BGR方式进行存储的,GL_BGR_EXT方式进行纹理创建 glTexImage2D(GL_TEXTURE_2D, 0, 3, mp_width, mp_Height, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, lpcBuffer); 解决了 颜色 偏差 问题 。 下面这张图片是截取于 OpenGL 的纹理采取那部分的代码,注意图片的格式为jpg,然后读取图片的格式为RGB 但是下面这张截图中,我需要加载的图片数据的格式是png,是4通道的(调试时可以从nrChannels参数看出),所以正确的方法如下: 如果格式没有注意的话,就会出现读取的数据不正确的情况 RenderDoc 问题 使用renderDoc调试程序时,程序中涉及到的一些相对路径,可能读取不到,导致无法正常运行程序,因此需要改成绝对路径,如下: 这样也可以正 例如我创建了一个全屏的纹理顶点,但图片不一定是刚好符合屏幕比例的,这样纹理 贴图 一贴上去,一拉伸就不符合图片比例了,会比较难看,那么对顶点做怎样的临时变换可以维持渲染的图片保持比例呢? 我的基本环境设置如下: glViewport(0, 0, w, h);//设置视口 float ratio = (float) h / w; frustumM(mProjMatrix, 0, -1, 1, -ratio, ratio, 1, 50);//设置投影矩阵 投影矩阵设置方法: voi... 初学 OpenGL ,什么都不太会,在开启双缓冲并进行实时绘图的时候发现, 颜色 和设置的 颜色 并不完全一样,不太纯正,一直找不到原因,互联网上也搜不到,后来有个偶然的机会,知道了原因,需要在 OpenGL 环境初始化的时候做一些配置,具体配置非常的简单,在启用深度测试的后面,指定所做的测试类型,代码如下: //启用深度测试 ::glEnable(GL_DEPTH_TEST); glDepthFunc( 项目中曾遇到过多次透明图片经过 OpenGL 渲染之后或者图片 颜色 偏黑出现色差或者透明区域呈现黑色,不是透明状态。这种情况的出现多是由于glBlendFunc设置的有 问题 造成的。其默认的设置是glBlendFunc(GL_ONE, GL_ZERO);通过glBlendFunc可以设置纹理的Blend方式,其第一个参数代表源因子,第二个参数代表目标因子,这里把将要画上去的 颜色 称为源 颜色 ,把原来的 颜色 称为... 在学习 opengl 纹理题图的时候,使用stb_image加载jpg文件,出现了图片显示出现颠倒的情况,如下图所示 出现这种情况的原因是,在默认的情况下。std_image是从图片的最后一行进行存储。 所以在显示图片的时候需要将图片进行翻转。 解决方案: 1. 翻转定点信息中的纹理图标 float vertices[] = { // positions ... JPG图像 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data); PNG图像 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); 注意...