Opengl для windows server 2012

Запуск OpenGL на Windows Server 2012 R2

Это должно быть просто, но по какой-то причине я не могу заставить это работать. Я нанял Softlayer Bare Metal Server, который поставляется с графическим процессором Nvidea Tesla.

Я удаленно выполняю программу (openScad), которая нуждается в OpenGL > 2.0 для правильного экспорта файла PNG. Когда я вызываю openScad и экспортирую модель, в качестве вывода я получаю png-файл размером 0 Кб, явный признак того, что поддержка OpenGL > 2.0 отсутствует.

Чтобы убедиться, что я использую openGL > 2.0, я подключился к своему серверу через RD и запустил GlView , К своему удивлению я увидел, что сервер не поддерживает ничего, кроме openGL 1.1.

После небольшого исследования я выяснил, что для стандартных сессий RD графический процессор не используется, поэтому имеет смысл видеть только openGL 1.1. Проблема в том, что когда я запускаю openscad remotley, кажется, что GPU тоже не используется.

Что я могу сделать для успешной работы графического процессора моего сервера при удаленном вызове openscad?

PS: я проверил с поддержкой softlayer, и они не несут никакой ответственности

2 ответа

Большинство (в настоящее время все) реализации OpenGL, которые используют GPU, предполагают, что есть какая-то система отображения, использующая этот GPU; в случае с Windows это будет GDI. Однако на безголовом сервере Windows обычно не запускает GDI на графическом процессоре, а использует некоторый кадровый буфер.

Графические процессоры NVidia Tesla продаются как устройства, предназначенные только для вычислений, и, следовательно, их драйвер не поддерживает какие-либо графические функции (обратите внимание, что это маркетинговое ограничение, реализованное в программном обеспечении, поскольку кремний прекрасно способен выполнять графику). Или другими словами: если вы можете реализовать свои графические операции с использованием CUDA или OpenCL, то вы можете использовать их для генерации изображений. В противном случае (т.е. для OpenGL или Direct3D) это бесполезно.

Обратите внимание, что NVidia продвигает свои продукты «GRID» для удаленного / облачного рендеринга.

Я отвечаю, потому что я сталкивался с подобной проблемой в прошлом; также пытается запустить приложение, которое требует openGL 4 на сервере Windows.

Windows Remote Desktop действительно не запускает OpenGL. Однако если вы используете вместо этого tigervnc, а затем запускаете приложение openScad, оно может распознать ваши драйверы opengl. По крайней мере, этот трюк сделал это для меня. (при открытии контекста openGL в программе он сканирует мониторы /RD, прикрепленные, я нажимаю).

Opengl для windows server 2012

Вопрос

подскажите вот на системник с процом i3-4150 / HD Graphics4400 поставил win 7 и в итоге opengl стоит 4.3
lnk
на тот же системник поставил windows server 2012 . Но в результате имею opengl 1.1
lnk
подскажите где взять драйвер или что там нужно чтобы на 2012ом получить opengl не ниже чем 1.4

материнка на системнике
Мат. плата ASUS P9D-X (RTL) LGA1150 PCI-E+SVGA+2xGbLAN SATA RAID ATX 4DDR3
Поставил драйвер от производителя материнки
lnk
lnk
В итоге opengl попрежнему 1.1

Ответы

Поясните что вы хотите в итоге реализовать либо получить?

По OpenGL все зависит от Видео подсистемы и драйверов, как правило серверные системы не ориентированы на графику по умолчанию, если вы хотите использовать сценарии VDI и технологию RemoteFX то тут используются далеко не дешевые GPU карты в том числе если использовать сервер как рабочую графическую станцию

Я не волшебник, я только учусь MCP, MCTS, CCNA. Если Вам помог чей-либо ответ, поКужалуйста, не забывайте жать на кнопку «Предложить как ответ» или «Проголосовать за полезное сообщение». Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть без каких-либо гарантий. Блог IT Инженера, IT Reviews, Twitter.

Читайте также:  Best terminal app linux

Настраиваем Windows для программирования OpenGL

