Project

General

Profile

« Previous | Next » 

Revision 687263cc

Added by Leszek Koltunski about 4 years ago

Move the 'pre-multiply mesh before applying any effects' thing from [(Xsize of texture, Ysize of texture) x Mesh's zFactor] to Effects.setStretch(sx,sy,sz)

View differences:

src/main/java/org/distorted/examples/mirror/MirrorRenderer.java
55 55
   private static final float MIRROR_MOVE_V    =0.22f;  // Move the mirror up
56 56

  
57 57
   private GLSurfaceView mView;
58
   private DistortedEffects mEffectsMirror, mEffectsHead, mEffectsNull;
58
   private DistortedEffects mEffectsMirror, mEffectsHead, mEffectsScreen;
59 59
   private DistortedEffects mEffectsOffscreen1, mEffectsOffscreen2;
60 60
   private DistortedTexture mTextureMirror, mTextureHead;
61 61
   private DistortedFramebuffer mOffScreen1, mOffScreen2;
......
75 75
      mQuad    = new MeshRectangles(1,1);
76 76
      mScreen  = new DistortedScreen();
77 77

  
78
      mEffectsMirror    = new DistortedEffects();
79
      mEffectsHead      = new DistortedEffects();
80
      mEffectsOffscreen1= new DistortedEffects();
81
      mEffectsOffscreen2= new DistortedEffects();
82
      mEffectsNull      = new DistortedEffects();
78
      mEffectsMirror    = new DistortedEffects(1);
79
      mEffectsHead      = new DistortedEffects(1);
80
      mEffectsOffscreen1= new DistortedEffects(1);
81
      mEffectsOffscreen2= new DistortedEffects(1);
82
      mEffectsScreen    = new DistortedEffects(1);
83 83

  
84 84
      mX = MirrorActivity.INIT_POSITION;
85 85

  
......
138 138
        if( mOffScreen1!=null ) mOffScreen1.markForDeletion();
139 139
        if( mOffScreen2!=null ) mOffScreen2.markForDeletion();
140 140

  
141
        mOffScreen1 = new DistortedFramebuffer(                     mScreenW,                     mScreenH, 1, DistortedFramebuffer.NO_DEPTH_NO_STENCIL );
142
        mOffScreen2 = new DistortedFramebuffer( (int)(MIRROR_SCALE*mScreenW), (int)(MIRROR_SCALE*mScreenH), 1, DistortedFramebuffer.NO_DEPTH_NO_STENCIL );
141
        int offscreen1W = mScreenW;
142
        int offscreen1H = mScreenH;
143
        int offscreen2W = (int)(MIRROR_SCALE*mScreenW);
144
        int offscreen2H = (int)(MIRROR_SCALE*mScreenH);
145

  
146
        mEffectsOffscreen1.setStretch(offscreen1W, offscreen1H, 0);
147
        mEffectsOffscreen2.setStretch(offscreen2W, offscreen2H, 0);
148
        mEffectsScreen.setStretch(offscreen1W, offscreen1H, 0);
149

  
150
        mOffScreen1 = new DistortedFramebuffer( offscreen1W, offscreen1H, 1, DistortedFramebuffer.NO_DEPTH_NO_STENCIL );
151
        mOffScreen2 = new DistortedFramebuffer( offscreen2W, offscreen2H, 1, DistortedFramebuffer.NO_DEPTH_NO_STENCIL );
143 152

  
144 153
        mScaleMirror.set( (float)mScreenW/mMirrorW, (float)mScreenH/mMirrorH, 1.0f);
145 154
        mMoveOffscreen2.set( MIRROR_MOVE_H*mScreenW, MIRROR_MOVE_V*mScreenH*mMirrorW/mMirrorH, 0);
......
155 164
        mOffScreen2.attach( mOffScreen1   , mEffectsOffscreen1, mQuad );
156 165

  
157 166
        mScreen.detachAll();
158
        mScreen.attach    ( mOffScreen1   , mEffectsNull      , mQuad );
167
        mScreen.attach    ( mOffScreen1   , mEffectsScreen    , mQuad );
159 168
        mScreen.resize(mScreenW,mScreenH);
160 169
        }
161 170
      }
......
189 198
      mHeadW   = bitmapH.getWidth();
190 199
      mHeadH   = bitmapH.getHeight();
191 200

  
192
      if( mTextureMirror==null ) mTextureMirror = new DistortedTexture(mMirrorW,mMirrorH);
193
      if( mTextureHead  ==null ) mTextureHead   = new DistortedTexture(mHeadW, mHeadH);
201
      mEffectsMirror.setStretch(mMirrorW,mMirrorH,0);
202
      mEffectsHead.setStretch(mHeadW, mHeadH,0);
203

  
204
      if( mTextureMirror==null ) mTextureMirror = new DistortedTexture();
205
      if( mTextureHead  ==null ) mTextureHead   = new DistortedTexture();
194 206

  
195 207
      mTextureMirror.setTexture(bitmapM);
196 208
      mTextureHead.setTexture(bitmapH);

Also available in: Unified diff