我刚刚开始学习OpenGL ES 2.0,在这个过程中我遇到了一些对我来说没有意义的术语,即使有定义.像这样:插值
从OpenGL ES 2.0编程指南一书中,我看到了插值的这个定义:
用于从分配给图元的每个顶点的变化值为每个片段生成变化值的机制称为插值.
虽然我理解这个答案Linear Interpolation是什么,但上面的定义对我来说没有意义.
你会用另一种方式做一个例子来详细说明插值是什么吗?
Mat*_*lak 11
至于一般定义"换句话说"你可以在网上找到一些......例如我可以试着向你解释一下:
当您有大量数据试图表示无限量的数据时,您使用插值,例如,您有2个点代表一条线:
对于插值,你总是需要一个表示的提示,在线情况下你需要2个点(并且提示是"它是一条线"),让我们说它们是向量A和B.现在解决方案是T(s) = A + s*(B-A)任何实数's'到在两个方向得到无尽的线.要获得A和B之间的直线,您需要在区间[0,1]上定义's',以便T(0)=Awhile T(1)=B和线性插值.
对于更复杂的插值,您可以稍微研究一下openGL:
请注意,GL和GPU中使用的算法要比我在这里写的更复杂和优化,但通常会得到相同的结果.
在形状的情况下,您通常使用由3个向量(顶点)定义的三角形,并说它是一个三角形(您在绘制方法中说'三角形').将一些矩阵应用于这些向量后,您将在绘制缓冲区上获得它们的2d投影(可以在顶点着色器中进行).现在,您需要使用一些颜色,纹理或颜色插值填充缓冲区中的所有这些点.首先,所有这些绘制点(它们实际上在缓冲区上的位置)是线性插值机制的结果(在GL中你无法控制它).其次,填充的颜色通常是线性插值:
尝试通过设置颜色指针绘制具有不同颜色顶点的三角形.您将在整个表面上获得一个漂亮的平滑颜色幽灵,这是由于颜色的线性插值取决于位置的插值(您需要在每个需要绘制的像素的片段着色器中获得位置插值结果).您可以手动实现此颜色插值结果,如下所示:
输入:
Vector a, b, c; //original triangle positions
Vector interpolationABC; //current fragment interpolation between a, b and c
Color colorA, colorB, colorC; //colors for vectors a, b and c
Run Code Online (Sandbox Code Playgroud)
输出(此片段的颜色):
Color output = (
(a - interpolationABC).length() * colorA +
(b - interpolationABC).length() * colorB +
(c - interpolationABC).length() * colorC )
/ (
(a - interpolationABC).length() +
(b - interpolationABC).length() +
(c - interpolationABC).length() );
Run Code Online (Sandbox Code Playgroud)
这个机制再次代表一个线性插值(实际上非常慢,但它应该做的伎俩,非常可读)
至于非线性插值的例子,你需要一点想象力:让我们说我们画一个球体.为了保持简单,我们说它的中心位于(0,0,0),半径为1.球体是用N个三角形创建的,如果N不够大(大多数情况下)由于性能问题,它是一个有点"前卫",我们想稍微平滑一下.所以我们必须打开一些灯(它只是一个没有灯光的圆圈)并弄清楚如何设置法线.一方面,您可以计算由3个点定义的曲面的法线,并且每个三角形将具有唯一的法线,但是将产生"迪斯科球"效果,另一方面,您知道球的任何点'P'的法线是normalized(P-center)或者在这种情况下是点本身.所以每个顶点法线都是顶点的位置本身(所以现在每个三角形有3个不同的法线),每个片段的法线是这些法线的插值:
如果使用与颜色相同的插值机制,您将看到法线的长度不是"常数",从而导致缺陷,迫使您使用不同的机制(非线性).在这种特定情况下,您可以简单地将这些线性片段结果标准化并获得所需的结果,但在这种特定情况下,您可以从片段位置计算法线(您可以对数学上可呈现的任何形状执行此操作).但是在实践中你会发现一个奇怪的形状,它具有光滑的零件和边缘,并且可能具有不同大小的法线来表示一些非常棒的效果,这就是为什么有很好的机制可以在形状上插入不同的参数.
同样,插值机制是一种机制,通过仅知道有限数量的数据(其中一种机制称为"线性插值")可以产生无限数量的结果.或者换句话说,当您发布更具体的示例时:
用于从分配给图元的每个顶点的变化值为每个片段生成变化值的机制称为插值.
| 归档时间: |
|
| 查看次数: |
8138 次 |
| 最近记录: |