Her seferinde ekrandaki görüntünün tazelenmesi CRT (=Cathode Ray Tube)
tarafından yapılır. Bu olaya programımız müdahale edemez. Bellekte
OpenGL'in çizim için kullandığı ekran bölgesine nokta eklemek çizgi
çizmek gibi işlemlerle değişiklik yaptıkça ekrana bu değişiklikler
anında yansıtılır. Ama tüm değişikliklerin yapıldıktan sonra ekranın
tazelenmesini sağlayacak bir yol da vardır.
Çizimi başka bir bellek bölgesinde yapıp sonra ekran bölgesine
aktarabiliriz (double buffering). Arka planda ekranın yeni görüntüsü
işlevlerle hazırlanır ve bu sırada ön planda yani kullanıcının gördüğü
pencerede bir değişiklik olmaz. Biz programımızda glFlush()
yerine glSwapBuffers() işlevini kullanırsak arka planda
hazırladığımız değişiklikler ön plana yansır.
Bu durumu "ya hep ya hiç" şeklinde işlenmesi gereken verilere
benzetebiliriz. Arka planda şeklin tamamı çizildikten sonra ön plana
aktarılır. Böylece ekran tazelenmesi sırasında ekranın titrememesi
sağlanır.
Ama artalanda tamponlama yapabilmek için penceremiz oluşturulmadan
şu şekilde ilklendirme yapılması gerekmektedir:
glutInitDisplayMode (GLUT_RGBA | GLUT_DOUBLE);
GLUT_DOUBLE sayesinde çift tamponlu bir penceremiz olur.
Artık glFlush() yerine glSwapBuffers()
kullanılarak artalanda tamponlama yapılabilir.