Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]classi entità e scenegraph

    Ciao.
    Sto realizzando un applicazione in c++ con rappresentazione grafica opengl, utilizzando la libreria wild magic 4.
    La libreria utilizza uno scenegraph , un grafo di classi nodo che possono essere attaccati / rimossi dalla scena , tutto cio' che è presente nello scenegraph viene rappresentato a video(renderizzato) in quanto a queste classi nodo possono essere attaccate delle mesh(geometria) e degli effetti (shader) per renderizzare la geometria attaccata al nodo.
    Non mi dilungo sul funzionamento dello scenegraph : CULLING, FUSTOM CULLING BSP ecc.....
    fase 1)

    Il mio problema e forse errore è che sono partito dalla rappresentazione e non dalla logica.
    Adesso ho bisogno di creare delle classi entità che anno come rappresentazione grafica un puntatore , o meglio uno smart pointer che punta al nodo inserito nello scenegraph.
    In pratica succede che cambiando o invocando i membri dello smart pointer modifico la rappresentazione grafica in tempo reale.
    in quanto in un ciclo infinito l'applicazione grafica wild magic attraversa il grafo , raccoglie le informazioni sugli oggetti attaccati(ai nodi) e li renderizza secondo gli effetti che ho attaccato.

    Ad esempio vorrei creare delle macroclassi conteneti logica , rappresentazione e stato di una data entità.
    E' giusto come logica?
    consigli fase 1?

    fase 2
    vorrei utilizzare il pattern decorator per aggiungere rappresentazioni grafiche al nodo della classe entità.
    come dallibro della gang of four che mostra come decorare una pagina con un bordo e una scroll bar.
    Il problema è che il nodo non ha un metodo draw() per esempio , perchè lo scendegraph raccoglie le informazioni dal grafo e le disegna nella classe che raccoglie le informazioni è li che sta il bel metodo draw.

    per cambiare rappresentazione grafica e fare ad es vedere le entità selezionate in un altro colore o creare un contorno 3d ad una mesh o rappresentare delle quote , devo necessariamente aggiungere/rimuovere mesh al nodo o cambiare effetto a seconda dello stato, ad es stato selezionato effetto 1 mesh aggiunta contorno.
    come posso avere la funzionalità del decorator?
    posso ad es invece di fare l'override di un metodo draw fare l'override di un metodo ADD o Remove creato apposta per il nodo che aggiunge/rimuove mesh ?
    Il funzionamento sarebbe praticamente lo stesso perchè ogni mesh aggiunta /rimossa è disegnata/resa invisibile.
    consigli?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Detto in due parole vorrei sapere se è corretto ragruppare le varie funzionalità di un entità in un unica classe incapsulando le classi che realizzano tale funzionalità, o se è meglio mantenerle separate.
    Non sono un esperto di oop e chiedo come è meglio procedere nella creazione e gestione delle entità del mio progetto(anche un link o qualche linea guida) che sono i "mattoni" che compongono l'applicazione.
    grazie.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Ho trovato cosa leggere : the c++ programming language , capitolo development and design.
    spiega tutto cio' che ho chiesto e molto molto di piu.
    dopo una breve lettura mettere tutte queste classi incapsulate in un unica classe super è sbagliato , un componente è spesso formato da un insieme di classi che cooperano per un sistema , questi classi non fanno altro che ridurre la complessità del sistema e ahnno un interfaccia a cui accedere .
    QUesto è il modo di dividere e diminuire la complessita, la superclasse in se non serve a niente tranne casino e ingestibilità.
    ho capito , scusate.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.