Project

General

Profile

« Previous | Next » 

Revision 8ca9f899

Added by Leszek Koltunski about 7 years ago

Introduce Renderable to the Tree.

View differences:

src/main/java/org/distorted/library/Distorted.java
44 44
   * This way we can have two DistortedTextures, both backed up by the same Bitmap, to which we can
45 45
   * apply different effects. Used in the copy constructor.
46 46
   */
47
  public static final int CLONE_BITMAP  = 0x1;
47
  public static final int CLONE_RENDERABLE = 0x1;
48 48
  /**
49 49
   * When creating an instance of a DistortedEffects from another instance, clone the Matrix Effects.
50 50
   * <p>
src/main/java/org/distorted/library/DistortedFramebuffer.java
390 390
    {
391 391
    if( mWidth!=width || mHeight!=height )
392 392
      {
393
      mWidth    = width;
394
      mHeight   = height;
393
      mWidth = width;
394
      mHeight= height;
395 395
      mSizeX = width;
396 396
      mSizeY = height;
397 397

  
src/main/java/org/distorted/library/DistortedRenderable.java
25 25
import java.util.LinkedList;
26 26

  
27 27
///////////////////////////////////////////////////////////////////////////////////////////////////
28

  
29
abstract class DistortedRenderable
28
/**
29
 * Abstract class which represents a Renderable Object, i.e. something that we can take an skin our Mesh with.
30
 * <p>
31
 * Currently a DistortedTexture or a DistortedFramebuffer are Renderables.
32
 */
