Wie lässt Du Dir die Mipmaps denn anzeigen? Du setzt in deinem Beispiel den MIN_FILTER erst auf linear_mipmap_linear, dann auf NEAREST. Somit deaktivierst Du das mipmapping. Du kannst die Mipmaps trotzdem explizit binden und auch via textureLod im shader abrufen. Falls das nicht klar war: Die mipmaps sind nicht Teil des 0ten Levels, also der Ur-Textur sondern separate kleinere Versionen der Textur.
_________________ "Pixel, ich bin dein Vater." -Darf Shader
ein, dann bekomme ich wenigstens die erste Textur.
Zitat:
Du kannst die Mipmaps trotzdem explizit binden und auch via textureLod im shader abrufen.
Ich habe noch folgendes probiert, aber dies verändert nichts an der Ausgabe, auch wen ich einen anderen Wert als "2" in die letzte Zeile schreibe.
Code:
#version 330
invec2 UV0;
uniformsampler2D Sampler;
outvec4 FragColor;
void main()
{
// FragColor = texture( Sampler, UV0 );
FragColor =texture2DLod(Sampler, UV0,2);
}
Zitat:
Falls das nicht klar war: Die mipmaps sind nicht Teil des 0ten Levels, also der Ur-Textur sondern separate kleinere Versionen der Textur.
Aus diesem Grund schreibe ich verschieden grosse Texturen mit der For-Schleife ins VRAM.
Ich kann googlen so viel ich will, aber es kommt einfach nichts gescheites. Als Suchbegriff habe ich folgende verwendet: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL,
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Nun, deine Textur kann auch niemals komplett werden da du die Regeln fürs Mipmapping verletzt. Denn mit Ausnahme von Arrays müssen alle Texturen eine konsistente Größe haben. Das bedeutet:
Code:
round_down(base_size / (2 ^ mipmap-level))
Bei Arrays ist es im Prinzip gleich. Nur das du halt die Layers gleich bleiben müssen.
glTexImage2D(GL_TEXTURE_2D, i -1, GL_RGBA, w, w,0, GL_RGBA, GL_UNSIGNED_BYTE,Pointer(tex));
end;
Im Fragment-Shader, ist die "-4" bei Texture noch wichtig, wen man diese weglässt, veränder sich die Textur nicht. Dies hatte ich zufällig gefunden, meistens hat texture nur 2 Parameter,
Code:
#version 330
invec2 UV0;
uniformsampler2D Sampler;
outvec4 FragColor;
void main()
{
FragColor = texture( Sampler, UV0,-4);
}
So wie es aussieht, müssen da recht viele Sachen zusammenspielen, das dies überhaupt funktioniert.
Aber es macht trotzdem Spass immer wieder was neues zu probieren.
Irgend etwas stimmt noch nicht, es wird nur ein Quadrat gezeichnet. Entferne ich aber den Kommentar bei FragColor, dann werden wie erwartet 2 weise Quadrate gezeichnet.
Was mache ich falsch, das mit Textur nur ein Quadrat gezeichnet wird ?
Code:
#version 330
invec2 UV0;
uniformsampler2D Sampler;
outvec4 FragColor;
void main(){
FragColor = texture( Sampler, UV0,-5);
// FragColor = vec4(1.0);
}
PS: Wen ich das Render-Fenster stark verkleinere und eine optimale Proportion hat, dann erscheint auf einmal das 3. Quadrat.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.