Sto usando OpenGL per eseguire alcuni calcoli GPGPU tramite la combinazione di uno shader di vertici e uno shader di frammenti. Ho bisogno di fare calcoli su un'immagine su scala diversa. Mi piacerebbe usare mipmaps poiché la loro generazione può essere automatica e accelerata dall'hardware. Tuttavia non riesco a ottenere l'accesso alle trame mipmap nello shader dei frammenti.In uno shader di frammenti GLSL, come accedere a texel a un livello specifico di mipmap?
Ho abilitato la generazione automatica di mipmap: glTexParameteri (GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
Ho provato a usare texture2DLod nello shader senza fortuna, semplicemente mantenendo la texture normale. Ho anche provato a usare glTextureParameteri (GL_BASE_LEVEL, X) nel programma principale e non ha cambiato nulla.
Come lo faresti?
Sto usando Linux. La mia scheda grafica è una Nvidia Quadro piuttosto vecchia. Here è il mio output glxinfo con tutte le estensioni supportate.
Invito la tua domanda perché è "utile e chiara", ma sembra che tu faccia tutto bene. Cosa dice glTextureSize (sampler, lod)? (Nel tuo frammento di shader) – Calvin1602
Non esiste una funzione del genere a mia disposizione. Penso che la mia carta sia troppo vecchia (ho appena controllato e la versione di GLSL è GL_ARB_shading_language_100). Questo spiegherebbe molto ma non capisco perché lo shader accetti la variante * Lod senza lamentarsi se non è supportato ... – Jim
Non capisco neanche perché glTextureParameteri (GL_BASE_LEVEL, X) e glTextureParameteri (GL_MAX_LEVEL, X anche le chiamate non hanno alcun effetto. Questo non è legato al GLSL ... Sono abbastanza confuso al momento. – Jim