sdl-opengl-bare-d/sdl_opengl_bare.d
2013-02-02 21:37:31 -05:00

78 lines
1.6 KiB
D

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;
}