Пост ориентирован на новичков. В нем не рассматривается настройка Visual Studio. Он научит вас настраивать некоторые текстовые редакторы на компиляцию OpenGL приложений, либо выполнять это из консоли вручную.

Недавно, наконец, вышло 8-е издание книги OpenGL programming guide, которую я ждал уже более чем 2 года. Чуть раньше я познакомился с замечательным текстовым редактором Sublime Text 2 и решил настроить его вместо установки тяжелой Visual Studio.

Итак, для начала нам нужен компилятор — я остановился на G++. Он является частью GCC, а его порт под Windows называется MinGW. С него и начнем:

MinGW

Качаем с официального сайта инсталлятор и запускаем его. Можно выбрать выкачивание свежих пакетов сразу при установке, либо обновить их вручную позже. Компиляторы Fortran, Ada и ObjC нам не понадобятся, их можно не ставить. MSYS Basic System может пригодится, его ставим. В качестве адреса я указал » C:\MinGW «, но если вас это смущает — можете выбрать другой, например, » C:\Program Files\Common Files\MinGW «.

После установки следует добавить к системной переменной PATH две новые папки: » MinGW\bin » и » MinGW\msys\1.0\bin «. Для этого заходим в Пуск -> Панель управления -> Система -> Дополнительные параметры системы; Во вкладке Дополнительно тыкаем внизу кнопку Переменные среды. Из списка системных переменных выбираем Path, и через точку с запятой дописываем полные адреса к папкам » MinGW\bin » и » MinGW\msys\1.0\bin «.

Если вы не выбирали выкачивание свежих пакетов при установке, следует обновить нужные пакеты вручную. Для этого открываем консоль (Win+R -> cmd ), и пишем следующие команды:
Обновит информацию о доступных пакетах,
Отобразит полные имена пакетов gcc и g++,
Обновит эти пакеты до последних доступных для MinGW версий.

Теперь, когда у нас есть компилятор, мы можем приступить к установке необходимых OpenGL библиотек.

Freeglut

Поскольку OpenGL это API, которое относится исключительно к графике — в него не входят функции по созданию окон или обработки устройств ввода. Тем более, решение этой задачи зависит от операционной системы. По-этому ее вынесли в отдельную библиотеку и назвали GLUT — OpenGL Utility Toolkit. Однако, последний релиз этой библиотеки был очень давно и сейчас ее подменила freeglut.

Качаем с официального сайта бинарники под MinGW. Распаковываем, freeglut.dll из папки bin кидаем в » C:\Windows\System32 » (для х86) или » C:\Windows\SysWOW64 » (для х64), или любую другую папку, которая указана в PATH. Содержимое папок include и lib можно скопировать либо в » MinGW\include » и » MinGW\lib » (так будет проще), либо в отдельные созданые папки » MinGW\freeglut\include » и » MinGW\freeglut\lib «.

На этом с freeglut все. Для его подключения нужно добавить #include

Библиотека glew позволяет определять что видеокарта поддерживает, а что — нет. Ее установка немного сложнее для нашего случая.
Качаем с официального сайта исходники, поскольку бинарники заточены под Visual Studio и нам не подойдут. Теперь эти исходники нужно скомпилировать. Я в этом практически ничего не понимаю, по-этому обратился к гуглу и нашел помощь здесь:
Распаковываем скачанный архив, открываем консоль, заходим в полученную папку и пишем следующие команды:
В результате в папке lib появилось 3 файла: glew32.dll , glew32.dll.a и glew32.a .
glew32.dll копируем туда же, куда ранее скопировали freeglut.dll , остальные 2 — в папку » MinGW\lib » либо » MinGW\glew\lib «.
Из папки include копируем содерижмое в » MinGW\include » или » MinGW\glew\include «.

Читайте также:  Linux mint boot menu

На этом с glew все. Для его подключения нужно добавить #include , но сделать это необходимо перед подключением других gl библиотек.

Проверяем работоспособность

Создаем минимальный test.cpp:

Обратите внимание на функцию glutInitContextVersion — она завершит выполнение программы если ей не удалось создать контекст для указаной версии OpenGL. Чтобы узнать версию OpenGL, которую поддерживает ваша видеокарта, можно заглянуть в ее спецификацию либо скачать бинарники glew с официального сайта и запустить glewinfo.exe из папки bin . Он сгенерирует файл glewinfo.txt , в котором будет детально расписано что ваша видеокарта поддерживает, а что — нет. Иногда функционал можно расширить установкой более свежего видеодрайвера.

Открываем консоль, заходим в папку с test.cpp и пишем следующую команду:
В случае, если вы создавали отдельные папки freeglut и glew , здесь необходимо дополнительно указать соответствующие дополнительные папки include и lib . Тогда пример команды выглядит так:

Флаг -Wl,—subsystem,windows указывает компилятору что он должен создать графическое приложение, а не консольное.
Если все получилось, должен получится файл test.exe , который при запуске создает белое окно 512х512.

Когда вы захотите поделится своим приложением, убедитесь что вместе с исполняемым файлом передаете используемые библиотеки — freeglut.dll и glew32.dll .

Sublime Text 2

Ну и напоследок, приведу пример настройки Sublime. Скачать его можно отсюда, вводные видео-уроки на английском языке можно глянуть здесь.
После установки открываем файл настройки билда С++:
» C:\Users\%Username%\AppData\Roaming\Sublime Text 2\Packages\C++\C++.sublime-build »
Сохраняем его копию как
» C:\Users\%Username%\AppData\Roaming\Sublime Text 2\Packages\User\C++\С++ OpenGL.sublime-build «

Строчку
дополняем подключением библиотек:

Аналогично, строчку
дополняем до
Если вы создавали отдельные папки под freeglut и glew, эти команды следует дополнить указанием адресов дополнительных папок include и lib .

Для того чтобы Sublime не отказывался выводить кириллицу в свою консоль, после
добавляем

Теперь, когда у нас открыт test.cpp , выбираем Tools -> Build system -> C++ OpenGL.
Нажимаем Ctrl+B для компиляции, Ctrl+Shift+B для компиляции и запуска.

UPD: Когда дело дошло до кода с gl-функциями из последних версий, выяснилось, что подключение заголовочного файла GL/gl.h недостаточно. В нем содержится устаревшая версия 1.1, и этот файл больше не обновляется. В дополнение к нему необходимо подключить GL/glext.h (последнюю версию которого надо скачать отсюда) и GL/wglext.h (отсюда). Для линукса последний файл заменяется GL/glxext.h (ссылка). Скачанными файлами нужно заменить их устаревшие версии по адресу » MinGW/include/GL/ «.

Привет

Русскоязычный информационно-болтологический форум

RDP server and OpenGL

RDP server and OpenGL

Post by DropAndDrag » Wed Jun 17, 2015 8:17 pm

Microsoft удивил снова и как чаще случается — неприятно!

В связи с тем, что 10 Gb сетевое оборудование в пределах комнаты стало недорогим, то появилась мысля, как упростить жизнь народу, у которого большие объемы данных, невзирая на вой сетевого гуру (сеть между зданиями 10 Gb). Мысля заключалась в следующем — сделать небольшой 10 Gb островок в здании. Несколько генераторов больших данных, файл-сервер и несколько мощных серверов на основе Windows Server 2012R2, который поддерживает SMB 3, будут включены в этот островок. А народ будет подключаться через RDP к этим серверам через 1 Gb сеть в здании.
Но была еще одна не задача — некоторые программы, которые как раз закусывают большиит объемами данных, не дружили с RDP. Не то чтобы совсем, но некоторые графики не показывались никак — черное окно! Сам я с этим не разбирался, народ, отплевываясь стал использовавть еще и VNC — запустит под VNC это чертово окно, а потом с RDP c ним возится

Наконец-то вчера IT радостно сообщило — Windows Server 2012R2 притащен и установлен к вашему удовольствию. Вы еще и администратор! Вчера установил программу — установилась, но она требует USB donkey за тысяч так 20 Сегодня договорился, взял ключик, программа заработала, загружаю файлик и говорю — показывай! А в ответ — черное окно

