2012-10-12 27 views
0

我有我画平铺使用道路:在android上多次绘制相同位图的优化?

float sizeW; 
    float sizeH; 
    if(isTopBottom()) 
    { 
     sizeW = getWidth(); 
     sizeH = (sizeW/image.getWidth()) * image.getHeight(); 
    } 
    else 
    { 
     sizeW = getHeight(); 
     sizeH = (sizeW/image.getWidth()) * image.getHeight(); 

    } 

    int numTiles = isTopBottom() ? (int)Math.ceil(getHeight()/sizeH) : 
     (int)Math.ceil(getWidth()/sizeW); 

    for(int i = 0; i < numTiles; ++i) 
    { 
     if(isTopBottom()) 
     { 
      c.drawRotatedScaledBitmap(
        image, 
        getRect().left + (sizeW/2.0f), 
        (getRect().top + (sizeH/2.0f)) + (sizeH * i), 
        sizeW, sizeH, 0.0f); 
     } 
     else 
     { 
      c.drawRotatedScaledBitmap(
        image, 
        getRect().left + (sizeH/2.0f) + (sizeH * i), 
        getRect().top + (sizeH/2.0f), 
        sizeW, sizeH, (float)Math.PI/2.0f); 
     } 

    } 

我知道的OpenGL纹理恨绑定。 Android是否足够智能以避免这些纹理绑定,或者有没有一种方法可以明确地告诉它我一遍又一遍地绘制相同的位图?

感谢

+1

“*我知道OpenGL讨厌纹理绑定。*”你怎么知道的?绑定纹理的成本是特定于实现的。此外,如果您“知道”了这一点,为什么不在“drawRotatedScaledBitmap”代码中采取措施不要多次绑定相同的纹理? –

回答

0

OpenGL是一个状态机,所以一旦你犯了一个bind()的调用,就没有必要再进行一次,以吸引相同的纹理。