OpenGL e XRender sono entrambe API di disegno che consentono l'applicazione di determinate trasformazioni geometriche mentre lo fanno.
OpenGL è mirato alle operazioni di disegno che devono essere eseguite da un'unità di elaborazione grafica (GPU) dedicata e fornisce molte funzionalità che rendono molto semplice la generazione di un'immagine dall'aspetto 3D (buffer di profondità, test di profondità, matrici di trasformazione omogenee 4×4). Ma puoi anche realizzare grafica dall'aspetto 2D con OpenGL.
XRender è un'estensione di X11, per supportare metodi di rendering (antialiasing, alpha blending) che non è possibile eseguire con le funzioni di disegno principali di X11. L'XRender-API è ottimizzata per la grafica dall'aspetto 2D, tuttavia (nessun buffer di profondità/test, matrici di trasformazione 3×3).
Si noti che XRender non è perfettamente ortogonale a OpenGL. Soprattutto se hai bisogno dell'antialiasing in OpenGL devi usare alcune funzioni di XRender per abilitarlo.
Qual è il caso d'uso di ciascuna opzione?
L'opzione di XRender è lì per supportare i sistemi per i quali non esiste un supporto OpenGL adeguato (mancanza di driver stabili), ma un supporto accettabile per le operazioni di XRender. Inoltre XRender è un po' più facile da configurare (dal punto di vista dei programmatori) rispetto a OpenGL.
In generale OpenGL è più flessibile di XRender dal punto di vista dei programmatori. Se stai chiedendo quale di ciascuno dovresti scegliere:inizia con OpenGL e se tutto funziona in modo accettabile, mantienilo. L'opzione XRender è un fallback se OpenGL non funziona correttamente (tuttavia poiché oggi nei driver XRender condivide gran parte con OpenGL, o è effettivamente implementato utilizzando OpenGL, non fa più alcuna differenza pratica).
Uso XRender perché a KWin con OpenGL piace far girare la CPU senza una buona ragione.
Ha anche alcuni strani problemi con OBS e giochi in esecuzione in wine/Proton.
Consiglio vivamente di passare a XRender sulle schede nVidia!