Debug No3 多张纹理叠加

2022年7月17日 上午9点半

在实现了单项纹理应用后,想实践,多项纹理叠加组合。

1.bug状态:控制台有一些提示报错

分析:这一部分代码实现不完整,没有设置纹理单元以获取值。

2.bug状态:location获取不了shader程序的ID,但这两种方法理论上都没问题 (1)将获取ID的方法,封装成Shader类的成员方法  (2)通过Shader类,获得成员变量ID

分析:方法(1)局部封装思想vec4(vec3,1.0)  但是把glUniform1i错写成了glUniforml1。

           方法(2)因为将类成员设成私有,所以不可访问。

                           另外这暴露了Shader的ID信息,不是一个好方法。

解决:查dos.gl查文档,研究了下函数的参数。ID是调用该Shader程序的句柄。在理论没有问题的前提下,应围绕错误展开分析。而去博客找相关解决办法,是浪费时间的。信息不够精准。

3.bug状态:两张纹理在片段着色器和在主函数调用时,名字不统一,另外一个二元坐标和一个思四元坐标不能对应处理。

分析:片段着色器程序是实参,而主函数也是实参,应要保持参数统一。虽然导入两张纹理和一张纹理方法和步骤是类似的,但是在处理上是不同的,需要设置纹理单元,考虑叠加顺序以及纹理环绕方式等等。

4.bug状态:只显示一张纹理,非叠加效果。

分析:图片读入问题,打断点调试,读取成功,排除。于是猜测可能第一张图片是被覆盖了。尝试删掉一张图片,发现总是显示第二张,确定bug原因。

解决:两张图片不能连续读取,需要在绑定第一张后再读取第二张。原因:因为两张图片用的是一个指针,存在调用顺序问题。

总结:今天找Bug花了接近两个小时。浪费在了和OpenGL文档比对上,我应该加强代码框架的阅读能力。先自己实现,再去对照源代码的思路。

另外,也发现了解决问题时的针对性不高,如果在理论上行得通,其实找bug就更容易。一种是语法方面,一种是步骤是否完整。改错时思路不要过于发散。一条路行不通,不要反反复复无目的尝试。

学习方法:代码是第一位的。理论是辅助的。不搞文字概念,只解决实际问题。每日把对应OpenGL的练习完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘敬_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值