33
public abstract class DistortedRenderable
30 34
  {
31 35
  static final int FAILED_TO_CREATE = -1;
32 36
  static final int NOT_CREATED_YET  = -2;
src/main/java/org/distorted/library/DistortedTree.java
38 38

  
39 39
  private MeshObject mMesh;
40 40
  private DistortedEffects mEffects;
41
  private DistortedTexture mTexture;
41
  private DistortedRenderable mRenderable;
42 42
  private NodeData mData;
43 43

  
44 44
  private DistortedTree mParent;
......
94 94
    {
95 95
    ArrayList<Long> ret = new ArrayList<>();
96 96
     
97
    ret.add( mTexture.getID() );
97
    ret.add( mRenderable.getID() );
98 98
    DistortedTree node;
99 99
   
100 100
    for(int i=0; i<mNumChildren[0]; i++)
......
125 125
      if( newList.size()>1 )
126 126
        {
127 127
        if( mData.mFBO ==null )
128
          mData.mFBO = new DistortedFramebuffer(mTexture.getWidth(), mTexture.getHeight());
128
          mData.mFBO = new DistortedFramebuffer(mRenderable.getWidth(), mRenderable.getHeight());
129 129
        }
130 130
      else
131 131
        {
......
200 200

  
201 201
  void drawRecursive(long currTime, DistortedFramebuffer df)
202 202
    {
203
    mTexture.create();
204
    float halfX = mTexture.getWidth()/2.0f;
205
    float halfY = mTexture.getHeight()/2.0f;
203
    mRenderable.create();
204
    float halfX = mRenderable.getWidth()/2.0f;
205
    float halfY = mRenderable.getHeight()/2.0f;
206 206

  
207 207
    if( mNumChildren[0]<=0 )
208 208
      {
209
      mTexture.setAsInput();
209
      mRenderable.setAsInput();
210 210
      }
211 211
    else
212 212
      {
......
219 219
        GLES30.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
220 220
        GLES30.glClear( GLES30.GL_DEPTH_BUFFER_BIT | GLES30.GL_COLOR_BUFFER_BIT);
221 221

  
222
        if( mTexture.setAsInput() )
222
        if( mRenderable.setAsInput() )
223 223
          DistortedEffects.drawNoEffectsPriv(halfX, halfY, mMesh, mData.mFBO);
224 224

  
225 225
        synchronized(this)
......
245 245
/**
246 246
 * Constructs new Node of the Tree.
247 247
 *     
248
 * @param texture DistortedTexture to put into the new Node.
248
 * @param renderable DistortedRenderable to put into the new Node.
249 249
 * @param effects DistortedEffects to put into the new Node.
250 250
 * @param mesh MeshObject to put into the new Node.
251 251
 */
252
  public DistortedTree(DistortedTexture texture, DistortedEffects effects, MeshObject mesh)
252
  public DistortedTree(DistortedRenderable renderable, DistortedEffects effects, MeshObject mesh)
253 253
    {
254
    mTexture= texture;
255
    mEffects= effects;
256
    mMesh   = mesh;
257
    mParent = null;
258
    mChildren = null;
259
    mNumChildren = new int[1];
260
    mNumChildren[0] = 0;
254
    mRenderable    = renderable;
255
    mEffects       = effects;
256
    mMesh          = mesh;
257
    mParent        = null;
258
    mChildren      = null;
259
    mNumChildren   = new int[1];
260
    mNumChildren[0]= 0;
261 261
   
262 262
    ArrayList<Long> list = new ArrayList<>();
263
    list.add(mTexture.getID());
263
    list.add(mRenderable.getID());
264 264

  
265 265
    mData = mMapNodeID.get(list);
266 266
   
......
281 281
 *     
282 282
 * @param node The DistortedTree to copy data from.
283 283
 * @param flags bit field composed of a subset of the following:
284
 *        {@link Distorted#CLONE_BITMAP},  {@link Distorted#CLONE_MATRIX}, {@link Distorted#CLONE_VERTEX},
284
 *        {@link Distorted#CLONE_RENDERABLE},  {@link Distorted#CLONE_MATRIX}, {@link Distorted#CLONE_VERTEX},
285 285
 *        {@link Distorted#CLONE_FRAGMENT} and {@link Distorted#CLONE_CHILDREN}.
286
 *        For example flags = CLONE_BITMAP | CLONE_CHILDREN.
286
 *        For example flags = CLONE_RENDERABLE | CLONE_CHILDREN.
287 287
 */
288 288
  public DistortedTree(DistortedTree node, int flags)
289 289
    {
......
291 291
    mEffects= new DistortedEffects(node.mEffects,flags);
292 292
    mMesh = node.mMesh;
293 293

  
294
    if( (flags & Distorted.CLONE_BITMAP) != 0 )
294
    if( (flags & Distorted.CLONE_RENDERABLE) != 0 )
295 295
      {
296
      mTexture = node.mTexture;
296
      mRenderable = node.mRenderable;
297 297
      }
298 298
    else
299 299
      {
300
      mTexture = new DistortedTexture(node.mTexture.getWidth(), node.mTexture.getHeight());
300
      int w = node.mRenderable.getWidth();
301
      int h = node.mRenderable.getHeight();
302

  
303
      if( node.mRenderable instanceof DistortedTexture )
304
        {
305
        mRenderable = new DistortedTexture(w,h);
306
        }
307
      else if( node.mRenderable instanceof DistortedFramebuffer )
308
        {
309
        boolean hasDepth = ((DistortedFramebuffer) node.mRenderable).hasDepth();
310
        mRenderable = new DistortedFramebuffer(w,h,hasDepth);
311
        }
301 312
      }
302 313
    if( (flags & Distorted.CLONE_CHILDREN) != 0 )
303 314
      {
......
349 360
/**
350 361
 * Adds a new child to the last position in the list of our Node's children.
351 362
 * 
352
 * @param texture DistortedTexture to initialize our child Node with.
363
 * @param renderable DistortedRenderable to initialize our child Node with.
353 364
 * @param effects DistortedEffects to initialize our child Node with.
354 365
 * @param mesh MeshObject to initialize our child Node with.
355 366
 * @return the newly constructed child Node, or null if we couldn't allocate resources.
356 367
 */
357
  public synchronized DistortedTree attach(DistortedTexture texture, DistortedEffects effects, MeshObject mesh)
368
  public synchronized DistortedTree attach(DistortedRenderable renderable, DistortedEffects effects, MeshObject mesh)
358 369
    {
359 370
    ArrayList<Long> prev = generateIDList(); 
360 371
      
361 372
    if( mChildren==null ) mChildren = new ArrayList<>(2);
362
    DistortedTree node = new DistortedTree(texture,effects,mesh);
373
    DistortedTree node = new DistortedTree(renderable,effects,mesh);
363 374
    node.mParent = this;
364 375
    mChildren.add(node);
365 376
    mNumChildren[0]++;
......
463 474

  
464 475
///////////////////////////////////////////////////////////////////////////////////////////////////
465 476
/**
466
 * Returns the DistortedTexture object that's in the Node.
477
 * Returns the DistortedRenderable object that's in the Node.
467 478
 *
468
 * @return The DistortedTexture contained in the Node.
479
 * @return The DistortedRenderable contained in the Node.
469 480
 */
470
  public DistortedTexture getTexture()
481
  public DistortedRenderable getRenderable()
471 482
    {
472
    return mTexture;
483
    return mRenderable;
473 484
    }
474 485

  
475 486
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff