0 javascript canvas colors webgl
所以我第一次学习WebGL,而且我很难理解WebGL的颜色.
我担心的是我已经看过2种用于编写RGBA颜色数据的格式或约定(如果这就是它们被称为向量的那些? - 关于着色器)
Mozilla使用0到255的颜色:
但是,我已经看到其他开发人员(像这个YouTuber)在0到1.0的范围内使用颜色的情况,
这是偏好吗?在每种情况下,您使用的约定是强制性的吗?如果是偏好而不是授权,我可以混合搭配吗?浏览器有偏好吗?
例如,在混合方面,是[1.0, 255, 1.0, 255]完全不透明的白色?
WebGL通常处理 0到1范围内的颜色.
如何存储它们取决于您和给定的情况
这在某些方面与CSS没有什么不同.CSS你可以指定这样的颜色#123456,像这样red,像这样rgb(18,52,86),像这样hsl(30,100%,50%)
通常,WebGL使用0到1的颜色.复杂的是你创建缓冲区和纹理.您决定缓冲区或纹理的二进制格式,然后您必须将数据放入该缓冲区并告诉WebGL如何将其转换回WebGL值.
因此,例如,使用纹理gl.UNSIGNED_BYTE作为存储格式是最常见的.在这种情况下,纹理中的值从0到255,当在WebGL中使用时,它们会转换回0到1.
还有其他格式gl.FLOAT,使用普通的0到1数字,但它们需要4倍的存储空间.
类似地,将顶点颜色数据存储为gl.UNSIGNED_BYTE并且告诉WebGL在读取数据时将其转换回0到1值是很常见的.
至于混合,它不是[1.0, 255, 1.0, 255]完全不透明的样品.
在WebGL中,由您来绘制每个像素,决定如何使用这些值,决定它们的混合方式.你可以制作一个纹理,每个像素有1个值(而不是4,rgba,就像画布一样).你会用那个红色值吗?绿色?蓝色?其中2个,其中3个?他们都没有?这完全取决于你.如何将颜色与画布中已有的颜色混合?这也取决于你.如果你指定[10, 20, 30, 40]这并不意味着R = 10,G = 20,B = 30,A = 40.这实际上只意味着你有4个值.传统的做法是将第一个值用作红色,但WebGL不会强制您将其用作红色.更重要的是,WebGL并不真正关心颜色.它只是一个光栅化引擎,它是一种奇特的方式,可以将值绘制到2D数组中.这些数组可用于颜色和图像,但它们也可用于计算物理或比特币.
听起来你是WebGL的新手.我可以建议一些教程