Читайте также:  Adblock для chrome для windows 10

Стал разбираться. Нашел лог программы — там много чего, но глаз зацепился за OpenGL. Порылся в Гугле и народ действительно ругается. Скачал тестовую программу — так и есть — пока сижу за компом -все ОК. Захожу через RDP — не работает.

На сайте OpenGL — народ пишет, что пипец. Надо толкать OpenGL окошки через что-то другое и как пример предлагается TeamView. Поискал на Microsoft — ни хрена не нашел, но нашел, что супер-пупер RemoteFX поддерживает карты с аппаратным OpenGL, но API поддерживает.

Может быть кто-то разбирался?

Re: RDP server and OpenGL

Post by Medium-rare » Fri Jun 19, 2015 8:23 am

Проблема в том, что высокопроизводительная графика на базе OpenGL оперирует напрямую памятью видеоадаптера. Вы хотите, чтобы Windows, которую обходят, дала вам картинку по сети. Для того есть RemoteFX, да, который «подглядывает», сильно упрощая, в картинку, и передаёт её вам по сети через RDP. Но тут RemoteFX надо уметь правильно «подглядывать» в *разные* видеоадаптеры, в хардвер, пишут вам о том.

IMHO, разрешимо через стандартизацию видеоадаптеров по стандартам MS, если почему-то производители тормозят с аппаратным OpenGL. Вы этого хотите? Вы же свободные умные в-микрософт-плюющие всё отлично понимающие люди.

Конкуренты MS как-то лучше разрулили проблему?

Re: RDP server and OpenGL

Post by StrangerR » Fri Jun 19, 2015 2:18 pm

Простите, а при чем тут видеоадаптер? При работе с консоли система работает с адапретом железным. При удаленной работе везде, кроме этих чудаков, система работает с так сказать виртуальным видеоадаптером (Frame Buffer в терминах X11). И какого черта винда этого не понимает?

Хотя это проблема не винды а OpenGL. Потому что да, идея работать с адаптером неплоха. только эта работа должна быть не там где программа а там где дисплей стоит, что на сегодня совпадает пожалуй только в случае ноутбука.

Re: RDP server and OpenGL

Post by Medium-rare » Fri Jun 19, 2015 2:34 pm

StrangerR wrote: Простите, а при чем тут видеоадаптер? .

Хотя это проблема не винды а OpenGL. Потому что да, идея работать с адаптером неплоха.

Re: RDP server and OpenGL

Post by DropAndDrag » Fri Jun 19, 2015 6:54 pm

Medium-rare wrote: Проблема в том, что высокопроизводительная графика на базе OpenGL оперирует напрямую памятью видеоадаптера. Вы хотите, чтобы Windows, которую обходят, дала вам картинку по сети. Для того есть RemoteFX, да, который «подглядывает», сильно упрощая, в картинку, и передаёт её вам по сети через RDP. Но тут RemoteFX надо уметь правильно «подглядывать» в *разные* видеоадаптеры, в хардвер, пишут вам о том.

IMHO, разрешимо через стандартизацию видеоадаптеров по стандартам MS, если почему-то производители тормозят с аппаратным OpenGL. Вы этого хотите? Вы же свободные умные в-микрософт-плюющие всё отлично понимающие люди.

Конкуренты MS как-то лучше разрулили проблему?

конкуренты — не интересны! есть проблема и интересно получить решение, и без заморочек!
RemoteFX был попробован моим коллегой на Windows 2008 Server пару лет назад — не получилось, но тогда он не добрался, что проблема с OpenGL. А теперь найдя в чем проблема очень удивительно, что Майкрософт ее до сих пор вроде бы не решил.
Если спросят мое ИМХО, то надо вырабатывать стандарт видеокард (при участии разработчиков ОС), а не следовать пожеланиям только Майкросовта. Все-таки много программ используют OpenGL и по идеи Майкрософту надо бы напрячься и сделать все путем или хотя бы написать wrapper OpenGLToDirectX.

Оцените статью