Revision 7e53a35f
Added by Leszek Koltunski about 4 years ago
src/main/java/org/distorted/library/mesh/MeshBase.java | ||
---|---|---|
69 | 69 |
private float mBoundingX, mBoundingY, mBoundingZ; |
70 | 70 |
private float mStretchX, mStretchY, mStretchZ; |
71 | 71 |
|
72 |
private class Component |
|
72 |
private static class Component
|
|
73 | 73 |
{ |
74 | 74 |
private int mEndIndex; |
75 | 75 |
private Static4D mTextureMap; |
... | ... | |
284 | 284 |
*/ |
285 | 285 |
public int getTFO() |
286 | 286 |
{ |
287 |
return mTFO.mIndex[0];
|
|
287 |
return mTFO.getIndex();
|
|
288 | 288 |
} |
289 | 289 |
|
290 | 290 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
306 | 306 |
*/ |
307 | 307 |
public void bindVertexAttribs(DistortedProgram program) |
308 | 308 |
{ |
309 |
mVBO.createImmediately(mNumVertices*VERT_SIZE, mVertAttribs); |
|
309 |
int index = mVBO.createImmediately(mNumVertices*VERT_SIZE, mVertAttribs);
|
|
310 | 310 |
|
311 |
GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, mVBO.mIndex[0] );
|
|
311 |
GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, index );
|
|
312 | 312 |
GLES31.glVertexAttribPointer(program.mAttribute[0], POS_DATA_SIZE, GLES31.GL_FLOAT, false, VERT_SIZE, OFFSET_POS); |
313 | 313 |
GLES31.glVertexAttribPointer(program.mAttribute[1], NOR_DATA_SIZE, GLES31.GL_FLOAT, false, VERT_SIZE, OFFSET_NOR); |
314 | 314 |
GLES31.glVertexAttribPointer(program.mAttribute[2], INF_DATA_SIZE, GLES31.GL_FLOAT, false, VERT_SIZE, OFFSET_INF); |
... | ... | |
324 | 324 |
*/ |
325 | 325 |
public void bindTransformAttribs(DistortedProgram program) |
326 | 326 |
{ |
327 |
mTFO.createImmediately(mNumVertices*TRAN_SIZE, null); |
|
327 |
int index = mTFO.createImmediately(mNumVertices*TRAN_SIZE, null);
|
|
328 | 328 |
|
329 |
GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, mTFO.mIndex[0] );
|
|
329 |
GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, index );
|
|
330 | 330 |
GLES31.glVertexAttribPointer(program.mAttribute[0], POS_DATA_SIZE, GLES31.GL_FLOAT, false, 0, 0); |
331 | 331 |
GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, 0); |
332 | 332 |
} |
... | ... | |
453 | 453 |
} |
454 | 454 |
} |
455 | 455 |
|
456 |
mTFO.invalidate();
|
|
456 |
mVBO.invalidate();
|
|
457 | 457 |
} |
458 | 458 |
|
459 | 459 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
482 | 482 |
int num_maps = maps.length; |
483 | 483 |
int min = Math.min(num_comp, num_maps); |
484 | 484 |
int vertex = 0; |
485 |
int index = TEX_ATTRIB; |
|
486 | 485 |
Static4D newMap, oldMap; |
487 | 486 |
Component comp; |
488 | 487 |
float newW, newH, ratW, ratH, movX, movY; |
... | ... | |
490 | 489 |
for(int i=0; i<min; i++) |
491 | 490 |
{ |
492 | 491 |
newMap = maps[i]; |
492 |
comp = mComponent.get(i); |
|
493 | 493 |
|
494 | 494 |
if( newMap!=null ) |
495 | 495 |
{ |
... | ... | |
498 | 498 |
|
499 | 499 |
if( newW!=0.0f && newH!=0.0f ) |
500 | 500 |
{ |
501 |
comp = mComponent.get(i); |
|
502 | 501 |
oldMap = comp.mTextureMap; |
503 | 502 |
ratW = newW/oldMap.get2(); |
504 | 503 |
ratH = newH/oldMap.get3(); |
505 | 504 |
movX = newMap.get0() - ratW*oldMap.get0(); |
506 | 505 |
movY = newMap.get1() - ratH*oldMap.get1(); |
507 | 506 |
|
508 |
for( ; vertex<=comp.mEndIndex; vertex++, index+=VERT_ATTRIBS) |
|
507 |
for( int index=vertex*VERT_ATTRIBS+TEX_ATTRIB ; vertex<=comp.mEndIndex; vertex++, index+=VERT_ATTRIBS)
|
|
509 | 508 |
{ |
510 | 509 |
mVertAttribs[index ] = ratW*mVertAttribs[index ] + movX; |
511 | 510 |
mVertAttribs[index+1] = ratH*mVertAttribs[index+1] + movY; |
... | ... | |
513 | 512 |
comp.setMap(newMap); |
514 | 513 |
} |
515 | 514 |
} |
515 |
|
|
516 |
vertex= comp.mEndIndex+1; |
|
516 | 517 |
} |
517 | 518 |
|
518 |
mTFO.invalidate();
|
|
519 |
mVBO.invalidate();
|
|
519 | 520 |
} |
520 | 521 |
|
521 | 522 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Bugfixes in MeshBase:
1) improper buffer was being invalidated after apply and setTextureMap (TFO rather than VBO!)
2) setTextureMap would only work if all components were being set