十四、附录 C:WebGL 规格和零碎事项

本附录包含我们提到过但未完全涵盖的规范的某些部分,在此列出以供参考。

webcl 上下文属性

当我们获得我们的 WebGL 上下文时,我们可以有选择地向它传递一个包含以下部分或全部属性的对象:

字典 WebGLContextAttributes {

布尔 alpha =真;

布尔深度= true

布尔模具=假;

boolean 抗锯齿= true

boolean premultiplied alpha = true;

boolean preserveDrawingBuffer = false;

};

我们展示了如何在一个第 5 章的投射实例中保存绘图缓冲区:

GL = canvas . get context(" webgl " { preserve drawing buffer:true })| |)

canvas . get context(" experimental-web GL ",{ preserveDrawingBuffer:true });

通过保留缓冲区内容而不是自动交换缓冲区,我们可以看到物体运动的轨迹,还可以产生运动模糊等效果。如果性能是关键,并且我们不需要 alpha 或深度测试,我们可以禁用这些属性。如果我们需要模板缓冲区,我们可以启用它。我们在第 10 章中展示了如何禁用抗锯齿。premultipliedAlpha 值影响画布的 Alpha 组件如何影响图像的整体颜色。将该值设置为 false 会使画布元素的 WebGL 颜色计算与 2D 上下文相同。

纹理属性

在第三章中,我们忽略了一些纹理选项。

立方体贴图目标

对于立方体贴图纹理,目标属性可以是以下之一:

纹理立方体贴图,纹理绑定立方体贴图,

纹理 _ 立方体 _ 贴图 _ 正 X,纹理 _ 立方体 _ 贴图 _ 负 X,

纹理 _ 立方体 _ 贴图 _ 正 _Y,纹理 _ 立方体 _ 贴图 _ 负 _Y,

纹理 _ 立方体 _ 贴图 _ 正 Z,纹理 _ 立方体 _ 贴图 _ 负 Z,

最大立方体贴图纹理大小

泰晤士河 2D

纹理的格式如下:

阿尔法:阿尔法

RGB: R、g、b 颜色

RGBA:红、绿、蓝颜色和阿尔法

亮度:亮度

亮度 _ALPHA:亮度,ALPHA

这些类型可以是:

无符号字节

无符号 _ 短整型 _4_4_4_4

UNSIGNED _ SHORT _ 5 _ 5 _ 5

无符号 _SHORT_5_6_5

以下组合是合法的:

无符号字节/ RGBA,RGB,亮度,亮度阿尔法

UNSIGNED_SHORT_4_4_4_4 / RGBA

UNSIGNED_SHORT_5_5_5_1 / RGBA

UNSIGNED_SHORT_5_6_5 / RGB

帧缓冲区和渲染缓冲区目标和附件

在第十章中,我们介绍了帧缓冲区和渲染缓冲区 。其他合法附件/格式组合如下:

深度 _ 附件/深度 _ 组件 _16

模板 _ 附件/模板 _ 索引 8

深度 _ 模板 _ 附件/深度 _ 模板

颜色附件:COLOR_ATTACHMENT0

附加格式:RGBA、RGBA4、RGB5_A1、RGB565、STENCIL_INDEX

以下并发附件组合是非法的:

深度 _ 附件/深度 _ 模板 _ 附件

模板 _ 附件/深度 _ 模板 _ 附件

深度 _ 附件/模板 _ 附件