首页/ 学科题库/ webgl/ 基础图元绘制与交互专题测试
webgl 模拟试卷

基础图元绘制与交互专题测试

19 题 40 分钟 难度:★
  • 绘制类型与 drawArrays: 使用 TRIANGLES、TRIANGLE_STRIP、LINES、POINTS 绘制基础图元
  • 索引组网与顶点缠绕顺序: 使用索引组织复杂网格并理解顶点缠绕顺序对朝向的影响
  • 面剔除与可见性控制: 配置 CULL_FACE 与 frontFace 剔除背面三角形提升绘制效率
  • 参数化图形顶点生成: 通过循环生成矩形、圆环、网格等参数化图形顶点数据
  • 鼠标与触摸交互映射: 把鼠标与触摸事件坐标转换为 WebGL 坐标实现基础交互

试卷习题(19 题)

参考答案在文末
判断题
1
判断题

面剔除发生在图元装配之后、光栅化之前,可以省掉封闭网格约一半三角形的后续计算。

A

对

B

错

2
判断题

WebGL 裁剪坐标的 Y 轴向上,而浏览器鼠标事件的 Y 轴向下,因此映射时需要翻转 Y。

A

对

B

错

3
判断题

用参数化方式生成的规则几何,在形状不变时只需生成并上传一次缓冲,不需要每帧重建。

A

对

B

错

4
判断题

WebGL 默认把屏幕空间下按逆时针方向排列的三角形判定为正面。

A

对

B

错

5
判断题

使用 POINTS 模式绘制时,每个顶点会被绘制成一个点,点的大小由顶点着色器中的 gl_PointSize 决定。

A

对

B

错

单选题
6
单选题

开启面剔除后模型整体消失,最可能的原因是什么?

A

着色器编译失败

B

顶点缠绕顺序与默认的正面判定相反

C

纹理未绑定

D

深度测试未开启

7
单选题

索引缓冲中存放的数据表示什么?

A

顶点的字节偏移

B

顶点在顶点缓冲中的序号

C

纹理坐标

D

三角形的数量

8
单选题

需要看到物体内壁(背面)时,应如何设置面剔除?

A

使用 gl.cullFace(gl.FRONT),或直接关闭面剔除

B

保持 gl.enable(gl.CULL_FACE) 且 cullFace(gl.BACK)

C

设置 gl.frontFace(gl.CW) 并保留 cullFace(gl.BACK)

D

WebGL 无法绘制内壁

9
单选题

把画布内的像素坐标 x 映射为 WebGL 裁剪坐标,正确的计算方式是?

A

x / 画布宽度

B

(x / 画布宽度) * 2 - 1

C

1 - (x / 画布宽度) * 2

D

画布宽度 / x

10
单选题

参数化生成圆、网格等规则几何,主要依靠什么方式得到顶点?

A

手工逐个列出每个顶点

B

用数学公式与循环按参数计算顶点

C

由 GPU 在渲染时自动生成

D

从服务端接口下载顶点数据

11
单选题

用循环生成圆形顶点时,决定边缘平滑程度的关键参数是什么?

A

顶点颜色

B

分段数

C

纹理过滤方式

D

深度测试函数

12
单选题

开启面剔除需要调用哪个接口?

A

gl.enable(gl.CULL_FACE)

B

gl.enable(gl.DEPTH_TEST)

C

gl.disable(gl.BLEND)

D

gl.depthFunc(gl.LEQUAL)

13
单选题

要用 n 个顶点绘制连续的三角形条带,应选择哪种绘制类型?

A

TRIANGLES

B

TRIANGLE_STRIP

C

LINES

D

POINTS

14
单选题

把鼠标事件坐标换算成画布内的像素坐标时,应使用哪个方式获取画布位置与尺寸?

A

canvas.getBoundingClientRect()

B

window.devicePixelRatio

C

canvas.width 与 canvas.height

D

window.innerWidth 与 window.innerHeight

多选题
15
多选题

关于鼠标与触摸交互的实现,以下说法正确的是?

A

归一化时应使用 CSS 尺寸(rect.width/height),而不是渲染缓冲尺寸

B

轨道相机的俯仰角应限制在正负 90 度以内,避免画面翻转

C

移动端监听 touch 与 wheel 事件时需使用 passive 为 false 才能调用 preventDefault

D

pointer 事件无法统一鼠标与触摸,必须分别实现两套逻辑

16
多选题

关于索引组网与顶点缠绕顺序,以下说法正确的是?

A

索引描述三角形由哪些顶点组成,可以让顶点被多个三角形共享

B

缠绕顺序决定面的朝向,是面剔除的判断依据

C

需要硬边效果时应拆分顶点,否则顶点法线会被平均导致边缘变圆滑

D

缠绕顺序只影响颜色,不会影响面是否被剔除

17
多选题

关于参数化图形顶点生成,以下说法正确的是?

A

生成位置的同时应产出法线与 UV,便于后续光照计算与贴图

B

生成的三角形应统一缠绕方向,避免面剔除异常

C

分段数可按距离动态调整以兼顾性能与画质

D

参数化生成的顶点必须每帧重新上传缓冲

18
多选题

关于 drawArrays 的绘制类型,以下说法正确的是?

A

TRIANGLES 每三个顶点组成一个独立三角形,顶点不共享

B

LINE_LOOP 会把首尾顶点相连形成闭合线框

C

TRIANGLE_FAN 常用于绘制圆形与扇形

D

LINES 模式下每两个顶点绘制一个三角形

19
多选题

关于面剔除的配置与使用场景,以下说法正确的是?

A

cullFace(gl.BACK) 是最常用的设置,适合封闭网格

B

平面类物体没有厚度,容易被剔除,通常需要关闭剔除或使用双面渲染

C

使用负缩放镜像模型会翻转缠绕方向,可能导致正反面颠倒

D

半透明物体应始终开启背面剔除以获得最佳性能

参考答案
1.正确 2.正确 3.正确 4.正确 5.正确 6.B 7.B 8.A 9.B 10.B 11.B 12.A 13.B 14.A 15.A;B;C 16.A;B;C 17.A;B;C 18.A;B;C 19.A;B;C
想在手机上在线作答这套卷子?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别二维码,即可限时作答并自动判分。
了解产品 App
← 上一套 坐标变换与矩阵基础专题测试 下一套 → 常见错误与调试入门专题测试