C言語+GLUT(マウス非表示)

前回は空白で区切ったXYZ座標の整数値データを作成しました。今回はこれをC言語で読み込んで3D表示を確認します。あと、マウスを非表示に変更します。

takk@deb9:~$ head out.txt
0 0 9
9 0 9
0 0 0
9 0 0
0 0 1
0 0 2
0 0 3
0 0 4
0 0 5
0 0 6

XYZ座標値だけでなく、ブロックIDも指定したいので、もう一つ値を追加します。1(土色のブロック)を追加しました。

takk@deb9:~$ sed 's/$/ 1/' out.txt > world_map.txt
takk@deb9:~$ head world_map.txt
0 0 9 1
9 0 9 1
0 0 0 1
9 0 0 1
0 0 1 1
0 0 2 1
0 0 3 1
0 0 4 1
0 0 5 1
0 0 6 1
takk@deb9:~$

このデータを読み込めるようにCプログラムを作ります。

     1  void cb_world_load()
     2  {
     3          FILE *fp;
     4          char readline[100],*p1, *p2, *p3,*p4;
     5
     6          cb_world_size = 0;
     7
     8          if ((fp = fopen("world_map.txt", "r")) == NULL) {
     9                  fprintf(stderr, "can not read world_map.txt");
    10                  exit(EXIT_FAILURE);
    11          }
    12
    13          while ( fgets(readline, 100, fp) != NULL ) {
    14                  if(strlen(readline) > 4){
    15                          p1 = strtok(readline, " ");
    16                          p2 = strtok(NULL, " ");
    17                          p3 = strtok(NULL, " ");
    18                          p4 = strtok(NULL, " ");
    19                          cb_world_map[cb_world_size][0]= atoi(p1);
    20                          cb_world_map[cb_world_size][1]= atoi(p2);
    21                          cb_world_map[cb_world_size][2]= atoi(p3);
    22                          cb_world_map[cb_world_size][3]= atoi(p4);
    23                          cb_world_size++;
    24                  }
    25          }
    26
    27          fclose(fp);
    28  }

main処理では元々あったランダム地形生成処理であるcb_world_createをコメントアウトして、cb_world_load理を呼ぶように修正。
あと、今回のタイトルになっているマウスカーソルを非表示にするAPIコールを追加(32行目)。

     1  int main(int argc, char *argv[])
     2  {
     4          cb_world_load();
     5  //      cb_world_create();
~省略~
    31
    32          glutSetCursor(GLUT_CURSOR_NONE);
    33
    34          glutMainLoop();
    35          return 0;
    36  }

実行すると以下のような画像になります。Blenderを使用して作った地形データは、一点だけ上に持ち上げていましたが、表示されている画像もそのようになってますね。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA