Revision 8ac4c0bc
Added by Leszek Koltunski over 5 years ago
| src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java | ||
|---|---|---|
| 26 | 26 |
import android.graphics.Paint; |
| 27 | 27 |
import android.opengl.GLSurfaceView; |
| 28 | 28 |
|
| 29 |
import org.distorted.examples.R; |
|
| 29 | 30 |
import org.distorted.library.effect.MatrixEffectQuaternion; |
| 30 | 31 |
import org.distorted.library.effect.MatrixEffectScale; |
| 31 | 32 |
import org.distorted.library.main.DistortedEffects; |
| ... | ... | |
| 108 | 109 |
public void onSurfaceCreated(GL10 glUnused, EGLConfig config) |
| 109 | 110 |
{
|
| 110 | 111 |
if( mTexture==null ) mTexture = new DistortedTexture(); |
| 111 |
mTexture.setTexture( createTexture(0) ); |
|
| 112 | 112 |
|
| 113 | 113 |
try |
| 114 | 114 |
{
|
| ... | ... | |
| 124 | 124 |
|
| 125 | 125 |
void open(int resourceID) |
| 126 | 126 |
{
|
| 127 |
mTexture.setTexture( createTexture(resourceID) ); |
|
| 128 |
|
|
| 127 | 129 |
long t1 = System.currentTimeMillis(); |
| 128 | 130 |
mMesh = createMesh(resourceID); |
| 129 | 131 |
long t2 = System.currentTimeMillis(); |
| ... | ... | |
| 138 | 140 |
|
| 139 | 141 |
private Bitmap createTexture(int resourceID) |
| 140 | 142 |
{
|
| 141 |
final int[] FACE_COLORS = new int[] { 0xffffff00, 0xff00ff00, 0xff0000ff, 0xffff0000 };
|
|
| 142 |
final int FACES=FACE_COLORS.length; |
|
| 143 |
switch(resourceID) |
|
| 144 |
{
|
|
| 145 |
case R.raw.deferredjob: |
|
| 146 |
case R.raw.meshjoin : final int[] TET_COLORS4 = new int[] { 0xffffff00,
|
|
| 147 |
0xff00ff00, |
|
| 148 |
0xff0000ff, |
|
| 149 |
0xffff0000 }; |
|
| 150 |
return createTetrahedrenTexture(TET_COLORS4); |
|
| 151 |
case R.raw.predeform : return createGridTexture(3); |
|
| 152 |
case R.raw.cube2 : |
|
| 153 |
case R.raw.cube3 : |
|
| 154 |
case R.raw.cube4 : |
|
| 155 |
case R.raw.cube5 : final int[] CUBE_COLORS = new int[] { 0xffffff00,
|
|
| 156 |
0xffffffff, |
|
| 157 |
0xff0000ff, |
|
| 158 |
0xff00ff00, |
|
| 159 |
0xffff0000, |
|
| 160 |
0xffb5651d }; |
|
| 161 |
return createCubeTexture(CUBE_COLORS); |
|
| 162 |
case R.raw.pyra3 : |
|
| 163 |
case R.raw.pyra4 : |
|
| 164 |
case R.raw.pyra5 : final int[] TET_COLORS5 = new int[] { 0xffffff00,
|
|
| 165 |
0xff00ff00, |
|
| 166 |
0xff0000ff, |
|
| 167 |
0xffff0000, |
|
| 168 |
0xff000000 }; |
|
| 169 |
return createTetrahedrenTexture(TET_COLORS5); |
|
| 170 |
} |
|
| 171 |
|
|
| 172 |
return null; |
|
| 173 |
} |
|
| 174 |
|
|
| 175 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 176 |
|
|
| 177 |
private Bitmap createCubeTexture(int[] faceColors) |
|
| 178 |
{
|
|
| 179 |
final int FACES=faceColors.length; |
|
| 180 |
int SIZE = 200; |
|
| 181 |
final float R = SIZE*0.10f; |
|
| 182 |
final float M = SIZE*0.05f; |
|
| 183 |
|
|
| 184 |
Bitmap bitmap; |
|
| 185 |
Paint paint = new Paint(); |
|
| 186 |
bitmap = Bitmap.createBitmap( (FACES+1)*SIZE, SIZE, Bitmap.Config.ARGB_8888); |
|
| 187 |
Canvas canvas = new Canvas(bitmap); |
|
| 188 |
|
|
| 189 |
paint.setStyle(Paint.Style.FILL); |
|
| 190 |
paint.setColor(0xff000000); |
|
| 191 |
canvas.drawRect(0, 0, (FACES+1)*SIZE, SIZE, paint); |
|
| 192 |
|
|
| 193 |
for(int face=0; face<FACES; face++) |
|
| 194 |
{
|
|
| 195 |
paint.setColor(faceColors[face]); |
|
| 196 |
canvas.drawRoundRect( face*SIZE+M, M, (face+1)*SIZE-M, SIZE-M, R, R, paint); |
|
| 197 |
} |
|
| 198 |
|
|
| 199 |
return bitmap; |
|
| 200 |
} |
|
| 201 |
|
|
| 202 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 203 |
|
|
| 204 |
private Bitmap createGridTexture(int lines) |
|
| 205 |
{
|
|
| 206 |
int SIZE = 200; |
|
| 207 |
Bitmap bitmap = Bitmap.createBitmap(SIZE,SIZE, Bitmap.Config.ARGB_8888); |
|
| 208 |
Canvas canvas = new Canvas(bitmap); |
|
| 209 |
|
|
| 210 |
Paint paint = new Paint(); |
|
| 211 |
paint.setColor(0xff008800); |
|
| 212 |
paint.setStyle(Paint.Style.FILL); |
|
| 213 |
canvas.drawRect(0, 0, SIZE, SIZE, paint); |
|
| 214 |
paint.setColor(0xffffffff); |
|
| 215 |
|
|
| 216 |
for(int i=0; i<=lines ; i++ ) |
|
| 217 |
{
|
|
| 218 |
int x = (SIZE*i)/lines; |
|
| 219 |
canvas.drawRect(x-1, 0, x+1, SIZE, paint); |
|
| 220 |
canvas.drawRect( 0, x-1, SIZE, x+1, paint); |
|
| 221 |
} |
|
| 222 |
|
|
| 223 |
return bitmap; |
|
| 224 |
} |
|
| 225 |
|
|
| 226 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 227 |
|
|
| 228 |
private Bitmap createTetrahedrenTexture(int[] faceColors) |
|
| 229 |
{
|
|
| 230 |
final int FACES=faceColors.length; |
|
| 143 | 231 |
int SIZE = 200; |
| 144 | 232 |
float STROKE = 0.05f*SIZE; |
| 145 | 233 |
float OFF = STROKE/2 -1; |
| ... | ... | |
| 160 | 248 |
|
| 161 | 249 |
for(int i=0; i<FACES; i++) |
| 162 | 250 |
{
|
| 163 |
paint.setColor(FACE_COLORS[i]);
|
|
| 251 |
paint.setColor(faceColors[i]);
|
|
| 164 | 252 |
paint.setStyle(Paint.Style.FILL); |
| 165 | 253 |
|
| 166 | 254 |
canvas.drawRect(i*SIZE,0,(i+1)*SIZE,SIZE,paint); |
Also available in: Unified diff
Progress with the MeshFile app.