Cześć.
Zacznę o wyjaśnienia - nie jestem zawodowym programistą ale coś tam czasem sobie programuję. Piszę aktualnie aplikację w c++ z wykorzystaniem qt, do wyświetlania grafiki używam opengl. Szczerze mówią, nie jestem znawcą opengl i w pewnym sensie skorzystałem z przykładu i przerobiłem go na swoje potrzeby. I teraz do rzeczy. Aplikacja wyświetla pewne elementy (nazwijmy to operacje), gdzie każda operacja składa się z wielu innych elementów (nazwijmy je kształtami) rysowanych jeden za drugim. Kształty w ramach jednej operacji mogą się nakładać. I teraz chciałbym, aby każda operacja wyświetlana była z uwzględnieniem przezroczystości, tak aby widać było nawet te, które się nakładają. Problem w tym, że jak uruchomię przezroczystość, to nie widzę każdej operacji jako osobny element lecz każdy kształt w operacji, bo skoro się nakładają to je widać.
Podam przykład, aby lepiej wyjaśnić o co mi chodzi:
Element czerwony (jasnoczerwony) to jest tak jakby obrys elementu czarnego. Cały obrys to jest ta wspomniana operacja, natomiast jeden obrys składa się z wielu kształtów i własnie widać je tutaj, jak nakładają sie na siebie.
A ja potrzebowałbym, aby w ramach danej operacji kolor był ten sam (czyli bez widocznej przezroczystości miedzy jednym kształtem a drugim) jednak aby operacje między sobą zachowywały przezroczystość.
Czy ktoś mógłby podpowiedzieć jak to uruchomić?
Aktualnie robię tak:
glEnable(GL_BLEND);
glDepthMask( GL_FALSE );
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
pętla z ilością operacji
{
pętla z ilością kształtów w operacji
{
Wyświetlenie kształtu.
}
}
glDepthMask( GL_TRUE );
glDisable( GL_BLEND );