Revision 33f59f22
Added by Leszek Koltunski almost 6 years ago
src/main/java/org/distorted/library/main/DistortedRenderState.java | ||
---|---|---|
231 | 231 |
GLES31.glDisable(GLES31.GL_SCISSOR_TEST); |
232 | 232 |
} |
233 | 233 |
|
234 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
235 |
|
|
236 |
static void switchOffColorDepthStencil() |
|
237 |
{ |
|
238 |
sState.stencilTest = cState.stencilTest; |
|
239 |
|
|
240 |
if( cState.stencilTest!=0 ) |
|
241 |
{ |
|
242 |
cState.stencilTest = 0; |
|
243 |
//android.util.Log.d("State", "stencil test off"); |
|
244 |
GLES31.glDisable(GLES31.GL_STENCIL_TEST); |
|
245 |
} |
|
246 |
|
|
247 |
sState.depthTest = cState.depthTest; |
|
248 |
|
|
249 |
if( cState.depthTest!=0 ) |
|
250 |
{ |
|
251 |
cState.depthTest = 0; |
|
252 |
//android.util.Log.d("State", "depth test off"); |
|
253 |
GLES31.glDisable(GLES31.GL_DEPTH_TEST); |
|
254 |
} |
|
255 |
|
|
256 |
sState.colorMaskR = cState.colorMaskR; |
|
257 |
sState.colorMaskG = cState.colorMaskG; |
|
258 |
sState.colorMaskB = cState.colorMaskB; |
|
259 |
sState.colorMaskA = cState.colorMaskA; |
|
260 |
|
|
261 |
if( cState.colorMaskR!=0 || cState.colorMaskG!=0 || cState.colorMaskB!=0 || cState.colorMaskA!=0 ) |
|
262 |
{ |
|
263 |
cState.colorMaskR = 0; |
|
264 |
cState.colorMaskG = 0; |
|
265 |
cState.colorMaskB = 0; |
|
266 |
cState.colorMaskA = 0; |
|
267 |
//android.util.Log.d("State", "switch off color writing"); |
|
268 |
GLES31.glColorMask(false,false,false,false); |
|
269 |
} |
|
270 |
|
|
271 |
sState.depthMask = cState.depthMask; |
|
272 |
|
|
273 |
if( cState.depthMask!=0 ) |
|
274 |
{ |
|
275 |
cState.depthMask = 0; |
|
276 |
//android.util.Log.d("State", "switch off depth writing"); |
|
277 |
GLES31.glDepthMask(false); |
|
278 |
} |
|
279 |
|
|
280 |
sState.stencilMask = cState.stencilMask; |
|
281 |
|
|
282 |
if( cState.stencilMask!= 0x00 ) |
|
283 |
{ |
|
284 |
cState.stencilMask = 0x00; |
|
285 |
//android.util.Log.d("State", "stencil mask off"); |
|
286 |
GLES31.glStencilMask(cState.stencilMask); |
|
287 |
} |
|
288 |
} |
|
289 |
|
|
290 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
291 |
|
|
292 |
static void switchColorDepthOnStencilOff() |
|
293 |
{ |
|
294 |
sState.stencilTest = cState.stencilTest; |
|
295 |
|
|
296 |
if( cState.stencilTest!=0 ) |
|
297 |
{ |
|
298 |
cState.stencilTest = 0; |
|
299 |
//android.util.Log.d("State", "stencil test off"); |
|
300 |
GLES31.glDisable(GLES31.GL_STENCIL_TEST); |
|
301 |
} |
|
302 |
|
|
303 |
sState.depthTest = cState.depthTest; |
|
304 |
|
|
305 |
if( cState.depthTest!=0 ) |
|
306 |
{ |
|
307 |
cState.depthTest = 0; |
|
308 |
//android.util.Log.d("State", "depth test off"); |
|
309 |
GLES31.glDisable(GLES31.GL_DEPTH_TEST); |
|
310 |
} |
|
311 |
|
|
312 |
sState.colorMaskR = cState.colorMaskR; |
|
313 |
sState.colorMaskG = cState.colorMaskG; |
|
314 |
sState.colorMaskB = cState.colorMaskB; |
|
315 |
sState.colorMaskA = cState.colorMaskA; |
|
316 |
|
|
317 |
if( cState.colorMaskR!=1 || cState.colorMaskG!=1 || cState.colorMaskB!=1 || cState.colorMaskA!=1 ) |
|
318 |
{ |
|
319 |
cState.colorMaskR = 1; |
|
320 |
cState.colorMaskG = 1; |
|
321 |
cState.colorMaskB = 1; |
|
322 |
cState.colorMaskA = 1; |
|
323 |
//android.util.Log.d("State", "switch on color writing"); |
|
324 |
GLES31.glColorMask(true,true,true,true); |
|
325 |
} |
|
326 |
|
|
327 |
sState.depthMask = cState.depthMask; |
|
328 |
|
|
329 |
if( cState.depthMask!=1 ) |
|
330 |
{ |
|
331 |
cState.depthMask = 1; |
|
332 |
//android.util.Log.d("State", "switch on depth writing"); |
|
333 |
GLES31.glDepthMask(true); |
|
334 |
} |
|
335 |
|
|
336 |
sState.stencilMask = cState.stencilMask; |
|
337 |
|
|
338 |
if( cState.stencilMask!= 0x00 ) |
|
339 |
{ |
|
340 |
cState.stencilMask = 0x00; |
|
341 |
//android.util.Log.d("State", "stencil mask off"); |
|
342 |
GLES31.glStencilMask(cState.stencilMask); |
|
343 |
} |
|
344 |
} |
|
345 |
|
|
346 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
347 |
|
|
348 |
static void restoreColorDepthStencil() |
|
349 |
{ |
|
350 |
if( sState.stencilTest!=cState.stencilTest ) |
|
351 |
{ |
|
352 |
cState.stencilTest = sState.stencilTest; |
|
353 |
|
|
354 |
if (cState.stencilTest == 0) |
|
355 |
{ |
|
356 |
GLES31.glDisable(GLES31.GL_STENCIL_TEST); |
|
357 |
} |
|
358 |
else |
|
359 |
{ |
|
360 |
GLES31.glEnable(GLES31.GL_STENCIL_TEST); |
|
361 |
} |
|
362 |
} |
|
363 |
if( sState.depthTest!=cState.depthTest ) |
|
364 |
{ |
|
365 |
cState.depthTest = sState.depthTest; |
|
366 |
|
|
367 |
if (cState.depthTest == 0) |
|
368 |
{ |
|
369 |
GLES31.glDisable(GLES31.GL_DEPTH_TEST); |
|
370 |
} |
|
371 |
else |
|
372 |
{ |
|
373 |
GLES31.glEnable(GLES31.GL_DEPTH_TEST); |
|
374 |
} |
|
375 |
} |
|
376 |
if( sState.colorMaskR!=cState.colorMaskR || sState.colorMaskG!=cState.colorMaskG || sState.colorMaskB!=cState.colorMaskB || sState.colorMaskA!=cState.colorMaskA) |
|
377 |
{ |
|
378 |
cState.colorMaskR = sState.colorMaskR; |
|
379 |
cState.colorMaskG = sState.colorMaskG; |
|
380 |
cState.colorMaskB = sState.colorMaskB; |
|
381 |
cState.colorMaskA = sState.colorMaskA; |
|
382 |
GLES31.glColorMask(cState.colorMaskR==1,cState.colorMaskG==1,cState.colorMaskB==1,cState.colorMaskA==1); |
|
383 |
} |
|
384 |
if( sState.depthMask!=cState.depthMask ) |
|
385 |
{ |
|
386 |
cState.depthMask = sState.depthMask; |
|
387 |
GLES31.glDepthMask(cState.depthMask==1); |
|
388 |
} |
|
389 |
if( sState.stencilMask!=cState.stencilMask ) |
|
390 |
{ |
|
391 |
cState.stencilMask = sState.stencilMask; |
|
392 |
GLES31.glStencilMask(cState.stencilMask); |
|
393 |
} |
|
394 |
} |
|
395 |
|
|
234 | 396 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
235 | 397 |
|
236 | 398 |
static void disableStencil() |
Also available in: Unified diff
OIT: move towards 4 passes ( clear - build - collapse - render )