Project

General

Profile

« Previous | Next » 

Revision 0a046359

Added by Leszek Koltunski over 7 years ago

The EffectQueues are now totally independent of the size of the underlying Bitmap.

View differences:

src/main/java/org/distorted/library/DistortedObject.java
71 71
  private boolean matrixCloned, vertexCloned, fragmentCloned;
72 72
  private long mID;
73 73
  private int mSizeX, mSizeY, mSizeZ; // in screen space
74
  private int mHalfX, mHalfY, mHalfZ; // halfs of the above
74 75

  
75 76
  protected DistortedObjectGrid mGrid = null;
76 77

  
......
104 105

  
105 106
  protected void initializeData(int x, int y, int z)
106 107
    {
107
    mSizeX= x;
108
    mSizeY= y;
109
    mSizeZ= z;
108
    mSizeX= x; mHalfX = x/2;
109
    mSizeY= y; mHalfY = y/2;
110
    mSizeZ= z; mHalfZ = z/2;
110 111

  
111 112
    mID = mNextID++;
112 113
    mObjects.put(mID,this);
......
127 128
    
128 129
  private void initializeEffectLists(DistortedObject d, int flags)
129 130
    {
131
    long objID = d.getID();
132

  
130 133
    if( (flags & Distorted.CLONE_MATRIX) != 0 )
131 134
      {
132 135
      mM = d.mM;
......
134 137
      }
135 138
    else
136 139
      {
137
      mM = new EffectQueueMatrix(d);
140
      mM = new EffectQueueMatrix(objID);
138 141
      matrixCloned = false;
139 142
      }
140 143
    
......
145 148
      }
146 149
    else
147 150
      {
148
      mV = new EffectQueueVertex(d);
151
      mV = new EffectQueueVertex(objID);
149 152
      vertexCloned = false;
150 153
      }
151 154
    
......
156 159
      }
157 160
    else
158 161
      {
159
      mF = new EffectQueueFragment(d);
162
      mF = new EffectQueueFragment(objID);
160 163
      fragmentCloned = false;
161 164
      }
162 165
    }
......
192 195
    DistortedFramebuffer.deleteAllMarked();
193 196

  
194 197
    GLES20.glViewport(0, 0, df.mWidth, df.mHeight);
195
      
198

  
196 199
    mM.compute(currTime);
197
    mM.send(df);
200
    mM.send(df,mHalfX,mHalfY,mHalfZ);
198 201
      
199 202
    mV.compute(currTime);
200
    mV.send();
203
    mV.send(mHalfX,mHalfY,mHalfZ);
201 204
        
202 205
    mF.compute(currTime);
203
    mF.send();
206
    mF.send(mHalfX,mHalfY);
204 207
       
205 208
    mGrid.draw();
206 209
    }
......
210 213
  void drawNoEffectsPriv(DistortedFramebuffer df)
211 214
    {
212 215
    GLES20.glViewport(0, 0, df.mWidth, df.mHeight);
213
    mM.sendZero(df);
216

  
217
    mM.sendZero(df,mHalfX,mHalfY,mHalfZ);
214 218
    mV.sendZero();
215 219
    mF.sendZero();
216 220
    mGrid.draw();
......
295 299
    mSizeX = dc.mSizeX;
296 300
    mSizeY = dc.mSizeY;
297 301
    mSizeZ = dc.mSizeZ;
302
    mHalfX = dc.mHalfX;
303
    mHalfY = dc.mHalfY;
304
    mHalfZ = dc.mHalfZ;
298 305
    mGrid  = dc.mGrid;
299 306

  
300 307
    if( (flags & Distorted.CLONE_BITMAP) != 0 )
......
368 375
  public void setBitmap(Bitmap bmp)
369 376
    {
370 377
    mBitmapSet[0] = true;
371
      
378

  
379
    mSizeX= bmp.getWidth() ; mHalfX = mSizeX/2;
380
    mSizeY= bmp.getHeight(); mHalfY = mSizeY/2;
381

  
372 382
    if( Distorted.isInitialized() )
373 383
      {
374 384
      GLES20.glActiveTexture(GLES20.GL_TEXTURE0);

Also available in: Unified diff