2016-05-30 8 views
1

Ich möchte ein Alpha-fähiges Bild von einer Textur zu einer anderen übertragen. Wenn ich es ohne Vorbereitungen mache, blendet sich das Bild aus, da es Alpha zum zweimaligen Mischen verwendet. Auf der anderen Seite, wenn ich vor der Übertragung der Bilddaten glDisable(GL_BLEND) aufrufen, funktioniert alles perfekt.Ist es möglich, No-Blending-Modus wiederherzustellen, nur mit GlBlendEquation und GlBlendFunc?

Lasst uns sagen, aus irgendeinem Grund, glEnable/glDisable Paar Aufruf in meiner Rendering-Engine wird abgeraten, aber ich kann immer noch glBlendFunc oder glBlendEquation aufrufen. Wie kann ich also den gleichen Mischmodus erreichen, in dem das Zieltexel nur von seinem Quellengegenstück zugewiesen wird?

+0

Warum sollte glEnable/glDisable entmutigen? Klingt für mich wie ein Hausaufgabenproblem :) – datenwolf

Antwort

2

Sie überdenken dies wahrscheinlich. Die Vermischungsfunktion für seinen Fall ist einfach:

glBlendFunc(GL_ONE, GL_ZERO); 

Dies wird die Quelle mit 1 und das Ziel mit 0 multiplizieren, was bedeutet, dass Sie nur die Quelle verwenden.

Wenn Sie die Blendgleichung von seinem Standard geändert, man muss auch sie zurück:

glBlendEquation(GL_FUNC_ADD); 
Verwandte Themen