Sto scrivendo un programma OpenGL che disegna in un buffer ausiliario, allora il contenuto del buffer ausiliario viene accumulata l'accumulo tampone prima di essere GL_RETURN-ed al buffer Back (essenzialmente per essere mescolati allo schermo). In breve, sto facendo una specie di motion blur. Comunque la cosa strana è che, quando ricompilando e rieseguo il mio programma, vedevo il contenuto del buffer ausiliario/accumulo dal programma precedente. Ciò non ha senso. Sto fraintendendo qualcosa, lo stato di OpenGL non dovrebbe essere completamente resettato al riavvio del programma?In che modo lo stato dei buffer OpenGL può persistere tra le esecuzioni del programma?
Sto scrivendo un programma SDL/OpenGL in Gentoo Linux Driver nVidia 195.36.31 su GeForce Go 6150.
Grazie, almeno ora so che non è un comportamento imprevisto, anche se è solo raccapricciante ... –
Sono d'accordo. Vuoi aggiungere: in alcune condizioni i driver video sono invitati a azzerare la memoria allocata, a causa di considerazioni di "sicurezza" (il programma malvagio potrebbe voler sapere cosa stavano disegnando gli altri). Questo è ridicolo (direi che dovrebbe essere la responsabilità di quel programma che vuole nascondere la sua produzione intermedia), ma è così che vanno le cose. – valdo
Ho fatto un sacco di Direct3D attraverso l'era di DirectX9. Quando ho iniziato, i framebuffer, le superfici ecc sarebbero invariabilmente prive di inizializzazione e il codice potrebbe facilmente esporre il contenuto di una corsa precedente. A un certo punto, Microsoft o i provider di driver devono aver deciso di "sistemarlo" e si otterrebbero invece i buffer bloccati. Credo che sia stato fatto in nome della sicurezza. Direi che i problemi di sicurezza sono validi; non tollereremmo un sistema che trasmettesse i processi utente RAM contenenti i detriti non illuminati di altri utenti e la RAM del framebuffer non dovrebbe essere considerata in modo diverso. – timday