0

タイリングを使用して描いた道路があります。

    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はこれらのテクスチャバインドを回避するのに十分スマートですか、それとも同じビットマップを何度も描画していることを明示的に伝える方法はありますか?

ありがとう

4

1 に答える 1

0

OpenGL はステート マシンであるため、bind() 呼び出しを行うと、同じテクスチャを描画するために別の呼び出しを行う必要はありません。

于 2012-10-12T21:14:42.160 に答える