新手LearnOpenGL纹理不显示的部分解决方法

项目场景:

在LearnOpenGL学习中遇到的一些问题,照着写但是纹理加载不出来或者两张纹理只加载一张;


问题描述

<纹理加载不出来>

1.文件路径是否正确——是否输出texture load fail等提示(设置了成功检查才会有提示)
  • 不正确——调整路径(上网搜解决方法)我把用到的图片放入了代码文件夹,不确定是否有帮助
  • 正确——继续
2.glTexImage2D中的RGB/RGBA是否设置正确
  • jpg—RGB
  • png—RGBA
  • 其他格式请查询
3.检查顶点着色器与片段着色器
  • out/in 数据是否写错
  • 计算公式是否有纰漏(检查细节一一对应)
4.只出现一个纹理
  • 检查以下代码的顺序
  • 也有可能是别的代码顺序导致的
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, texture1);
    
    glActiveTexture(GL_TEXTURE1);
    glBindTexture(GL_TEXTURE_2D, texture2);

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenGL 2.0中,你可以通过手动计算纹理坐标来禁用透视校正。具体来说,你可以将纹理坐标除以顶点坐标的w分量,以得到正确的纹理坐标。 以下是一个使用手动计算纹理坐标的示例: 首先,在顶点着色器中,你需要手动计算纹理坐标。例如: ``` attribute vec4 aPosition; attribute vec2 aTexCoord; varying vec2 vTexCoord; void main() { gl_Position = gl_ModelViewProjectionMatrix * aPosition; vTexCoord = vec2(aTexCoord.x/aPosition.w, aTexCoord.y/aPosition.w); gl_PointSize = 1.0; } ``` 上述代码中,`aPosition`是顶点的坐标向量,`aTexCoord`是顶点的纹理坐标。手动计算纹理坐标的方式是将纹理坐标除以顶点坐标的w分量,从而得到正确的纹理坐标。 接下来,在片元着色器中,你可以使用`texture2D()`函数来对纹理进行采样。例如: ``` uniform sampler2D uTexture; varying vec2 vTexCoord; void main() { gl_FragColor = texture2D(uTexture, vTexCoord); } ``` 上述代码中,`uTexture`表示纹理对象,`vTexCoord`表示顶点的纹理坐标。使用`texture2D()`函数对纹理进行采样,并将结果赋值给`gl_FragColor`变量,从而显示纹理贴图。 需要注意的是,手动计算纹理坐标可能会导致一些渲染效果不太自然,因此应该根据具体情况来决定是否使用手动计算纹理坐标的方式禁用透视校正。同时,使用纹理贴图时,还需要注意纹理坐标的计算方法,以保证纹理贴图的正确显示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值