initial build system and template SDL/OpenGL demo
This commit is contained in:
commit
56605c2900
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
game
|
15
Makefile
Normal file
15
Makefile
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
DC := gdc
|
||||||
|
TARGET := game
|
||||||
|
SOURCES := $(shell find src -iname '*.d')
|
||||||
|
OBJECTS := $(patsubst %.d,%.o,$(SOURCES))
|
||||||
|
DFLAGS := -I/usr/local/include/d
|
||||||
|
LDFLAGS := -lDerelictSDL -lDerelictGL -lDerelictGLU -lDerelictUtil -ldl -lGL -lGLU
|
||||||
|
|
||||||
|
all: $(TARGET)
|
||||||
|
|
||||||
|
$(TARGET): $(OBJECTS)
|
||||||
|
$(DC) -o $@ $^ $(LDFLAGS)
|
||||||
|
|
||||||
|
%.o: %.d
|
||||||
|
$(DC) -o $@ $(DFLAGS) -c $^
|
83
src/game.d
Normal file
83
src/game.d
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
import std.stdio;
|
||||||
|
import derelict.sdl.sdl;
|
||||||
|
import derelict.opengl.gl;
|
||||||
|
import derelict.opengl.glu;
|
||||||
|
|
||||||
|
enum int WIDTH = 800;
|
||||||
|
enum int HEIGHT = 600;
|
||||||
|
|
||||||
|
void init()
|
||||||
|
{
|
||||||
|
glClearColor (0.0, 0.0, 0.0, 0.0);
|
||||||
|
glShadeModel(GL_SMOOTH);
|
||||||
|
glViewport(0, 0, WIDTH, HEIGHT);
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
gluPerspective(60.0, cast(GLfloat)WIDTH/cast(GLfloat)HEIGHT, 1.0, 30.0);
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
glTranslatef(0.0, 0.0, -10.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void display()
|
||||||
|
{
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
glPushMatrix();
|
||||||
|
glRotatef(SDL_GetTicks() * 90.0 / 1000, 0, 0, 1);
|
||||||
|
glBegin(GL_QUADS);
|
||||||
|
glColor3f(1, 1, 1);
|
||||||
|
glVertex3f(5.0, 5.0, 0.0);
|
||||||
|
glColor3f(1, 0, 0);
|
||||||
|
glVertex3f(-5.0, 5.0, 0.0);
|
||||||
|
glColor3f(0, 0, 1);
|
||||||
|
glVertex3f(-5.0, -5.0, 0.0);
|
||||||
|
glColor3f(0, 1, 0);
|
||||||
|
glVertex3f(5.0, -5.0, 0.0);
|
||||||
|
glEnd();
|
||||||
|
glPopMatrix();
|
||||||
|
SDL_GL_SwapBuffers();
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(char[][] args)
|
||||||
|
{
|
||||||
|
DerelictSDL.load();
|
||||||
|
DerelictGL.load();
|
||||||
|
DerelictGLU.load();
|
||||||
|
|
||||||
|
if (SDL_Init(SDL_INIT_EVERYTHING))
|
||||||
|
{
|
||||||
|
writefln("Failed to initialize SDL!");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||||
|
|
||||||
|
SDL_Surface *screen = SDL_SetVideoMode(WIDTH, HEIGHT, 32, SDL_OPENGL);
|
||||||
|
if (screen == null)
|
||||||
|
{
|
||||||
|
printf("Failed to set video mode!\n");
|
||||||
|
SDL_Quit();
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
init();
|
||||||
|
SDL_Event event;
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
if (SDL_PollEvent(&event))
|
||||||
|
{
|
||||||
|
if (event.type == SDL_QUIT)
|
||||||
|
break;
|
||||||
|
else if (event.type == SDL_KEYDOWN)
|
||||||
|
{
|
||||||
|
if (event.key.keysym.sym == SDLK_ESCAPE)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
display();
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_Quit();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user