Chapter 01. 雛形を作ろう

このチュートリアルは、以降のチュートリアルを進めるに当たっての、プログラムの雛形を作ることを目的とします。順々に説明しますので、安心してお読み下さい。 もし分からないことや、上手く行かないことがございましたら、sata@chiyolab.net までメールにてご連絡下さい。宜しくお願い致します。

さて、早速始めましょう。

1. Excel ファイルを開こう。

サンプルファイル

このチュートリアルで使うサンプルファイルを、ダウンロードして下さい。 「マクロを含んでいます」という警告が出た場合は、「マクロを有効にする」を選択して下さい。もし、間違えて「マクロを無効にする」を選択してしまった場合は、一旦 Microsoft Excel を終了し、 もう一度ファイルを開いてください。

マクロを有効にし、ファイルを開きました

中央に、SGLX と書かれた小さなウィンドウが開くはずです。このウィンドウは消すことが出来ません。ウィンドウの中央に「日付:メッセージ」と書かれています。 この部分に、Chapter 02以降のチュートリアルで紹介する通信のログ(履歴)が表示されます。ご活用下さい。

2. 準備運動

「課題に回答」するボタンを押してください。以下のようなウィンドウが開きます。

課題に回答するボタンを押しました
A. セーブボタン - コードを保存します
B. コンパイルボタン - コードを保存し、コンパイルを実行します
C. 実行ボタン - プログラムを実行します

コードを書く部分に、以下のように入力しましょう。コードを保存するセルは、デフォルトで「B5」に指定されています。

#include "sfcglx.h"
#include 

int main(void) {
    printf("Hello World.");
    return 0;
}

プログラムを実行する手順は、A -> B -> C の順番です。順に押してみましょう。実行すると、コンソール画面(真っ黒の画面) に、「Hello World.」と表示されているはずです。

3. 雛形を作ろう

まず、必要なヘッダーファイルをインクルードしましょう。

#include "sfcglx.h"

.h というファイルは「ヘッダーファイル」と言います。sfcglx.h は SGLX を使うために必要です。 sfcglx.h 内部で、sfcgl.h を既にインクルードしています。 次に、main 関数を作ります。

int main(int argc, char** argv) {
    SGInit(argc, argv); // SGL の初期化

    // SGLX の初期化
    SGLXInit("C:\\Users\\Akito\\Documents\\MediaDesign3D\\1");

    SGOpenWindow(0,0,500,500); // 500x500のウィンドウ
    SGSetDisplay(display); // 描画
    SGCallBack(); // コールバック関数を登録
    return 0; 
}

SGLXInit() 関数の引数には、SGLXReadXV3() 関数で読み込む XV3 モデル (.xv3) へのパスを指定します。 今回のチュートリアルでは、SGLXReadXV3() 関数を使った読み込みは解説しませんが、 こちらにありますので、いずれご参照下さい。多くの場合、実行ファイル (.exe) が置かれているディレクトリの パスを指定すれば上手くいきます。先に進みます。

さらに、display 関数を追加します。"display" という名前は、SGSetDisplay() 関数で指定されていると思って下さい。SGSetDisplay() 関数に、hogehoge を設定 した場合は、hogehoge 関数を追加します。main 関数の上に書きましょう。下に書いた場合は、関数の前方宣言が必要になります。 よく分からない場合は、main 関数の上に書けば、問題ありません。ここでは、全文を載せます。

#include "sfcglx.h"

void display() {   
    BGColor(200, 200, 200);  // 背景の色
    SGBeginEdit();           // 形状の描画の開始.   
    SGEndEdit();             // 形状の描画の終了.   
    SGSwapFrames();          // フレームを入れ替える. 
}

int main(int argc, char** argv) {
    SGInit(argc, argv); // SGL の初期化

    // SGLX の初期化
    SGLXInit("C:\\Users\\Akito\\Documents\\MediaDesign3D\\1");

    SGOpenWindow(0,0,500,500); // 500x500のウィンドウ
    SGSetDisplay(display); // 描画
    SGCallBack(); // コールバック関数を登録
    return 0; 
}

ソースコードは以上です。早速、保存し、コンパイルし、実行してみましょう。下図のような灰色のウィンドウが表示されれば成功です。 課題に回答するボタンを押しました
お疲れ様でした。