DirectX - Sprawdzanie czy element jest wyświetlany

DirectX - Sprawdzanie czy element jest wyświetlany
Kamil9132
  • Rejestracja:około 14 lat
  • Ostatnio:prawie 4 lata
  • Postów:173
0

Witam
Obecnie tworzę grę składającą się z voxeli, obecnie w wersji release programu przy widoczności 150 bloków na 150 bloków na 150 bloków jest 10 - 30 fps, przy zmniejszeniu widoczności o połowę fps rosną do 50.
Jest to spowodowane tym że główna pętla wyświetlająca obiekty wykonuje dla elementów które nie są widoczne, np. kamera jest umieszczona w pokoju o wymiarach 10 bloków na 10 bloków na 10, jednak funkcja rysuje też obiekty, które znajdują się za pokojem i nie są w żaden sposób widoczne. Nie jest to wielki problem, jednak gdyby funkcja rysowała tylko te elementy które są widoczne to ilość fps byłaby dwa razy większa.

Czy jest możliwe sprawdzenie, które bloki są wyświetlane i tylko dla nich wykonać tą pętle?
Jeżeli da się to sprawdzić np. jakąś funkcją z biblioteki DirectX lub w jakiś inny w miarę prosty sposób to bardzo się ucieszę, jeśli nie to trudno.

PS: Czy da się przyśpieszyć Release w Visual Studio 2012? Obecnie trwa on od 30 do 45 minut.

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
0

Czy jest możliwe sprawdzenie, które bloki są wyświetlane i tylko dla nich wykonać tą pętle?
Oczywiście że jest, ale tu już w algorytmie ci nie pomogę. Myśl, myśl, myśl, kombinuj... ;-)

PS: Czy da się przyśpieszyć Release w Visual Studio 2012? Obecnie trwa on od 30 do 45 minut.
Trudno cokolwiek podpowiedzieć gdy nie wiadomo jak wygląda projekt.
Używaj precompiled headers.
Wywal zbędne #include'y.
Podziel projekt na libki albo DLL-ki żebyś nie musiał całości rekompilować.

edytowany 1x, ostatnio: Azarien
ML
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 dni
  • Postów:858
0

A czym są te voxele?

Kamil9132
  • Rejestracja:około 14 lat
  • Ostatnio:prawie 4 lata
  • Postów:173
0

@Azarien
Dzięki za odpowiedź, co do tego że jest to możliwe to miałem pewność, jednak póki co dam sobie z tym spokój, gdyby jednak fps jeszcze bardziej spadły to wrócę do tego tematu, chciałem się tylko upewnić czy DirectX nie posiada jakiejś wbudowanej funkcji, która pozwala to sprawdzić w przyjemny sposób.

Co do długiej kompilacji to wolę zostawić to tak jak jest, problem występuje tylko w trybie realease, a w debugu trwa kilka sekund tylko.

@MiL
Pierwszy obrazek od góry po prawej stronie.
http://en.wikipedia.org/wiki/Voxel

ML
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 dni
  • Postów:858
0

Miałem na myśli czym te voxele są u ciebie bo ogólnie czym są to wiem. Jeżeli robisz to na grafice 3D to nie powinieneś mieć problemu z pominięciem rysowania zasłoniętych powierzchni bo to jest podstawowa rzecz w grafice 3D.

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.