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