§ Основной файл
Подключение библиотек смотреть здесь#include <glut.cc> #include <stdio.h> glut win; void display() { for (int i = 0; i < 400; i++) for (int j = 0; j < 640; j++) win.pset(j, i, i + j); win.update(); } int main(int argc, char* argv[]) { win.init("Example Window", 640, 400); glutDisplayFunc(display); glutIdleFunc(display); glutMainLoop(); return 0; }
§ Код класса glut.cc
#include <windows.h> #include <GL/glut.h> class glut { protected: int width, height; unsigned char* membuf; public: glut() { membuf = NULL; } ~glut() { if (membuf) free(membuf); } void init(const char* name, int w, int h) { int argc = 0; char* argv[1]; init(&argc, argv, name, w, h); } void init(int* argc, char** argv, const char* name, int w, int h) { width = w; height = h; glutInit(argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); glutInitWindowSize(width, height); glutInitWindowPosition(0, 0); glutCreateWindow(name); glClearColor(0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.0, 1.0, -1.0, 1.0); membuf = (unsigned char*) malloc(width * height * 4); } // Нарисовать точку void pset(int x, int y, unsigned int cl) { if (x < 0 || y < 0 || x >= width || y >= height) return; int cursor = (x + y*width)*4; membuf[cursor++] = cl>>16; membuf[cursor++] = cl>>8; membuf[cursor++] = cl; membuf[cursor++] = 255; } // Обновить экран void update() { glRasterPos2i(-1, -1); glDrawPixels(width, height, GL_RGBA, GL_UNSIGNED_BYTE, membuf); glutSwapBuffers(); } };
§ Сборка
makefileall: g++ main.cc -I. -mwindows -O3 glut32.lib -lopengl32 -lglu32 -o main.exe strip main.exebat-file
@echo off make if %errorlevel% neq 0 goto :stop main.exe goto :end :stop pause :end
12 авг, 2021
© 2007-2023 Сидел психический Мармок