glTexImage2D()
和glTexImage1D()
之间有什么区别?实际上,我无法想象一维纹理。有什么东西有一维纹理?
答案 0 :(得分:6)
纹理不是您在三角形上绘制的图片。纹理是值的查找表,着色器可以访问这些值并从中获取数据。你可以使用纹理作为“绘制到三角形上的图片”,但你不应该仅限于此。
1D纹理是仅具有一个维度的纹理:宽度。这是一条线。它是一个维度的函数:f(x)
。您提供一个纹理坐标,并获得一个值。
2D纹理是具有两个维度的纹理:宽度和高度。这是一个矩形。它是两个维度的函数:f(x, y)
。您提供两个纹理坐标,并获得一个值。
1D纹理可用于任何一维函数的离散近似。您可以预先计算一些Fresnel specular factors并访问一维纹理来获取它们,而不是在着色器中计算它们。一维纹理可以代表高斯镜面术语,就像我在the first chapter on texturing in my book中所做的那样。
1D纹理可以是任何一维函数。
答案 1 :(得分:2)
2D纹理具有高度和宽度,而1D纹理的高度仅为1像素。这基本上意味着纹理是一行像素。当我们想要将一些数值映射到颜色或将颜色映射到不同的颜色时(例如在单元格着色技术中),它们经常被使用。