§ Основной файл

Подключение библиотек смотреть здесь
1#include <glut.cc>
2#include <stdio.h>
3
4glut win;
5
6void display()  {
7
8    for (int i = 0; i < 400; i++)
9    for (int j = 0; j < 640; j++)
10        win.pset(j, i, i + j);
11
12    win.update();
13}
14
15int main(int argc, char* argv[]) {
16
17    win.init("Example Window", 640, 400);
18
19    glutDisplayFunc(display);
20    glutIdleFunc(display);
21    glutMainLoop();
22
23    return 0;
24}

§ Код класса glut.cc

1#include <windows.h>
2#include <GL/glut.h>
3
4class glut {
5
6protected:
7
8    int width, height;
9    unsigned char* membuf;
10
11public:
12
13    glut()  { membuf = NULL; }
14    ~glut() { if (membuf) free(membuf); }
15
16    void init(const char* name, int w, int h) {
17
18        int argc = 0;
19        char* argv[1];
20        init(&argc, argv, name, w, h);
21    }
22
23    void init(int* argc, char** argv, const char* name, int w, int h) {
24
25        width  = w;
26        height = h;
27
28        glutInit(argc, argv);
29        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
30        glutInitWindowSize(width, height);
31        glutInitWindowPosition(0, 0);
32        glutCreateWindow(name);
33        glClearColor(0.0, 0.0, 0.0, 0.0);
34
35        glMatrixMode(GL_PROJECTION);
36        glLoadIdentity();
37        gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
38
39        membuf = (unsigned char*) malloc(width * height * 4);
40    }
41
42    // Нарисовать точку
43    void pset(int x, int y, unsigned int cl) {
44
45        if (x < 0 || y < 0 || x >= width || y >= height)
46            return;
47
48        int cursor = (x + y*width)*4;
49        membuf[cursor++] = cl>>16;
50        membuf[cursor++] = cl>>8;
51        membuf[cursor++] = cl;
52        membuf[cursor++] = 255;
53    }
54
55    // Обновить экран
56    void update() {
57
58        glRasterPos2i(-1, -1);
59        glDrawPixels(width, height, GL_RGBA, GL_UNSIGNED_BYTE, membuf);
60        glutSwapBuffers();
61    }
62};

§ Сборка

makefile
1all:
2	g++ main.cc -I. -mwindows -O3 glut32.lib -lopengl32 -lglu32 -o main.exe
3	strip main.exe
bat-file
1@echo off
2make
3if %errorlevel% neq 0 goto :stop
4main.exe
5goto :end
6:stop
7pause
8:end