Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema grafica con xlib
Forum - C/C++ - Problema grafica con xlib

Avatar
popp109 (Normal User)
Rookie


Messaggi: 27
Iscritto: 27/11/2010

Segnala al moderatore
Postato alle 19:13
Mercoledì, 10/08/2011
Salve sto realizzando un toolkit grafico multipiattaforma.
Con le api di window fila tutto liscio ma con le xlib riscontro delle anomalie sulla grafica, esattamente un rallentamento nel disegnare i vari oggetti.Se passo una finestra sopra la mia applicazione, risulta ancora più evidente.(I vari oggetti diventano prima neri e poi man mano vengono disegnati.Tranne per lo sfondo standard di ogni window che non ha questo problema).
Nel ciclo degli eventi non faccio altro che cercare il mio controllo e  lanciare il metodo disegna che per esempio dovrebbe creare un rettangolo.

Siccome questa è la sintassi utilizzata da quasi tutti i toolkit grafici non riesco a capire dove si trova il mio problema.

Codice sorgente - presumibilmente C/C++

  1. XEvent xevent;
  2.  
  3.     while(1)
  4.     {
  5.           XNextEvent( display, &xevent );
  6.           Oggetto* fn = (Oggetto*)cercaOggetto(xevent.xany.window);
  7.           switch(xevent.type)
  8.           {
  9.               case Expose:
  10.                  if(xevent.xexpose.count > 0)
  11.                  {
  12.                      break;
  13.                  }
  14.                  fn->Disegna();
  15.               break;
  16.               ...
  17.               ...
  18.           }
  19.     }



Quando viene aggiunto un oggetto in una finestra, non faccio altro che aggiungere l'oggetto in un vector  e in un altro vector il window di riferimento.

Nella funzione 'cercaOggetto' cerca la posizione di window nel primo vector  e quindi restituisce l'oggetto di riferimento dal secondo vector nella posizione del primo vector.

la funzione' Disegna', non fa altro che richiamare:

Codice sorgente - presumibilmente Plain Text

  1. XSetForeground(display, gc, ROSSO);
  2. XFillRectangle(display, window, gc, x, y, larghezza, altezza);



Qualcuno di voi ha riscontrato questo tipo di problema o ha provato a realizzare un toolkit grafico utilizzando xlib?

Ultima modifica effettuata da popp109 il 10/08/2011 alle 19:16


L'anno 1968 e' bastata la potenza di due Commodore-64 per lanciare con successo una nave spaziale sulla Luna.Il miglior processore di oggi serve a far girare  windows
PM Quote