3

glTexImage2D()和 和有什么不一样glTexImage1D()?实际上,我无法想象一维纹理。东西怎么会有一维纹理?

4

2 回答 2

8

纹理不是您在三角形上绘制的图片。纹理是值的查找表,着色器可以访问并从中获取数据。您可以将纹理用作“在三角形上绘制的图片”,但不应仅限于此。

一维纹理是只有一个维度的纹理:宽度。这是一条线。它是一维的函数:f(x)。您提供一个纹理坐标,并获得一个值。

2D 纹理是具有两个维度的纹理:宽度和高度。它是一个矩形。它是两个维度的函数:f(x, y). 您提供两个纹理坐标,并获得一个值。

一维纹理可用于任何一维函数的离散逼近。您可以预先计算一些菲涅耳镜面反射因子并访问一维纹理来获取它们,而不是在着色器中计算它们。一维纹理可以代表高斯镜面反射项,就像我在书中关于纹理的第一章中所做的那样。

一维纹理可以是任何一维函数。

于 2013-03-28T23:20:30.650 回答
2

2D 纹理同时具有高度和宽度,而 1D 纹理只有 1 个像素的高度。这基本上意味着纹理是一行像素。当我们想要将一些数值映射到颜色或将颜色映射到不同的颜色时(如在单元格着色技术中),它们经常使用。

于 2013-03-28T12:52:15.440 回答