コード例 #1
0
 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);
     }
 }
コード例 #2
0
        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;
        }
コード例 #3
0
 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;
 }