webgl 模拟试卷
常见错误与调试入门专题测试
- 上下文丢失与恢复: 监听 webglcontextlost 与 webglcontextrestored 事件重建渲染资源
- 错误码检查与定位: 使用 getError 逐步定位 INVALID_OPERATION、INVALID_VALUE 等错误
- 黑屏问题排查思路: 按着色器、顶点数据、矩阵变换、视口设置的顺序排查无输出问题
- 渲染结果不一致排查: 对比状态机残留与深度测试配置定位图像差异原因
- 坐标系与视口调试: 使用 gl.viewport 与辅助线验证坐标映射与显示区域是否正确
试卷习题(20 题)
参考答案在文末判断题
1
判断题
排查黑屏时,先用固定输出的片元着色器与覆盖全屏的固定顶点验证管线是否通畅,可以快速缩小问题范围。
2
判断题
在 webglcontextlost 事件中必须调用 preventDefault,浏览器才会尝试恢复上下文并派发 webglcontextrestored 事件。
3
判断题
gl.viewport 的参数单位是渲染缓冲像素,通常应设置为 canvas.width 与 canvas.height。
4
判断题
gl.getError() 返回 NO_ERROR 说明当前没有产生接口级错误,但并不代表渲染结果符合预期。
5
判断题
同一份 WebGL 代码在不同手机上呈现不同结果,可能与浮点精度限定符的实现差异有关。
单选题
6
单选题
WebGL 上下文丢失时会触发哪个事件?
7
单选题
上下文丢失之后,之前创建的缓冲、纹理与 program 还能继续使用吗?
8
单选题
WebGL 黑屏问题的推荐排查顺序是什么?
9
单选题
设置渲染输出区域的大小与位置,应调用哪个接口?
10
单选题
绘制时未绑定任何 program,gl.getError() 通常返回哪个错误码?
11
单选题
部分设备不支持片元着色器中的 highp 精度时,应如何处理精度声明?
12
单选题
同一份 WebGL 代码在不同设备上渲染结果不一致,应优先怀疑哪类原因?
13
单选题
排查 WebGL 黑屏时,建议最先确认的内容是什么?
14
单选题
要验证坐标映射是否正确,比较直接的做法是什么?
15
单选题
读取并清空当前 WebGL 错误状态的接口是哪个?
多选题
16
多选题
关于 WebGL 错误码,以下说法正确的是?
17
多选题
关于坐标系与视口调试,以下说法正确的是?
18
多选题
关于上下文丢失与恢复,以下说法正确的是?
19
多选题
以下哪些属于不同设备渲染结果不一致的常见原因?
20
多选题
排查黑屏问题时,以下做法有效的是?
参考答案
1.正确
2.正确
3.正确
4.正确
5.正确
6.A
7.B
8.B
9.A
10.C
11.B
12.B
13.B
14.A
15.A
16.A;B;C
17.A;B;C
18.A;B;C
19.A;B;C
20.A;B;C
