Оскільки немає прийнятої відповіді, я додаю трохи інформації, я хотів лише додати речі, про які Шон уже не сказав у своїй відповіді.
TexelFetch трактує текстуру як зображення, тому ви можете отримати доступ до вмісту пікселів. Як правило, ви робите це, коли вам потрібен саме той вміст, який є мало, але корисним:
- Деякі фільтри після обробки (розмиття Гаассіана використовує інтерполяцію зразка текстури, тому вона не може використовувати TexelFetch)
- Коли вершини повинні зчитувати дані з текстур, це операція, залежна від 2 координат
Tex2D трактує текстуру як текстуру. Ви не хочете точного вмісту пікселя, але хочете максимально реалістичний результат. Зчитування стандартної текстури - це дуже складна операція, яка включає читання інтерпольованих даних з одного або декількох рівнів mipmap, а потім знову інтерполюється. Усі ці дорогі операції - уникати візуальних артефактів.
GL_NEAREST не працюватиме так само, оскільки на полігонах найвищого рівня ви читаєте дані меншим рівнем mipmap, які не є тими самими точними даними, які ви читали б із тексту текселя.
Є один випадок, коли Tex2D (майже) працює однаково з TexelFetch:
- фільтр - GL_NEAREST
- ви використовуєте неповну піраміду mipmap з 1 рівнем
- ваші УФ-речовини не є нормалізованими компонентами вершин (але вам доведеться нормалізувати їх у шейдері)