opis fukcji glBlendFunc

opis fukcji glBlendFunc
wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:około 21 godzin
  • Postów:426
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

edytowany 1x, ostatnio: wilkwielki
overcq
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 7 godzin
  • Postów:386
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.


Nie znam się, ale się wypowiem.
Wizytówka
joh­nny_Be_go­od jest mistrzem ‘eskejpowania’ i osadzania.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:2 minuty
  • Postów:8423
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


edytowany 1x, ostatnio: LukeJL
cyaneko
  • Rejestracja:ponad rok
  • Ostatnio:3 miesiące
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ć.

wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:około 21 godzin
  • Postów:426
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 :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.