ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

ある数と等しいか大きな2のべき乗の数を求める

ゲームプログラマになる前に覚えておきたい技術に載っていたコード。
テクスチャの解像度は2のべき乗でなくてはならないことが多いので、自分が欲しい大きさの画像を格納できるテクスチャサイズを求める方法。たとえば100だったら128というように、ある数と等しいか大きな2のべき乗の数を求める。

unsigned int powerOfTwo( unsigned int a ) {
    unsigned int r = 1;
    while ( r < a ) {
         r *= 2;
    }
    return r;
}

1から始めて、指定した数と等しいかより大きくなるまで2倍するのを繰り返して求めている。
本に載っていたコードではunsigned intではなくintを用いていた。この場合だとrが途中で負の数になってしまい無限ループになってしまう可能性がある。またテクスチャの解像度でマイナスということは無いのでunsigned intにした。