Caesar Posted December 3, 2008 Report Share Posted December 3, 2008 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ć... 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.