Platform SDK: DirectX

Wormhole サンプル

[Visual Basic]

ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectDraw Visual Basic サンプル」を参照すること。

[C++]

説明

このサンプル プログラムでは、パレット変更でアニメ エフェクトを作成する方法について示す。

パス

ソース ファイル :(SDK ルート)\Samples\Multimedia\DDraw\Src\Wormhole

実行可能ファイル :(SDK ルート)\Samples\Multimedia\DDraw\Bin\Wormhole.exe

ユーザーズ ガイド

プログラムを終了するには、F12 キーまたは Esc キーを押す。

プログラミング上の注意

4 色の 4×4 のディスプレイを考える。色を設定すると次のようになる。

ここで、各行のすべての色を右に循環できる。右側の 1 つは左へ覆う。

この循環を続けると、右に移動するアニメーションされた行を取得できる。同様にして、下に向かう行をアニメーションすることができる。

ここで、パレットを 16 色に拡張すると、同時に下と右への移動を結合できる。

右に移動

下に移動

右下に移動

ここで、これらの 4×4 ブロックの端と端にタイルを張り、上記のように循環させると、動く千鳥格子を取得できる。虫の掘った穴も同様に作成できるが、15×15 ブロック (225色) を使用して、平面でブロックの端と端にタイルを張る代わりに、虫の掘った穴の中央で 3-D 収束の内側にタイルを張る。

以下に示すコードで、前述の 15×15 グリッドを使用する 3-D の虫の掘った穴を生成できる。

// 全タスク
// r、θ、z を x、y、x に変換して、x、y を隠す
// ポイントをプロットする
// =-1.0+(log(2.0*j/DIVS) は、プロット用の math eqn を設定する行
// 自由に、他の関数も試すこと
// 柱座標。たとえば、z=f(r,theta)
 
#define STRETCH 25
#define PI      3.14159265358979323846
#define XCENTER 160
#define YCENTER 50
#define DIVS    1200
#define SPOKES  2400
 
void transarray(void)
    {
    float x,y,z;
    int i,j,color;
    for(j=1;j<DIVS+1;j++)
        for(i=0;i<SPOKES;i++)
            {
            z=-1.0+(log(2.0*j/DIVS));
            x=(320.0*j/DIVS*cos(2*PI*i/SPOKES));
            y=(240.0*j/DIVS*sin(2*PI*i/SPOKES));
            y=y-STRETCH*z;
            x+=XCENTER;
            y+=YCENTER;
            color=((i/8)%15)+15*((j/6)%15)+1;
            if ((x>=0)&&(x<=320)&&(y>=0)&&(y<=200))
                plot((int) x,(int) y,color);
            }
    }
 

ビットマップを DirectDraw サーフェスにロードした後にすべきことは、色を回転させ、虫の掘った穴を取得するだけである。