对于格式为GL_RGBA8且无符号字节和最小值/最小值滤波器GL_NEAREST的纹理,预计会出现块效应?

问题描述:

格式GL_RGB5_A1与unsigned_byte纹理数据(无mipmap)一起使用时,应用的纹理在最小/最大滤波器GL_NEAREST下呈块状。 当用于GL_RGBA8格式的相同代码时,应用的纹理平滑。我的假设是,对于RGBA8也使用GL_NEAREST滤镜,贴图应该是块状的。 OPGNELES 3.0支持这种格式和类型的纹理。 其使用glTexImage3D和视口应用的尺寸为256x256x256的3D纹理设置为640x480。 质地如下对于格式为GL_RGBA8且无符号字节和最小值/最小值滤波器GL_NEAREST的纹理,预计会出现块效应?

for(k = 0; k < 256; k++) for(j = 0; j < 256; j++) for(i = 0; i < 256; i++) 
{ 
    pUBPointer[0] = 255-i; 
    pUBPointer[1] = 255-j; 
    pUBPointer[2] = 255-k; 
    pUBPointer[3] = 0xFF; 

    pUBPointer += 4; 
} 

产生的,它预计?

  1. 图片为格式RGB5_A1
  2. 图片为格式RGBA8

enter image description hereenter image description here

按预期工作。 nearest仅从最近纹理元素的纹理中获取一个样本。 RGB8纹素之间的区别(在一个方向上)是1/256 - 这在视觉上几乎不会被破坏。但是,对于RGB5,每种颜色只分配5位,因此不同是1/32。

+0

是的,你的解释是有道理的。谢谢 – user1896853