| 53 |
53 |
private int[] fboIds = new int[1];
|
| 54 |
54 |
|
| 55 |
55 |
private boolean mMarked;
|
| 56 |
|
private boolean mDepthWanted;
|
|
56 |
private boolean mDepthEnabled;
|
| 57 |
57 |
|
| 58 |
58 |
private int mTexWidth, mTexHeight;
|
| 59 |
59 |
|
| ... | ... | |
| 84 |
84 |
|
| 85 |
85 |
checkStatus("color");
|
| 86 |
86 |
}
|
| 87 |
|
if( mDepthWanted && depthIds[0]==NOT_CREATED_YET ) // we need to create a new DEPTH attachment
|
|
87 |
if( mDepthEnabled && depthIds[0]==NOT_CREATED_YET ) // we need to create a new DEPTH attachment
|
| 88 |
88 |
{
|
| 89 |
89 |
GLES30.glGenTextures(1, depthIds, 0);
|
| 90 |
90 |
GLES30.glBindTexture(GLES30.GL_TEXTURE_2D, depthIds[0]);
|
| ... | ... | |
| 99 |
99 |
|
| 100 |
100 |
checkStatus("depth");
|
| 101 |
101 |
}
|
| 102 |
|
if( !mDepthWanted && depthIds[0]!=NOT_CREATED_YET ) // we need to detach and destroy the DEPTH attachment.
|
|
102 |
if( !mDepthEnabled && depthIds[0]!=NOT_CREATED_YET ) // we need to detach and destroy the DEPTH attachment.
|
| 103 |
103 |
{
|
| 104 |
104 |
GLES30.glDeleteTextures(1, depthIds, 0);
|
| 105 |
105 |
depthIds[0]=NOT_CREATED_YET;
|
| ... | ... | |
| 221 |
221 |
for( DistortedFramebuffer fbo : mList)
|
| 222 |
222 |
{
|
| 223 |
223 |
if( fbo.colorIds[0]!=DONT_CREATE ) fbo.colorIds[0] = NOT_CREATED_YET;
|
| 224 |
|
if( fbo.mDepthWanted ) fbo.depthIds[0] = NOT_CREATED_YET;
|
|
224 |
if( fbo.mDepthEnabled) fbo.depthIds[0] = NOT_CREATED_YET;
|
| 225 |
225 |
}
|
| 226 |
226 |
}
|
| 227 |
227 |
|
| ... | ... | |
| 279 |
279 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 280 |
280 |
// PUBLIC API
|
| 281 |
281 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
282 |
/**
|
|
283 |
* Create a new offscreen Framebuffer.
|
|
284 |
*
|
|
285 |
* @param width Width of the COLOR attachment.
|
|
286 |
* @param height Height of the COLOR attachment.
|
|
287 |
* @param depthEnabled Add DEPTH attachment?
|
|
288 |
*/
|
|
289 |
@SuppressWarnings("unused")
|
|
290 |
public DistortedFramebuffer(int width, int height, boolean depthEnabled)
|
|
291 |
{
|
|
292 |
mProjectionMatrix = new float[16];
|
|
293 |
|
|
294 |
mHeight = height;
|
|
295 |
mWidth = width;
|
|
296 |
mTexHeight = height;
|
|
297 |
mTexWidth = width;
|
|
298 |
mFOV = 60.0f;
|
|
299 |
mX = 0.0f;
|
|
300 |
mY = 0.0f;
|
|
301 |
mMarked = false;
|
|
302 |
mDepthEnabled= depthEnabled;
|
|
303 |
|
|
304 |
fboIds[0] =-1;
|
|
305 |
colorIds[0]= NOT_CREATED_YET;
|
|
306 |
depthIds[0]= NOT_CREATED_YET;
|
|
307 |
|
|
308 |
createProjection();
|
|
309 |
|
|
310 |
mList.add(this);
|
|
311 |
}
|
|
312 |
|
| 282 |
313 |
/**
|
| 283 |
314 |
* Create a new offscreen Framebuffer.
|
| 284 |
315 |
*
|
| ... | ... | |
| 290 |
321 |
{
|
| 291 |
322 |
mProjectionMatrix = new float[16];
|
| 292 |
323 |
|
| 293 |
|
mHeight = height;
|
| 294 |
|
mWidth = width;
|
| 295 |
|
mTexHeight = height;
|
| 296 |
|
mTexWidth = width;
|
| 297 |
|
mFOV = 60.0f;
|
| 298 |
|
mX = 0.0f;
|
| 299 |
|
mY = 0.0f;
|
| 300 |
|
mMarked = false;
|
| 301 |
|
mDepthWanted= false;
|
|
324 |
mHeight = height;
|
|
325 |
mWidth = width;
|
|
326 |
mTexHeight = height;
|
|
327 |
mTexWidth = width;
|
|
328 |
mFOV = 60.0f;
|
|
329 |
mX = 0.0f;
|
|
330 |
mY = 0.0f;
|
|
331 |
mMarked = false;
|
|
332 |
mDepthEnabled= false;
|
| 302 |
333 |
|
| 303 |
334 |
fboIds[0] =-1;
|
| 304 |
335 |
colorIds[0]= NOT_CREATED_YET;
|
| ... | ... | |
| 321 |
352 |
{
|
| 322 |
353 |
mProjectionMatrix = new float[16];
|
| 323 |
354 |
|
| 324 |
|
mFOV = 60.0f;
|
| 325 |
|
mX = 0.0f;
|
| 326 |
|
mY = 0.0f;
|
| 327 |
|
mMarked = false;
|
| 328 |
|
mDepthWanted= true;
|
|
355 |
mFOV = 60.0f;
|
|
356 |
mX = 0.0f;
|
|
357 |
mY = 0.0f;
|
|
358 |
mMarked = false;
|
|
359 |
mDepthEnabled= true;
|
| 329 |
360 |
|
| 330 |
361 |
fboIds[0] = fbo;
|
| 331 |
362 |
colorIds[0]= DONT_CREATE;
|
| ... | ... | |
| 336 |
367 |
/**
|
| 337 |
368 |
* Create a new DEPTH buffer and attach it or (param=false) detach an existing DEPTh attachment and destroy it.
|
| 338 |
369 |
*
|
| 339 |
|
* @param hasDepthAttachment <bold>true</bold> if we want to attach a new DEPTH buffer to the FBO.<br>
|
| 340 |
|
* <bold>false</bold> if we want to detach the DEPTH attachment.
|
|
370 |
* @param enable <bold>true</bold> if we want to attach a new DEPTH buffer to the FBO.<br>
|
|
371 |
* <bold>false</bold> if we want to detach the DEPTH attachment.
|
| 341 |
372 |
*/
|
| 342 |
|
public void setDepthAttachment(boolean hasDepthAttachment)
|
|
373 |
public void enableDepthAttachment(boolean enable)
|
| 343 |
374 |
{
|
| 344 |
|
mDepthWanted = hasDepthAttachment;
|
|
375 |
mDepthEnabled = enable;
|
| 345 |
376 |
}
|
| 346 |
377 |
|
| 347 |
378 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| ... | ... | |
| 492 |
523 |
*/
|
| 493 |
524 |
public boolean hasDepth()
|
| 494 |
525 |
{
|
| 495 |
|
return mDepthWanted;
|
|
526 |
return mDepthEnabled;
|
| 496 |
527 |
}
|
| 497 |
528 |
}
|
Some fixes for issues discovered by the Multiblur app.