矩形纹理(Rectangle_Texture)里面是一个2D image,该image不包含mipmap。当对纹理进行采样的时候,需要使用texel value来访问纹理里面的点。这和普通的GL_TEXTURE_2D的不一样,普通的纹理使用的是归一化的纹理坐标(Real time rendering 149页, 将图片纹理里面的像素,叫做texel,所以texel value指的就是纹理像素的真实的值)。
SamplerType | TextureLookup | 纹理坐标 | |
---|---|---|---|
GL_TEXTURE_2D | sampler2D | texture2D | 归一化的UV坐标 |
GL_TEXTURE_RECTANGLE_ARB | sampler2DRect,sampler2DRectShadow | texture2DRect | 纹理像素值 |
GL_TEXTURE_EXTERNAL_OES | samplerExternalOES | samplerExternalOES | 归一化的UV坐标 |
使用的场景:早期的时候,纹理必须是power-of-two的。对于不是这个尺寸的纹理,rectangle texture是唯一的选择。所以这个通常被用在render target上面。因为render target通常是屏幕的尺寸大小,是不满足power-of-two的。但是现在的显卡都没有了power-of-two的限制,所以这个看起来没那么有用了。Khronos wiki里面还提到矩形纹理的一些小的用途: