opis fukcji glBlendFunc

0

proszę o spis argumentów funkcji glBlendFunc z opisem co z czym jaki daje efekt np glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

sfactor

Specifies how the red, green, blue, and alpha source-blending factors are computed. Nine symbolic constants are accepted: GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, and GL_SRC_ALPHA_SATURATE.

dfactor

Specifies how the red, green, blue, and alpha destination-blending factors are computed. Eight symbolic constants are accepted: GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, and GL_ONE_MINUS_DST_ALPHA.

proszę o pomoc z opisem

2

Tutaj jest wizualizacja ‘on-line’ i można sobie zobaczyć, jak to jest obliczane, a stąd niedaleko do opisu. Jest więcej opcji niż podajesz, łącznie z rodzajem równania.

1

Ogólnie to chodzi o to, że jak masz dwie rzeczy renderowane w tym samym miejscu na ekranie, to jak na siebie się nakładają (np. półprzezroczystość). Ale konkretne argumenty i co który parametr znaczy, to jest faktycznie dość zamotane (jaki konkretny efekt chcesz osiągnąć?)

Tutaj masz to mocniej opisane:
https://learnopengl.com/Advanced-OpenGL/Blending
https://registry.khronos.org/OpenGL-Refpages/es3.1/html/glBlendFunc.xhtml

1

Polecam odwołać się do https://learnopengl.com/Advanced-OpenGL/Blending akapit Blending.

Ale tak w skrócie i możliwie prostym językiem mówiąc: wywołanie glBlendFunc daje informację OpenGLowi w jaki sposób od tego momentu mieszać kolory pikseli które mają zaraz trafić na ekran (source pixel) z pikselami które są już na ekranie (destination pixel).
Nowy kolor jest wyznaczany wzorem na wektorach 4-składowych (RGBA) C_result = C_src * sfactor + C_dst * dfactor, gdzie C_src to właśnie kolor który zaraz ma trafić na ekran, C_dst to kolor który już jest na ekranie, a te stałe/argumenty funkcji glBlendFunc wyznaczają sfactor i dfactor, tak jak w tabelkach w dokumentacji oraz pod tym linkiem do tutoriala OpenGL.

Kolega @overcq widzę już zapostował nawet fajną wizualizację jak to działa w zależności od tego co się ustawi i jaki kolor się da na wejściu, polecam się tym pobawić aby głębiej to zrozumieć.

0
cyaneko napisał(a):

Polecam odwołać się do https://learnopengl.com/Advanced-OpenGL/Blending akapit Blending.

Ale tak w skrócie i możliwie prostym językiem mówiąc: wywołanie glBlendFunc daje informację OpenGLowi w jaki sposób od tego momentu mieszać kolory pikseli które mają zaraz trafić na ekran (source pixel) z pikselami które są już na ekranie (destination pixel).
Nowy kolor jest wyznaczany wzorem na wektorach 4-składowych (RGBA) C_result = C_src * sfactor + C_dst * dfactor, gdzie C_src to właśnie kolor który zaraz ma trafić na ekran, C_dst to kolor który już jest na ekranie, a te stałe/argumenty funkcji glBlendFunc wyznaczają sfactor i dfactor, tak jak w tabelkach w dokumentacji oraz pod tym linkiem do tutoriala OpenGL.

Kolega @overcq widzę już zapostował nawet fajną wizualizację jak to działa w zależności od tego co się ustawi i jaki kolor się da na wejściu, polecam się tym pobawić aby głębiej to zrozumieć.

Wielkie dzieki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1