2010-06-01 20 views
5

Birden fazla iş parçacığı ile GL çağrıları yapmak güvenli olup olmadığını merak ediyordum. Temel olarak bir GLUtesselator kullanıyorum ve nesneleri 4'e çizmek ve her birine bir iş parçacığı atamak isteyip istemediğimi merak ediyordum.Birden fazla iş parçacığı ile GL çağrıları yapmak güvenli midir?

Bu sorun, sorun çözücünün geri arama işlevlerini kullanmasından dolayı sorun çıkarmayacağını merak ediyorum. 2 iş parçacığı, geri arama global genel değişkenlere erişmediği sürece aynı geri bildirimi aynı anda çalıştırır mı?

OpenGL çizimini çoklu iş parçacığı kullanarak en iyi duruma getirebilecek başka yöntemlerim var mı?

+0

ilgili https://stackoverflow.com/questions/11097170/multithreaded-rendering-on-opengl –

cevap

1

"Can 2 iş parçacığının yanıtı, geri arama global genel değişkenlere erişmediği sürece aynı geri çağrıyı çalıştırır?" açık bir EVET. Ancak, özellikle glBegin/glEnd kullanırken (örn. Bir DisplayList oluşturuyorsanız), geri arama işlevlerinizdeki OpenGL durumunu değiştirdiğinizde sorunlarla karşılaşırsınız. Üste | GPU'yu kullanmadığınız sürece (örneğin bir ağ kullanıyorsanız), çoklu okuma ile tesselasyon yapabilirsiniz.

Çiziminizi optimize etmek isterseniz, geometri gölgelendiricisini bunun yerine tesselasyon için kullanmak isteyebilirsiniz. Bu, Shader Model 4'ü gerektirir.

+0

Shader Model 4, DirectX'e özgüdür: http://www.opengl.org/wiki/Detecting_the_Shader_Model. Bunu mu demek istediniz: GLSL 1.3? –

+0

Tamam, doğru terim DX'de Shader Model 4 olarak adlandırılan "Unified Shader Model" dir. Grafik kartının desteklemesi gereken şey budur. OpenGL geometri gölgelendiricisi OpenGL 3.2, GLSL 1.50 ile geldi, ancak OpenGL 2.0'da da uzantı olarak kullanabilirsiniz. – flyx

2

Sorunuzdaki satırları okumak, cevap yok. Aynı anda farklı iş parçacıklarından aynı GL içeriğine çağrı yapamazsınız. Daha fazla ayrıntıyı Parallel OpenGL FAQ'da bulabilirsiniz.

İlgili konular