@@ -39,9 +39,7 @@ public class RendererFactory {
3939 /**
4040 * list of opengl drawers
4141 */
42- private Map <String , GLES20Renderer > drawers = new HashMap <>();
43-
44- private final String [] shaderIdTemp = new String [3 ];
42+ private Map <Shader , GLES20Renderer > drawers = new HashMap <>();
4543
4644 public RendererFactory (Context context ) throws IllegalAccessException , IOException {
4745
@@ -68,17 +66,17 @@ public Renderer getDrawer(Object3DData obj, boolean usingSkyBox, boolean usingTe
6866 boolean isColoured = drawColors && obj != null && (obj .getColorsBuffer () != null || obj
6967 .getColorsBuffer () != null );
7068
71- final String [] shaderId = getShaderId (usingSkyBox , isAnimated , isUsingLights , isTextured , isColoured );
69+ final Shader shader = getShader (usingSkyBox , isAnimated , isUsingLights , isTextured , isColoured );
7270
7371 // get cached drawer
74- GLES20Renderer drawer = drawers .get (shaderId [ 0 ] );
72+ GLES20Renderer drawer = drawers .get (shader );
7573 if (drawer != null ) return drawer ;
7674
7775 // build drawer
78- String vertexShaderCode = shadersCode .get (shaderId [ 1 ] );
79- String fragmentShaderCode = shadersCode .get (shaderId [ 2 ] );
76+ String vertexShaderCode = shadersCode .get (shader . vertexShaderCode );
77+ String fragmentShaderCode = shadersCode .get (shader . fragmentShaderCode );
8078 if (vertexShaderCode == null || fragmentShaderCode == null ) {
81- Log .e ("RendererFactory" , "Shaders not found for " + shaderId [ 0 ] );
79+ Log .e ("RendererFactory" , "Shaders not found for " + shader . id );
8280 return null ;
8381 }
8482
@@ -94,119 +92,86 @@ public Renderer getDrawer(Object3DData obj, boolean usingSkyBox, boolean usingTe
9492 Log .v ("RendererFactory" , "---------- Fragment shader ----------\n " );
9593 Log .v ("RendererFactory" , fragmentShaderCode );
9694 Log .v ("RendererFactory" , "-------------------------------------\n " );
97- drawer = GLES20Renderer .getInstance (shaderId [ 0 ] , vertexShaderCode , fragmentShaderCode );
95+ drawer = GLES20Renderer .getInstance (shader . id , vertexShaderCode , fragmentShaderCode );
9896
9997 // cache drawer
100- drawers .put (shaderId [ 0 ] , drawer );
98+ drawers .put (shader , drawer );
10199
102100 // return drawer
103101 return drawer ;
104102 }
105103
106104 @ NonNull
107- private String [] getShaderId (boolean isUsingSkyBox , boolean isAnimated , boolean isUsingLights , boolean isTextured , boolean
105+ private Shader getShader (boolean isUsingSkyBox , boolean isAnimated , boolean isUsingLights , boolean isTextured , boolean
108106 isColoured ) {
109107
110108 if (isUsingSkyBox ){
111- shaderIdTemp [0 ]="shader_skybox_" ;
112- shaderIdTemp [1 ]="shader_skybox_vert" ;
113- shaderIdTemp [2 ]="shader_skybox_frag" ;
114- return shaderIdTemp ;
109+ return Shader .SKYBOX ;
115110 }
111+
112+ Shader ret = null ;
116113 if (isAnimated ){
117114 if (isUsingLights ){
118115 if (isTextured ){
119116 if (isColoured ){
120- shaderIdTemp [0 ]="shader_anim_light_texture_colors_" ;
121- shaderIdTemp [1 ]="shader_anim_light_texture_colors_vert" ;
122- shaderIdTemp [2 ]="shader_anim_light_texture_colors_frag" ;
117+ ret = Shader .ANIM_LIGHT_TEXTURE_COLORS ;
123118 } else {
124- shaderIdTemp [0 ]="shader_anim_light_texture_" ;
125- shaderIdTemp [1 ]="shader_anim_light_texture_vert" ;
126- shaderIdTemp [2 ]="shader_anim_light_texture_frag" ;
119+ ret = Shader .ANIM_LIGHT_TEXTURE ;
127120 }
128121 } else {
129122 if (isColoured ){
130- shaderIdTemp [0 ]="shader_anim_light_colors_" ;
131- shaderIdTemp [1 ]="shader_anim_light_colors_vert" ;
132- shaderIdTemp [2 ]="shader_anim_light_colors_frag" ;
123+ ret = Shader .ANIM_LIGHT_COLORS ;
133124 } else {
134- shaderIdTemp [0 ]="shader_anim_light_" ;
135- shaderIdTemp [1 ]="shader_anim_light_vert" ;
136- shaderIdTemp [2 ]="shader_anim_light_frag" ;
125+ ret = Shader .ANIM_LIGHT ;
137126 }
138127 }
139128 } else {
140129 if (isTextured ){
141130 if (isColoured ){
142- shaderIdTemp [0 ]="shader_anim_texture_colors_" ;
143- shaderIdTemp [1 ]="shader_anim_texture_colors_vert" ;
144- shaderIdTemp [2 ]="shader_anim_texture_colors_frag" ;
131+ ret = Shader .ANIM_TEXTURE_COLORS ;
145132 } else {
146- shaderIdTemp [0 ]="shader_anim_texture_" ;
147- shaderIdTemp [1 ]="shader_anim_texture_vert" ;
148- shaderIdTemp [2 ]="shader_anim_texture_frag" ;
133+ ret = Shader .ANIM_TEXTURE ;
149134 }
150135 } else {
151136 if (isColoured ){
152- shaderIdTemp [0 ]="shader_anim_colors_" ;
153- shaderIdTemp [1 ]="shader_anim_colors_vert" ;
154- shaderIdTemp [2 ]="shader_anim_colors_frag" ;
137+ ret = Shader .ANIM_COLORS ;
155138 } else {
156- shaderIdTemp [0 ]="shader_anim_" ;
157- shaderIdTemp [1 ]="shader_anim_vert" ;
158- shaderIdTemp [2 ]="shader_anim_frag" ;
139+ ret = Shader .ANIM ;
159140 }
160141 }
161142 }
162143 } else {
163144 if (isUsingLights ){
164145 if (isTextured ){
165146 if (isColoured ){
166- shaderIdTemp [0 ]="shader_light_texture_colors_" ;
167- shaderIdTemp [1 ]="shader_light_texture_colors_vert" ;
168- shaderIdTemp [2 ]="shader_light_texture_colors_frag" ;
147+ ret = Shader .LIGHT_TEXTURE_COLORS ;
169148 } else {
170- shaderIdTemp [0 ]="shader_light_texture_" ;
171- shaderIdTemp [1 ]="shader_light_texture_vert" ;
172- shaderIdTemp [2 ]="shader_light_texture_frag" ;
149+ ret = Shader .LIGHT_TEXTURE ;
173150 }
174151 } else {
175152 if (isColoured ){
176- shaderIdTemp [0 ]="shader_light_colors_" ;
177- shaderIdTemp [1 ]="shader_light_colors_vert" ;
178- shaderIdTemp [2 ]="shader_light_colors_frag" ;
153+ ret = Shader .LIGHT_COLORS ;
179154 } else {
180- shaderIdTemp [0 ]="shader_light_" ;
181- shaderIdTemp [1 ]="shader_light_vert" ;
182- shaderIdTemp [2 ]="shader_light_frag" ;
155+ ret = Shader .LIGHT ;
183156 }
184157 }
185158 } else {
186159 if (isTextured ){
187160 if (isColoured ){
188- shaderIdTemp [0 ]="shader_texture_colors_" ;
189- shaderIdTemp [1 ]="shader_texture_colors_vert" ;
190- shaderIdTemp [2 ]="shader_texture_colors_frag" ;
161+ ret = Shader .TEXTURE_COLORS ;
191162 } else {
192- shaderIdTemp [0 ]="shader_texture_" ;
193- shaderIdTemp [1 ]="shader_texture_vert" ;
194- shaderIdTemp [2 ]="shader_texture_frag" ;
163+ ret = Shader .TEXTURE ;
195164 }
196165 } else {
197166 if (isColoured ){
198- shaderIdTemp [0 ]="shader_colors_" ;
199- shaderIdTemp [1 ]="shader_colors_vert" ;
200- shaderIdTemp [2 ]="shader_colors_frag" ;
167+ ret = Shader .COLORS ;
201168 } else {
202- shaderIdTemp [0 ]="shader_" ;
203- shaderIdTemp [1 ]="shader_vert" ;
204- shaderIdTemp [2 ]="shader_frag" ;
169+ ret = Shader .SHADER ;
205170 }
206171 }
207172 }
208173 }
209- return shaderIdTemp ;
174+ return ret ;
210175 }
211176
212177 public Renderer getBoundingBoxDrawer () {
0 commit comments