7

I am reading about Texture Views in the new Red Book. On the page 322 is said:

OpenGL allows you to share a single data store between multiple textures,each with its own format and dimensions.

(via Texture Views)

Now,my questions are:

Does it mean a single texture source is being referenced by multiple instances (in this case texture views) ?

How is it different from using the same texture object,for example but with different samplers?

Also, does it mean that changing the texture pixels via texture view will change the pixels in the original texture object?(I suppose the answer is positive as the doc says it is alias to the texture store)

4

1 回答 1

7

是的,共享数据存储意味着从不同的对象访问相同的存储。就像共享指针意味着能够从两个不同的位置访问相同的内存一样。

它与使用采样器对象的不同之处在于它们之间没有相似之处。采样器对象存储采样参数。纹理对象具有用于采样的参数,例如mipmap rangeswizzle mask等。这些不是采样器状态;它们是纹理状态。

纹理对象也有特定的纹理类型。同一存储的不同视图可以具有不同的纹理类型(在限制范围内)。您可以拥有一个GL_TEXTURE_2D单层GL_TEXTURE_2D_ARRAY纹理的视图。您可以采用6 层或更多层并从中GL_TEXTURE_2D_ARRAY创建一个。GL_TEXTURE_CUBE_MAP

采样器对象无法做到这一点。

纹理对象具有定义如何解释存储的内部格式。同一存储的不同视图可以具有不同的格式(在限制范围内)采样器不会影响格式。

采样器对象也不能这样做。

您可以使用纹理视图来实现与采样器对象相同的效果吗?不会。使用采样器,您可以将采样参数与纹理对象分离。这允许您对多个不同的对象使用相同的参数集。因此,您可以更改一个采样器对象并将其与多个纹理一起使用,而无需转到每个纹理并对其进行修改。

它们是两个不同的功能,用于两个不同的目的。

于 2013-06-17T16:57:07.927 回答