OpenGL bir durum makinesidir. Bir OpenGL bağlamı bu durumu tutar. Durum, hangi dokuların hangi doku birimlerine bağlı olduğu, mevcut FBO'nun sahip olduğu ekler ve bunun gibi bilgiler içerir.
Geçerli içeriği ayarladığınızda, tüm durumu eski içerikten yeni içeriğe geçirirsiniz. İşte bir örnek:
glfwMakeContextCurrent(window1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture1);
glfwMakeContextCurrent(window2);
Bunun yaptığı window1akımın bağlamıdır . Daha sonra 2D doku ünitesini etkinleştirir ve texture1ona bağlanır .
Sonra window2akımın bağlamını yapar . Etkin durumunu kontrol ederseniz GL_TEXTURE_2Dyanlış olur (daha önce window2bağlamda etkinleştirmediyseniz ). Benzer şekilde, 2B doku birimine hangi dokunun bağlı olduğunu kontrol ederseniz, büyük olasılıkla herhangi bir doku bağlı olmadığını veya başka bir doku bağlı olmadığını görürsünüz texture1.
Temel olarak tüm çizim mevcut bağlamda gerçekleşir. Farklı bir bağlamı güncel yaparsanız, tüm çizim artık bu bağlamda gerçekleşir.
Çok iş parçacıklı bir OpenGL uygulamasında iş parçacığı başına tek bir bağlam olması yaygındır. Bu şekilde, her iş parçacığı kendi bağlamına girer ve diğer iş parçacıklarındaki bağlamların durumunu bozmaz.