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)WIDTH, 1.0, 30.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0, 0.0, -10.0); } void display() { glClear(GL_COLOR_BUFFER_BIT); 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(); 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(); display(); SDL_Event event; while (SDL_WaitEvent(&event)) { if (event.type == SDL_QUIT) break; else if (event.type == SDL_KEYDOWN) { if (event.key.keysym.sym == SDLK_ESCAPE) break; } } SDL_Quit(); return 0; }