( SDL_GL_SwapBuffers()
khususnya)
Ketika Anda telah menggambar adegan, dan Anda memanggil swap-buffer, itu adalah rutin untuk glClear()
adegan itu sebelum menggambar apa pun; jika Anda tidak jelas, apa isi buffer? Apakah ini ditentukan oleh spesifikasi apa pun, atau apakah berbeda menurut driver?
opengl
sdl
double-buffering
Akan
sumber
sumber
Jawaban:
Rincian cara menukar penyangga depan dan belakang bervariasi dari satu platform ke platform lainnya, jadi jawabannya tergantung pada platform.
Menurut dokumentasi referensi GLX glXSwapBuffers :
Namun, ada ekstensi GLX_EXT_buffer_age :
Tetapi Win32 SwapBuffers hanya mengatakan:
Dan CGLFlushDrawable, untuk OS X Core Graphics mengatakan:
Akhirnya, dalam fungsi pertukaran-standar OpenGL ES eglSwapBuffers :
Jadi apa artinya semua ini?
Mengingat kendala GLX dan CGL, dan keinginan untuk meminimalkan perubahan antara OpenGL dan OpenGL ES, Anda mungkin juga hanya menganggap isinya sampah.
sumber
Dari apa yang saya baca, satu-satunya perilaku TIDAK DIKENAL. Jadi saya akan berasumsi tidak ada jaminan untuk apa yang akan menjadi isi buffer. Belum lagi bahwa beberapa lib sebenarnya membungkus panggilan yang jelas ke panggilan buffer swap.
sumber
Perilaku ini TIDAK DILAKUKAN, jadi jika Anda tetap mengisi seluruh layar, Anda dapat mempertimbangkan untuk menghapus yang jelas .. kecuali, pada beberapa lingkungan (setidaknya arsitektur ubin tertentu), yang sebenarnya akan menurunkan kinerja. Layar penuh jelas pada awal rendering adalah operasi yang sangat umum sehingga saya akan terkejut jika itu tidak dioptimalkan dengan baik pada semua platform target.
Alasan mengapa itu TIDAK DILAKUKAN adalah bahwa bagi banyak arsitektur, membuat status konten yang didefinisikan akan menjadi overhead tambahan, terlepas dari bagaimana Anda akan mendefinisikan standar.
Mengenai apa yang akan Anda temukan di sana, saya bisa menebak berdasarkan pengalaman;
Pada arsitektur buffered ganda (atau multi-), seperti kebanyakan perangkat keras video PC desktop, Anda mungkin akan menemukan data buffer "lain". Ini tidak dijamin, karena tidak ada dalam spesifikasi, jika beberapa optimasi aneh mendapat manfaat darinya, mereka akan memutarbalikkan data.
Pada arsitektur ubin, Anda mungkin menemukan data yang sama dengan bingkai terakhir, beberapa data yang dikacaukan secara aneh berdasarkan ukuran ubin, atau hal lainnya.
Kemudian Anda memiliki beberapa arsitektur eksentrik (seperti NDS) yang mungkin memberikan apa saja kepada Anda, karena definisi penyangga mereka tidak persis seperti yang Anda harapkan.
sumber