Sto lavorando ad una demo di gioco 2D (top-view) relativamente piccola, usando OpenGL per la mia grafica. Sta per un angolo base basato sulla furtività, e come tale con tutti i miei nemici sto disegnando un arco di mira in modo che il giocatore sappia dove sta guardando.OpenGL- Semplice metodo di ritaglio/occlusione 2D?
Uno dei miei problemi è così lontano che quando disegno questo spettacolo ad arco (come un poligono pieno) si mostra naturalmente attraverso tutte le pareti sullo schermo poiché non c'è niente di fermarla:
I' Sono curioso di sapere come potrei essere in grado di prevenire qualcosa di simile. Ho già un codice che consentirà di rilevare intersezioni di linea con muri e così via (per il rilevamento della vista del nemico), e in teoria potrei usarlo per rilevare un caso del genere e disegnare il poligono di conseguenza, ma probabilmente sarebbe abbastanza laborioso e/o inefficiente, quindi penso che se ci sono sistemi OpenGL incorporati che possono farlo per me probabilmente lo farebbero molto meglio.
Ho provato a cercare domande su argomenti come ritaglio/occlusione ma non sono nemmeno sicuro se questi sono esattamente ciò che dovrei cercare; le mie abilità OpenGL sono limitate. Sembra che qualsiasi cosa utilizzi, per esempio, glClipPlanes o glScissor non sarebbe adatta a questo a causa della grande quantità di singole pareti e così via.
Infine, questa è solo una demo che sto facendo nel mio tempo libero, quindi la grafica non è esattamente la mia preoccupazione principale. Se c'è un modo (abbastanza ragionevole) indolore per farlo, spero che qualcuno possa indicarmi la giusta direzione; se non c'è un modo semplice allora posso solo lasciare il problema per ora o trovare altri rimedi.
In realtà sto cercando qualcosa di simile, per gestire le ombre in un gioco di tessere top-down. I miei sospetti finora sono stati sulla falsariga del raycasting (lento ma perfetto) e la creazione di una maschera dagli occluder e una sorta di meccanica esquadra-mappatura delle ombre. – ssube
Hai mai pensato di utilizzare l'illuminazione OpenGL? Potrebbe significare un po 'di lavoro, ma una luce posizionata in modo appropriato potrebbe dare l'effetto desiderato. – Keith
@ Keith: Grazie, potrebbe essere una buona idea. Anche la mia esperienza con l'illuminazione è limitata, e probabilmente dovrei apportare alcune modifiche al mio codice per far funzionare tutto. Ma terrò a mente se non succede niente di meglio. – Linkage