ข้อกำหนด API สามารถพบได้ในสเปคหรือส่วนขยายใด ๆ นี่คือหนึ่ง: https://www.opengl.org/registry/specs/EXT/texture_filter_anisotropic.txt
ผู้จำหน่าย GPU ทั้งหมดน่าจะเบี่ยงเบนจากข้อมูลจำเพาะเนื่องจากคุณภาพ AF เคยเป็นส่วนหนึ่งของมาตรฐาน และการใช้งานในปัจจุบันจะยังคงพัฒนาอย่างต่อเนื่องเนื่องจากภาระงานใหม่เน้นการประมาณการที่มีอยู่ คุณจะต้องเป็นส่วนหนึ่งของ บริษัท ใด บริษัท หนึ่ง แต่คุณสามารถวัดสเปกตรัมของความเป็นไปได้จากเอกสารต่อไปนี้ซึ่งระบุไว้ในการเพิ่มคุณภาพและค่าใช้จ่ายในการดำเนินการ:
การอ้างอิงจากข้อมูลจำเพาะ:
Anisotropic texture filtering substantially changes Section 3.8.5.
Previously a single scale factor P was determined based on the
pixel's projection into texture space. Now two scale factors,
Px and Py, are computed.
Px = sqrt(dudx^2 + dvdx^2)
Py = sqrt(dudy^2 + dvdy^2)
Pmax = max(Px,Py)
Pmin = min(Px,Py)
N = min(ceil(Pmax/Pmin),maxAniso)
Lamda' = log2(Pmax/N)
where maxAniso is the smaller of the texture's value of
TEXTURE_MAX_ANISOTROPY_EXT or the implementation-defined value of
MAX_TEXTURE_MAX_ANISOTROPY_EXT.
It is acceptable for implementation to round 'N' up to the nearest
supported sampling rate. For example an implementation may only
support power-of-two sampling rates.
It is also acceptable for an implementation to approximate the ideal
functions Px and Py with functions Fx and Fy subject to the following
conditions:
1. Fx is continuous and monotonically increasing in |du/dx| and |dv/dx|.
Fy is continuous and monotonically increasing in |du/dy| and |dv/dy|.
2. max(|du/dx|,|dv/dx|} <= Fx <= |du/dx| + |dv/dx|.
max(|du/dy|,|dv/dy|} <= Fy <= |du/dy| + |dv/dy|.
Instead of a single sample, Tau, at (u,v,Lamda), 'N' locations in the mipmap
at LOD Lamda, are sampled within the texture footprint of the pixel.
Instead of a single sample, Tau, at (u,v,lambda), 'N' locations in
the mipmap at LOD Lamda are sampled within the texture footprint of
the pixel. This sum TauAniso is defined using the single sample Tau.
When the texture's value of TEXTURE_MAX_ANISOTROPHY_EXT is greater
than 1.0, use TauAniso instead of Tau to determine the fragment's
texture value.
i=N
---
TauAniso = 1/N \ Tau(u(x - 1/2 + i/(N+1), y), v(x - 1/2 + i/(N+1), y)), Px > Py
/
---
i=1
i=N
---
TauAniso = 1/N \ Tau(u(x, y - 1/2 + i/(N+1)), v(x, y - 1/2 + i/(N+1))), Py >= Px
/
---
i=1
It is acceptable to approximate the u and v functions with equally spaced
samples in texture space at LOD Lamda:
i=N
---
TauAniso = 1/N \ Tau(u(x,y)+dudx(i/(N+1)-1/2), v(x,y)+dvdx(i/(N+1)-1/2)), Px > Py
/
---
i=1
i=N
---
TauAniso = 1/N \ Tau(u(x,y)+dudy(i/(N+1)-1/2), v(x,y)+dvdy(i/(N+1)-1/2)), Py >= Px
/
---
i=1
GL_EXT_texture_filter_anisotropic
มีรายละเอียดมาก อาจช่วยให้คุณเข้าใจกระบวนการได้ดีขึ้น