Jump to content

[Delphi+OMEGA] BlendMode


Caesar

Recommended Posts

Witam!

 

Mam problem ze zrobieniem pewnego efektu w 2D - imitacji oświetlenia. Wszystko jest ładnie, światła się łączą bez zmiany natężenia, ale problem tkwi w oświetlanej scenie (szumnie powiedziane :)). Renderuję pierwsze tło w BlendMode = 5, chcąc dodać następne tło (to przesunięte) tak, żeby światło je obejmowało muszę ustawić BM również na 5. Jednakże w takim wypadku BM powoduje mieszanie wszystkiego, co było obliczone wcześniej (czyli również pierwsze tło). Chcę zrobić tak, by grafika główna (tła, obiekty i inne) były renderowane razem (bez świateł), a następnie nałożone na światła.

 

Zalecam najpierw przejrzenie źródła (jak umieścić załącznik???, bo jakoś ta opcja nie działa; mogę wysłać na maila). Jeżeli ktoś ma jakiś inny sposób na uzyskanie wspomnianego efektu, to może się nim podzielić... :P

 

EDIT:

Jedno rozwiązanie problemu. Wyświetlenie całej sceny (bez świateł), przechwycenie obrazu do pamięci, wyczyszczenie sceny, narysowanie świateł (obrazów flar z BM=0 albo BM=4) i w końcu nałożenie na światła przechwyconego uprzednio obrazu (tak jak zwykłe rysowanie z ImageList) z BlendMode=5.

Ale jak przechwycić wyświetlany obraz i wyświetlić go jeszcze raz (nałożyć jeszcze raz), nie chodzi mi o podwójne renderowanie.

 

EDIT2:

Może Ci, którzy znają się na DirectX mogą pomóc. W pliku z nagłówkami Direct3D8.pas (dołączony do Omegi) istnieje funkcja SetRenderState, która jest wykorzystywana do uzyskiwania efektów typu BlendMode. Może potrzeba użyć innej funkcji....

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...