Ich benutze OpenGL, um einige GPGPU-Berechnungen durch die Kombination eines Vertex-Shaders und eines Fragment-Shaders durchzuführen. Ich muss Berechnungen auf einem Bild in unterschiedlichem Maßstab durchführen. Ich würde gerne Mipmaps verwenden, da ihre Generierung automatisch und hardwarebeschleunigt sein kann. Ich bekomme jedoch keinen Zugang zu den Mipmap-Texturen im Fragment-Shader.Wie kann man in einem GLSL-Fragment-Shader auf eine bestimmte Mipmap-Ebene zugreifen?
Ich aktiviert automatische Mipmap-Generierung: glTexParameteri (GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
Ich versuchte mit Textur2DLod im Shader ohne Glück, es gab einfach die normale Textur. Ich habe auch versucht, glTextureParameteri (GL_BASE_LEVEL, X) im Hauptprogramm und es hat nichts geändert.
Wie würden Sie das tun?
Ich benutze Linux. Meine Grafikkarte ist eine Nvidia Quadro ziemlich alt. Here ist meine glxinfo-Ausgabe mit allen unterstützten Erweiterungen.
I upvote Ihre Frage, weil es "nützlich und klar" ist, aber Sie scheinen alles gut zu machen. Was sagt glTextureSize (Sampler, lod)? (In Ihrem Fragment Shader) – Calvin1602
Es gibt keine solche Funktion für mich. Ich denke meine Karte ist zu alt (ich habe gerade überprüft und die Version von GLSL ist GL_ARB_shading_language_100). Das würde viel erklären, aber ich verstehe nicht, warum der Shader die * Lod-Variante akzeptiert, ohne sich zu beschweren, wenn sie nicht unterstützt wird ... – Jim
Ich verstehe auch nicht, warum glTextureParameteri (GL_BASE_LEVEL, X) und glTextureParameteri (GL_MAX_LEVEL, X) Anrufe haben auch keine Wirkung. Das ist nicht GLSL-bezogen ... Ich bin gerade ziemlich verwirrt. – Jim