首页/ 学科题库/ webgl/ 渲染管线与着色器基础专题测试
webgl 模拟试卷

渲染管线与着色器基础专题测试

20 题 40 分钟 难度:★
  • 可编程渲染管线流程: 顶点着色器、图元装配、光栅化到片元着色器的完整数据流转
  • 顶点着色器最小实现: 编写设置 gl_Position 的顶点着色器并理解裁剪坐标取值范围
  • 片元着色器与颜色输出: 编写输出 gl_FragColor 的片元着色器控制每个像素的颜色
  • 着色器编译与链接流程: 使用 createShader、shaderSource、compileShader 与 linkProgram 完成程序装配
  • 着色器错误信息读取: 通过 getShaderInfoLog 与 getProgramInfoLog 定位编译与链接错误
  • attribute 与 uniform 的区别: 区分逐顶点 attribute 与全局 uniform 变量的数据传递语义与用途

试卷习题(20 题)

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

片元着色器通过给内置变量 gl_FragColor 赋值来决定每个像素的最终颜色。

A

对

B

错

2
判断题

attribute 用于描述逐顶点数据,只能在顶点着色器中使用;uniform 用于描述整批共享数据,顶点与片元着色器都可以读取。

A

对

B

错

3
判断题

读取着色器编译日志应在编译之后立即进行,着色器对象被删除后日志也随之丢失。

A

对

B

错

4
判断题

顶点着色器必须给内置变量 gl_Position 赋值,否则该顶点的位置是未定义值。

A

对

B

错

5
判断题

WebGL 渲染管线中的图元装配与光栅化阶段由 GPU 按固定规则执行,开发者无法编程干预。

A

对

B

错

6
判断题

一个 WebGL program 只需附加顶点着色器即可完成链接,片元着色器是可选的。

A

对

B

错

单选题
7
单选题

program 链接成功后,对着色器对象最合理的处理方式是?

A

必须一直保留,直到 program 被销毁

B

立即调用 deleteShader 释放,已链接的 program 不受影响

C

必须每帧重新 attachShader

D

只能通过 deleteProgram 一并释放

8
单选题

需要定位运行期 WebGL 调用出错的位置,应使用哪个接口?

A

gl.getParameter(gl.VERSION)

B

gl.getError()

C

gl.isContextLost()

D

gl.getShaderInfoLog()

9
单选题

读取某个着色器编译失败的具体原因,应使用哪个接口?

A

gl.getShaderInfoLog

B

gl.getProgramInfoLog

C

gl.getError

D

gl.getShaderParameter

10
单选题

顶点与片元着色器都创建并配置好后,要把它们组合成一个可执行的渲染程序,应调用哪个接口?

A

gl.compileShader

B

gl.linkProgram

C

gl.attachShader

D

gl.useProgram

11
单选题

顶点着色器输出的 gl_Position 经 GPU 透视除法后,归一化设备坐标的取值范围是?

A

0 到 1

B

-1 到 1

C

-w 到 w

D

-180 到 180

12
单选题

以下哪类数据最适合通过 uniform 传入着色器?

A

每个顶点不同的位置坐标

B

每个顶点不同的颜色

C

每次绘制保持一致的 MVP 矩阵

D

每个顶点的法线向量

13
单选题

WebGL 渲染管线中,决定顶点最终位置的是哪个阶段?

A

图元装配

B

顶点着色器

C

光栅化

D

逐片元操作

14
单选题

在片元着色器中声明浮点默认精度,正确的写法是?

A

precision mediump float;

B

precision float mediump;

C

#define precision float

D

varying mediump float;

多选题
15
多选题

关于 WebGL 错误信息的读取,以下说法正确的是?

A

返回 INVALID_OPERATION 通常与状态不满足有关,例如未绑定 program 就发起绘制

B

getError 会清除当前的错误状态,因此每次调用只能捕获一次错误

C

生产环境应在渲染循环中每帧调用 getError,以便尽早发现问题

D

打印编译日志时应同时输出对应源码行,便于按行号定位

16
多选题

关于 WebGL 渲染管线,以下说法正确的是?

A

管线依次经过顶点着色器、图元装配、光栅化、片元着色器与逐片元操作

B

只有顶点着色器与片元着色器是可编程阶段

C

片元着色器按顶点顺序串行执行

D

TRIANGLES 模式下每三个顶点组成一个独立三角形

17
多选题

关于 WebGL 着色器的编译与链接流程,以下说法正确的是?

A

编译后必须用 getShaderParameter 检查 COMPILE_STATUS

B

链接前需要用 attachShader 把顶点与片元着色器附加到 program 上

C

linkProgram 之后应检查 LINK_STATUS 并读取链接日志

D

编译失败时 WebGL 会抛出 JavaScript 异常,可被 try-catch 捕获

18
多选题

关于 attribute 与 uniform,以下说法正确的是?

A

uniform 在一次绘制调用内对所有顶点与像素取相同值

B

attribute 需要绑定缓冲并用 vertexAttribPointer 描述数据布局

C

片元着色器中可以直接声明并使用 attribute 变量

D

uniform 的位置可能被编译器优化掉,取值后应判空再赋值

19
多选题

关于顶点着色器,以下说法正确的是?

A

每个顶点独立执行一次,无法访问同一图元中其他顶点的位置

B

可以直接读取相邻顶点的数据参与计算

C

必须给内置变量 gl_Position 赋值

D

可以在其中完成逐顶点的坐标变换与属性传递

20
多选题

关于片元着色器与 varying 变量,以下说法正确的是?

A

varying 由顶点着色器写入,在片元着色器中读取

B

varying 的值在光栅化阶段按重心坐标插值

C

varying 变量名在顶点与片元着色器中必须完全一致

D

片元着色器的精度限定符只影响顶点阶段的计算

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