"Kapalı kaynak" uygulamasının içinde çalışan bir eklentinin parçası olarak glsl shader programında çalışıyorum. Uygulama (maya) opengl 2.1 kullanılarak yazılmıştır, ancak grafik kartlarımız opengl/glsl 4.1'i desteklemektedir ve programımda mozaikleme ve geometri gölgelendiricilerini kullanmak istiyorum. Uygulama, opengl viewport'u ve geleneksel model/view matrisi yığınını ayarlar ve kodun o kısmı üzerinde kontrole sahip değilim.GLSL 4.1 with gl_ModelViewProjectionMatrix
My geçiş tepe tarayıcı GLSL 1.2 kullanır ve iyi çalışır:
// GLSL VERTEX SHADER
#version 120
void main()
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
My geçiş Geometri shader glsl 4.1 kullanır ve ayrıca uygulama içinde çalışıyor:
// GLSL GEOMETRY SHADER
#version 410
layout (lines_adjacency) in;
layout (line_strip, max_vertices = 2) out;
void main()
{
gl_Position = gl_in[1].gl_Position;
EmitVertex();
gl_Position = gl_in[2].gl_Position;
EmitVertex();
EndPrimitive();
}
Ama bu sadece bir geçiş testi. Benim gerçek geometri gölgelendiricimde, dünya uzayında bazı hesaplamalar yapmam gerekiyor, ancak geometri gölgelendirici noktaları görünüm alanında. Sorum şu: bir 4.1 geometri gölgelendiricisinde gl_ModelViewProjectionMatrix'e erişebilir miyim? Geleneksel matris yığınının glsl 4.1'de tek tip değişkenler lehine kullanımdan kaldırıldığını anlıyorum, ancak uygulamayı değiştiremiyorum. Geometri gölgelendiricimde glsl 1.2 kullanamıyorum çünkü lines_adjacency giriş tipine ihtiyacım var. Eklentimin C++ kaynağında matrisi tek tip bir değişkene kopyalamam gerekir mi? Veya doğrudan glsl 4.1'den almak için bir "arka kapı" var mı? Ya da başka bir şey düşünmüyorum?