OpenGL เป็นเครื่องของรัฐ บริบท OpenGL เก็บสถานะนั้น รัฐมีข้อมูลเช่นพื้นผิวที่ถูกผูกไว้กับหน่วยพื้นผิวซึ่งสิ่งที่แนบมา FBO ปัจจุบันมีและสิ่งเช่นนั้น
เมื่อคุณตั้งค่าบริบทปัจจุบันคุณกำลังสลับสถานะทั้งหมดจากบริบทเก่าเป็นบริบทใหม่ นี่คือตัวอย่าง:
glfwMakeContextCurrent(window1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture1);
glfwMakeContextCurrent(window2);
สิ่งนี้ทำให้บริบทของwindow1
ปัจจุบัน จากนั้นจะเปิดใช้งานหน่วยพื้นผิว 2D และผูกtexture1
เข้ากับมัน
ถัดไปทำให้บริบทwindow2
ปัจจุบัน หากคุณต้องตรวจสอบสถานะการเปิดใช้งานของGL_TEXTURE_2D
มันจะเป็นเท็จ (เว้นแต่ว่าคุณได้เปิดใช้งานก่อนหน้านี้ในwindow2
บริบท) ในทำนองเดียวกันถ้าคุณตรวจสอบซึ่งเนื้อถูกผูกไว้กับหน่วยเนื้อ 2D, คุณอาจจะพบเนื้อไม่มีการผูกพันหรือพื้นผิวอื่น ๆ กว่าtexture1
ถูกผูกไว้
โดยทั่วไปการวาดทั้งหมดเกิดขึ้นในบริบทปัจจุบัน หากคุณสร้างบริบทที่แตกต่างกันปัจจุบันการวาดภาพทั้งหมดจะเกิดขึ้นในบริบทนั้น
เป็นเรื่องปกติที่จะมีบริบทเดียวต่อเธรดในแอปพลิเคชัน OpenGL แบบมัลติเธรด วิธีนี้แต่ละเธรดจะถูกวาดลงในบริบทของตนเองและไม่ทำให้สถานะของบริบทบนเธรดอื่น ๆ ยุ่งเหยิง