2014年4月29日火曜日

ゲームプログラマになる前に覚えておきたい技術 ch.2

最後に丸や三角形を描画すると見やすい画面になると書いてありました。
サンプルコードを下記に書く。

丸のスクリプト
double型をint型にキャストしているので若干見栄えが良くない。
void drawCircle(int x , int y, unsigned color)
{
        unsigned* vram = Framework::instance().videoMemory();
        int w = Framework::instance().width();
        int xx = 0 , yy = 0;
        int hankei = 8;
        for(int r = 0; r <= hankei;++r)
        {
            for(int i = 1 ; i < 360; ++i)
            {           
                    xx = hankei+cos(i)*r;
                    yy = hankei+sin(i)*r;
                    vram[(y*hankei*2+yy) * w + (x*hankei*2 + xx)] =color;
            }
        }
}
三角形のスクリプト
固定三角、同様にして色んな三角形を書けると思う。
void drawTriangle(int x , int y , unsigned color)
{
        unsigned* vram = Framework::instance().videoMemory();
        int w = Framework::instance().width();
        int t = 1;
        for(int i = 0 ; i < 16 ; ++i)
        {
            for(int j = 0; j < 16 ; ++j)
            {
                if((16 - t) > j)continue;
                else vram[(y*16+j) * w + (x*16+i)] = color;
            }
            t++;
        }
}
namespace GameLib{
    void Framework::update(){
        //mainLoop();
        drawTriangle(0,0,0xff0000);
        drawCircle(0,0,0x00ff00);

    }
}