main.c // 初期化、ゲーム実行処理
#include "game.h" int main(int argc, char *argv[]){ // コマンドライン引数 int argcは引数の個数、char *argvは引数の文字列 gameInit(&argc, argv); gameRun(); return 0; }
game.h
#ifndef __HEADER_GAME #define __HEADER_GAME void gameInit(int *argc, char **argv); void gameRun(); #endif
game.c // glut初期化 ※glInit
#include "game.h" #include <GL/glut.h> #include "define.h" #include "display.h" void glInit(int *argc, char **argv); void gameInit(int *argc, char **argv){ glInit(argc, argv); } void gameRun(){ glutMainLoop(); } void glInit(int *argc, char **argv){ glutInit(argc, argv); glutInitDisplayMode(GLUT_DOUBLE); glutInitWindowPosition(100, 100); glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT); glutCreateWindow("myGame"); glutDisplayFunc(displayMain); }
define.h
#ifndef __HEADER_DEFINE #define __HEADER_DEFINE #define WINDOW_WIDTH 640 #define WINDOW_HEIGHT 480 #endif
display.h
#ifndef __HEADER_DISPLAY #define __HEADER_DISPLAY void displayMain(); #endif
display.c // ゲーム処理
#include "display.h" void displayMain(){ }
GNUmakefile // コンパイル
main: main.c game.o display.o gcc main.c game.o display.o -o main -lglut -lGLU -lGL game.o: game.c game.h define.h display.h gcc -c game.c -o game.o -lglut -lGLU -lGL display.o: display.c display.h gcc -c display.c -o display.o -lglut -lGLU -lGL clean: rm -rf main *.o
$ make
gcc -c game.c -o game.o -lglut -lGLU -lGL
gcc -c display.c -o display.o -lglut -lGLU -lGL
gcc main.c game.o display.o -o main -lglut -lGLU -lGL