Debug No2 按流程检查错误

本文详细介绍了在使用OpenGL进行纹理渲染时遇到的三种常见问题及解决方案。从图形未显示到颜色错误,再到采样信息错误,逐一分析原因并提供修复措施。作者强调了对纹理操作流程的熟悉和细节处理的重要性,并概述了OpenGL渲染流程的三个关键阶段:数据传输、组件组装和调用组件。此外,还提出了解决bug时应关注的组件和流程。
摘要由CSDN通过智能技术生成

2022年7月15日 下午   单项应用纹理程序

1.Bug状态:只有一张深绿色背景。

分析:以PS作为类比来分析。首先,说明生成窗口没有问题。没有出现预期得图形,说明绘制轮廓出现问题。(即顶点位置装配出现问题)

解决,经检查发现EBO没有传入相关数据。

glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(indices),indices,GL_STATIC_DRAW);

2.Bug状态,显示出一个黑色矩形。

分析:显示出正确得轮廓发现,即图元装配正确,着色环节出现问题。

重点检查着色器得代码,以及纹理绑定环节(initTexture()).

解决:发现没有 声明全局纹理变量 。在rend()环节也没有 绑定纹理 绘制。

3.Bug状态,显示出一张采样信息错误的图片,没有纹理信息。

目标纹理
Bug纹理

分析:发现Bug纹理里面有红黄绿,但是却无法识别图像。明确是采样的问题。又换了其他的图测试,发现有大量留白。推测黑色部分信息缺失。

解决:发现采样格式上设定为了GL_RGB,而不是RGBA,导致没有深度信息。

glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,_pImage->getWidth(),_pImage->getHeight(),0,GL_RGBA,GL_UNSIGNED_BYTE,_pImage->getData());

总结:对于实现纹理的操作流程不熟练。要善于把握结构。

 另外要注意细节的模仿。


OpenGL流水线:

Aseet区 ---->封装生产线(组装各种组件) ---->组件装配区

(1) Asset区,主要包含全局变量的声明,shaderProgram,VAO,VBO等,以及一些外部导入的资源_texture.

(2)封装生产线(组装各种组件)主要包含initModel , initTexture,initShader方法,shader源代码等等。这些方法封装了各个渲染需要的组件的的调用,而具体方法的复杂实现在其对应的类中(如shader类中的编译shader方法,ffImage类中的读取纹理图片等等)。

 (3)组件装配区 主要指rend功能。这个过程可以假想成PS内的绘图功能,选定图层,选择画笔样式,设置绘制轮廓(指定数据),设置绘制方式。

 

除这三大部分以外,其余的代码就组成状态机的初始结构,基本不会出BUG。所以在Debug时可以从这三个角度入手。

对一个组件来说,主要要处理 数据传输问题(包括C++传入shader及shader之间的数据传输)。组件生产线问题(一般需要对应相应的类,易于管理和信息封装)。调用组件(需要设置调用顺序,绘制流程)这一块我不熟练,以后要多总结规律。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘敬_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值