我知道使用非常简单的顶点着色器,如
attribute vec3 aVertexPosition;
attribute vec4 aVertexColor;
uniform mat4 uMVMatrix;
uniform mat4 uPMatrix;
varying vec4 vColor;
void main(void) {
gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
vColor = aVertexColor;
}
和一个非常简单的片段着色器,如
precision mediump float;
varying vec4 vColor;
void main(void) {
gl_FragColor = vColor;
}
用红色,蓝色和绿色顶点绘制一个三角形,最终会得到一个像这样的三角形
我的问题是:
答案 0 :(得分:4)
插值是步骤片段处理器
算法非常简单,只是根据UV
插入颜色
答案 1 :(得分:1)
14.6.1
部分(第405-406页)。该算法为三角形定义barycentric coordinates,并使用它们在顶点之间进行插值。答案 2 :(得分:1)
除了这里给出的答案之外,我还想补充一点,就是不必为插值提供专用的固定功能硬件。现代GPU倾向于使用“拉模型插值”,其中插值实际上是通过着色器单元完成的。
我建议阅读有关该主题的Fabian Giesen's blog article(以及关于genreal中图形管道的全系列文章)。
答案 3 :(得分:0)
关于第一个问题 - 尽管GPU上有并行单元,但它取决于所考虑的三角形的大小。对于大多数GPU来说,绘图是在逐个图块的基础上进行的,并且根据三角形的“屏幕”大小,如果它完全落在一个图块内,它将仅在一个图块处理器中完全处理。如果它被拆分,它可以由不同的单元并行完成。
第二个问题由我之前的其他海报回答。