OpenGL ES 2.0 öğrenmeye çalışıyorum ve gölgelendiricileri "yönetmek" için en yaygın uygulamanın ne olduğunu merak ediyorum.
Bu soruyu soruyorum çünkü bulduğum örneklerde (android sdk ile sağlanan API Demosunda yer alan gibi), genellikle GLRenderer sınıfının içindeki her şeyi görüyorum ve bu yüzden sahip olabileceğim şeyler ayırmayı tercih ederim, örneğin, bir OpenGL ES 1.0 kodumda olduğu gibi dokulu bir dörtlü çizmek istediğimde yeniden kullanabileceğim bir GLImage nesnesi (sadece şu anda 2D'ye odaklanıyorum). Bulduğum hemen hemen her örnekte gölgelendiriciler sadece sınıf nitelikleri olarak tanımlanır. Örneğin:
public class Square {
public final String vertexShader =
"uniform mat4 uMVPMatrix;\n" +
"attribute vec4 aPosition;\n" +
"attribute vec4 aColor;\n" +
"varying vec4 vColor;\n" +
"void main() {\n" +
" gl_Position = uMVPMatrix * aPosition;\n" +
" vColor = aColor;\n" +
"}\n";
public final String fragmentShader =
"precision mediump float;\n" +
"varying vec4 vColor;\n" +
"void main() {\n" +
" gl_FragColor = vColor;\n" +
"}\n";
// ...
}
Bu soruların bir kısmı aptal ise şimdiden özür dilerim, ama daha önce gölgelendiricilerle hiç çalışmadım.
1) Yukarıdaki kod gölgelendiricileri tanımlamanın ortak yolu mudur?
2) Ayrı bir Shader sınıfım olmalı mı?
3) Gölgelendiriciler bunları kullanan sınıfın dışında tanımlanırsa, özniteliklerinin adlarını nasıl bilebilirim (örneğin aşağıdaki kod parçasında "aColor"), böylece onları bağlayabilir miyim?
colorHandle = GLES20.glGetAttribLocation(program, "aColor");