Revision 687263cc
Added by Leszek Koltunski about 4 years ago
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
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)