public override void render(AsRenderSupport support, float parentAlpha) { if (mFlattenedContents != null || mFlattenRequested) { if (mFlattenedContents == null) { mFlattenedContents = new AsVector <AsQuadBatch>(); } if (mFlattenRequested) { AsQuadBatch.compile(this, mFlattenedContents); mFlattenRequested = false; } float alpha = parentAlpha * this.getAlpha(); int numBatches = (int)(mFlattenedContents.getLength()); AsMatrix mvpMatrix = support.getMvpMatrix(); support.finishQuadBatch(); support.raiseDrawCount((uint)(numBatches)); int i = 0; for (; i < numBatches; ++i) { AsQuadBatch quadBatch = mFlattenedContents[i]; String blendMode = quadBatch.getBlendMode() == AsBlendMode.AUTO ? support.getBlendMode() : quadBatch.getBlendMode(); quadBatch.renderCustom(mvpMatrix, alpha, blendMode); } } else { base.render(support, parentAlpha); } }
public virtual void addQuadBatch(AsQuadBatch quadBatch, float parentAlpha, AsMatrix modelViewMatrix, String blendMode) { if (modelViewMatrix == null) { modelViewMatrix = quadBatch.getTransformationMatrix(); } bool tinted = quadBatch.mTinted || parentAlpha != 1.0f; float alpha = parentAlpha * quadBatch.getAlpha(); int vertexID = mNumQuads * 4; int numQuads = quadBatch.getNumQuads(); if (mNumQuads + numQuads > getCapacity()) { expand(mNumQuads + numQuads); } if (mNumQuads == 0) { this.setBlendMode(blendMode != null ? blendMode : quadBatch.getBlendMode()); mTexture = quadBatch.mTexture; mTinted = tinted; mSmoothing = quadBatch.mSmoothing; mVertexData.setPremultipliedAlpha(quadBatch.mVertexData.getPremultipliedAlpha(), false); } quadBatch.mVertexData.copyTo(mVertexData, vertexID, 0, numQuads * 4); mVertexData.transformVertex(vertexID, modelViewMatrix, numQuads * 4); if (alpha != 1.0f) { mVertexData.scaleAlpha(vertexID, alpha, numQuads * 4); } mSyncRequired = true; mNumQuads = mNumQuads + numQuads; }
public virtual void addQuadBatch(AsQuadBatch quadBatch, float parentAlpha, AsMatrix modelViewMatrix, String blendMode) { if(modelViewMatrix == null) { modelViewMatrix = quadBatch.getTransformationMatrix(); } bool tinted = quadBatch.mTinted || parentAlpha != 1.0f; float alpha = parentAlpha * quadBatch.getAlpha(); int vertexID = mNumQuads * 4; int numQuads = quadBatch.getNumQuads(); if(mNumQuads + numQuads > getCapacity()) { expand(mNumQuads + numQuads); } if(mNumQuads == 0) { this.setBlendMode(blendMode != null ? blendMode : quadBatch.getBlendMode()); mTexture = quadBatch.mTexture; mTinted = tinted; mSmoothing = quadBatch.mSmoothing; mVertexData.setPremultipliedAlpha(quadBatch.mVertexData.getPremultipliedAlpha(), false); } quadBatch.mVertexData.copyTo(mVertexData, vertexID, 0, numQuads * 4); mVertexData.transformVertex(vertexID, modelViewMatrix, numQuads * 4); if(alpha != 1.0f) { mVertexData.scaleAlpha(vertexID, alpha, numQuads * 4); } mSyncRequired = true; mNumQuads = mNumQuads + numQuads; }