OpenGL adalah mesin negara. Konteks OpenGL menyatakan seperti itu. Negara berisi informasi seperti tekstur yang terikat ke unit tekstur mana, yang lampiran FBO saat ini miliki, dan hal-hal seperti itu.
Saat Anda mengatur konteks saat ini, Anda mengalihkan semua status dari konteks lama ke konteks baru. Ini sebuah contoh:
glfwMakeContextCurrent(window1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture1);
glfwMakeContextCurrent(window2);
Apa yang dilakukan adalah membuat konteks window1
saat ini. Ini kemudian memungkinkan unit tekstur 2D dan mengikatnya texture1
.
Selanjutnya ia membuat konteks window2
saat ini. Jika Anda memeriksa keadaan yang diaktifkan GL_TEXTURE_2D
itu akan salah (kecuali Anda sebelumnya mengaktifkannya pada window2
konteks). Demikian juga, jika Anda memeriksa tekstur mana yang terikat ke unit tekstur 2D, Anda mungkin akan menemukan tidak ada tekstur yang terikat, atau beberapa tekstur selain texture1
yang terikat.
Pada dasarnya semua gambar terjadi dalam konteks saat ini. Jika Anda membuat konteks yang berbeda menjadi arus, maka semua gambar sekarang akan terjadi dalam konteks itu.
Adalah umum untuk memiliki konteks tunggal per utas dalam aplikasi OpenGL multi-utas. Dengan begitu setiap utas menarik ke dalam konteksnya sendiri dan tidak mengacaukan keadaan konteks pada utas lainnya.