在Event Browser内找到你要判定的draw call
如果难以找到,使用gl(Push/Pop)DebugLabel使用
- 在Texture View中选择Ouputs中要观察的Frame,然后将Overlay模式调节到Wirframe Mesh或HighLight Drawcall观察有无明显特征,如果有则判定测试通过即可
- MeshViewer中,选择Preivew中的Vs Out,将Contraols切换为Flycam,观察线框是否处于摄像机中,观察线框模型与绘制目标模型线框是否一致,多半是PoseStack的位置错了或者调用了没有使用matrix4f的pos方法
- 观察顶点属性输入数据是否符合预期,多用于判定附加了自定义顶点属性的情况
- 在PipeLine State中选择VTX,观察Vertex Attribute Foramts情况,问题种类极多,需要逐个判定index是否和attribute layout填写一致,是否enable,format是否正常,格式R16G16指代有两个数据,每个数据是16位宽,Buffer Slot,相同则代表从同一个buff中获取数据,然后观察Buffers,Element只在使用了DrawElement此类的drawCall时出现,里面的数据是顶点索引,stride指上下两个数据间的步长,offset指从buffer的哪个位置起可以读到第一个数据,Divisor指顶点属性除数,配合drawInstance系列使用,多半是0和1
- 点击Buffer可以转到Resorce Inspector内,然后点击右上角的View Content可以查看数据,这里需手动指定解析数据格式的Format
- 如果着色器使用了sampler类型,uniform,UBO等buffer backend的数据,则在VS界面查看数据是否正确
直接使用https://github.com/baldurk/renderdoc-contrib/blob/main/baldurk/whereismydraw/README.md 支持大部分测试
- Overlay模式调节各个测试判定即可,红色部分则为测试失败
- Pipeline State中,选择FB,观察Target Blends中,输出目标的Write Mask状态
- Pipeline State中,选择FS,点击Edit,编辑着色器,去除所有discard()调用,直接定义所有输出颜色,点击apply,再次观察