Вы должны использовать потоковую передачу, если вы хотите отправить BLOB-объект напрямую. Существует сторонняя библиотека, предоставляющая эту функцию: https://cloud.google.com/storage/docs/boto-plugin#streaming-transfers
Как заметил Люк, код для создания и привязки контекста специфичен для каждой оконной платформы.
Вот несколько функций, которые помогут вам начать с точки зрения инициализации OpenGL на определенных платформах:
Windows (учебное пособие здесь )
Mac OS X - OS X по существу имеет три варианта: Carbon, Cocoa и базовый слой Core Graphics
Linux
Вы инициализируете окно с контекстом OpenGL. Это требует некоторых обращений к операционной системе. Невозможно инициализировать OpenGL только с помощью gl.h и glu.h. GLUT (или SDL , SMFL и т. Д.) Делает это для вас хорошо независимым от платформы способом. Вы также можете выполнить инициализацию с помощью собственных вызовов.
Вы можете получить исходный код GLUT ] и просмотрите код инициализации для любой интересующей вас платформы.
GL - это API, а GLU - это служебная библиотека поверх GL. Это полностью не зависит от операционной системы.
Инициализация OpenGL и выборка расширений зависят от платформы. Поэтому вы ничего не можете поделать с одним только OpenGL.
GLUT - это быстрая недостаточная и ужасно плохая библиотека, и только она инициализирует контекст opengl и предоставляет некоторые примитивные модули ввода с помощью мыши / клавиатуры, чтобы вы продолжали работу.
] Win32 также предоставляет инструменты для инициализации контекста opengl. Для linux вы можете проверить GLX. Кроме того, если вам нужен независимый от системы способ сделать это, вы можете проверить SDL.
Вот базовое и хорошее введение в то, как вы инициализируете OpenGL (предполагая окна) без использования GLUT:
Инициализируйте OpenGL без GLUT
Как сказал Люк, если вы не хотите использовать GLUT , вам нужна конкретная информация об операционной системе, в которой вы работаете. Использование GLUT упростит перенос вашего кода.