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

    [c++ opengl e move semantic]liste di disegno

    ciao.
    Nella mia applicazione ho degli oggetti con relativa geometria(vba:vertex buffer array) e degli effetti (shader) che prendono la geometria e la rappresentano in modo grafico, il tutto in opengl.

    ora:
    io nel mio progetto ho due tipi di effetti principali selezionato wireframe e non selezionato solido.
    pero' ho tantissime entità geometriche(possono andare dai 2000 ai 30000).

    quello a cui pensavo era di creare delle liste separate ,ognuna con una sola proprietà: lo shader che rappresenta o solido o wireframe ,e rappresentare tutte le geometrie della lista con quello shader specifico.
    le liste ogni ciclo vengono rappresentate con il loro shader che renderizza tutte le geometrie agganciate.

    per cambiare rappresentazione quindi basterebbe spostare un entità geometrica(vba) da una lista ad un altra.
    Ora e questo è il problema:
    ho letto che quando si inserisce un oggetto in un container stl si scatena il costruttore di copia e se devo spostare diciamo 10000 oggetti (a seguito di una selezione box)da uno stato grafico solido a uno stato selezionato wireframe scatenerei 10000 costruttori di copia, sbaglio?

    forse qui la move semantic puo dare una mano, ma non so bene come fare a spostare un oggetto da una lista ad un altra.
    chiaramente ho scelto una lista perchè si "autodimensiona" nell' inserimento e nella cancellazione e non un vector.

    esistono degli esempi per spostare degli oggetti da una lista ad un altra con la move semantic?
    perchè per dirla tutta gli oggetti di cui si parla sono molto piccoli, non so se ne trarrei guadagno, ma vorrei provare, anche perchè le liste selezionato/non selezionato mi servono comunque per altre operazioni.


    grazie.

  2. #2
    Secondo me se nelle liste metti dei puntatori ai tuoi oggetti risolvi il problema.
    Semplicemente devi assicurarti che tutti gli oggetti siano persistenti in memoria durante tutta l'esecuzione dell'applicazione, dopodichè quando ti serve sposti solo dei puntatori (es: da una lista a un'altra)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grazie MegaAlchimista, ho capito , anche io pensavo cosi, ma quello che non capisco è perchè in tutti gli esempi che ho letto e visto in programmi opensource usano dove possono Oggetti e non puntatori.
    lo fanno per qualche ragione?
    è solo un caso?

    grazie comunque MegaAlchimista.

    ciao.

  4. #4
    gli oggetti da qualche parte devi metterli! Probabilmente negli esempi che hai visto però loro non devono spostarli da una struttura all'altra.

    Nel tuo caso io metterei tutti gli oggetti in un array quando parte l'applicazione.
    Dopodichè nelle liste che usi per i motivi di cui sopra metti dei puntatori a questi oggetti, che potranno essere spostati, eliminati, eccetera.
    Quando l'applicazione si chiude , prima elimini le liste (che contengono solo puntatori) e poi deallochi tutti gli oggetti cancellando l'array

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    mi sono scordato di ringraziarti , hai ragione sui puntatori e ho capito.
    Mi resta da vedere se è performante e questo lo posso fare solo io.
    intanto grazie .

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 © 2024 vBulletin Solutions, Inc. All rights reserved.