Что такое opengl и для чего он нужен
что это: для чего нужна такая поддержка?
Опубликовано 30.01.2020 автор Андрей Андреев — 0 комментариев
Здравствуйте, дорогие читатели! Сегодня мы с вами разберем OpenGL — что это такое, для чего используется, требуется ли что то настраивать для его эксплуатации.
Что это за программа
И сразу же хочу уточнить, что это вовсе не программа в привычном понимании, не драйвер, не протокол и не служба.
OpenGL — спецификация, которой определяется программный интерфейс для написания приложений, использующих 2D и 3D графику. По сути, это инструмент, который регулирует рендеринг изображения видеокартой.
Название расшифровывается как Open Graphics Library, то есть «Открытая графическая библиотека». Открытость инструмента означает, что им может воспользоваться любой разработчик без всякой маржи и лицензионных отчислений.
Инструмент кроссплатформенный: созданные с его помощью приложения будут работать в любой среде, которые осуществляют его поддержку.
При этом работать будут одинаково все в зависимости от мощности рабочей станции. Такая реализация освобождает разработчика от необходимости писать код под каждую конкретную платформу, что позволяет полностью сосредоточиться на графической составляющей.
Основные области применения OpenGL — видеоигры, системы автоматизированного проектирования, поддержка виртуальной реальности и визуализация различных проектов. На платформе Windows главным конкурентом технологии является DirectX.
О том, что такое DirectX и зачем он нужен, вы можете почитать вот тут.
Концепция OpenGL была разработана в 1982 году в университете Стэнфорда. Аппаратно прототип технологии впервые реализовала компания Silicon Graphics, создавшая конвейер для рендеринга. Ее разработки стали основой библиотек OpenGL.
Как работает OpenGL
Если смотреть с точки зрения разработчика, то OpenGL — программный интерфейс, который управляет работой видеокарты. Всего есть чуть более 150 команд, с помощью которых программист определяет, какие именно объекты будут отправлены на рендеринг.Этим же стандартом определяются более тонкие настройки: например, тройная буферизация, трассировка лучей или сглаживание в играх.
Нет необходимости создавать разные версии графических объектов для отображения в различных режимах качества графики: все подстраивается «на автомате», исходя из заданных программистов параметров.
Проще говоря, программист определяет отображаемые объекты в трехмерном пространстве, их взаимное положение и взаимодействие, масштабирование, угол обзора и т.д., а также цвет и текстуру, а OpenGL уже заботится об их рендеринге.
Можно утверждать, что этот инструмент только воспроизводит объекты, но не взаимодействует с устройствами ввода — мышью, клавиатурой, геймпадом или игровым рулем. За это, а также за работу менеджера окон, отвечают уже другие компоненты.
Несмотря на кажущуюся сложность, OpenGL имеет четко продуманную структуру и простой процедурный интерфейс. При этом с помощью этого инструмента можно создавать действительно сложные сцены, состоящие из множества компонентов. Вычислительных мощностей требуется меньше по сравнению с другими библиотеками.
Некоторые версии OpenGL поддерживают работу по сети: объекты рендерятся на сервере, а клиентское приложение получает только их отображение. Благодаря этому можно создавать мощные воспроизводящие комплексы, состоящие из множества компьютеров.
Следует отметить, что в отличие от главного конкурента OpenGL можно считать универсальным инструментом. Главный конкурент, DirectX, «заточен» именно под игры. Многие игры поддерживают обе технологии.
Нужно ли переключаться между ними? На мой взгляд, нет никакой разницы, что именно вы используете, Независимо от технологии существенной разницы в производительности не замечено, если речь идет о платформе Windows.
Если же вы используете эмулятор Андроид на ПК, в этом случае рекомендую переключиться OpenGL: для систем семейства Unix этот инструмент подходит больше.
Также рекомендую ознакомиться с публикациями «Что делать, если видеокарта не поддерживает DirectX» и «Как посмотреть параметры видеокарты». Буду признателен, если вы расшарите этот пост в социальных сетях. До скорой встречи!
С уважением, автор блога Андрей Андреев.
Друзья, поддержите блог! Поделитесь статьёй в социальных сетях:
Direct3D vs OpenGL: история противостояния / Хабр
По сей день в Интернете можно встретить споры о том, какой же графический API лучше: Direct3D или OpenGL? Несмотря на свой религиозный характер, такие словесные баталии приносят полезный результат в виде неплохих исторических обзоров развития аппаратно-ускоренной графики.
Целью данного поста является перевод одного из таких экскурсов в историю, написанного Джейсоном МакКессоном (Jason L. McKesson) в ответ на вопрос «Почему разработчики игр предпочитают Windows». Этот текст вряд ли отвечает на поставленный вопрос, но историю развития и противостояния двух самых популярных графических API он описывает очень красочно и довольно подробно, поэтому в переводе я сохранил авторскую разметку. Текст написан в середине 2011 года и охватывает промежуток времени, начинающийся незадолго до появления Direct3D и до момента написания. Автор оригинального текста является опытным разработчиком игр, активным участником StackOverflow и создателем обширного учебника о современном программировании 3D-графики. Итак, предоставим слово Джейсону.
Предисловие
Прежде чем мы начнём, я хотел бы сказать, что знаю больше об OpenGL, чем о Direct3D. В своей жизни я не написал ни строчки кода на D3D, но писал руководства по OpenGL. Но то, о чём я хочу рассказать — вопрос не предубеждения, а истории.
Рождение конфликта
Однажды, где-то в начале 90-х, Microsoft огляделись вокруг. Они увидели, что
SNESи
Sega Genesis— это очень здорово, на них можно поиграть во множество экшн-игр и всего такого. И они увидели ДОС. Разработчики писали досовские игры как консольные: близко к железу. Тем не менее, в отличие от консолей, где разработчик знал, какое железо будет у пользователя, дос-разработчики были вынуждены писать под множество конфигураций. А это намного сложнее, чем кажется.
Но у Microsoft была бо́льшая проблема: Windows. Видите ли, Windows хотела полностью владеть железом в отличие от ДОС, которая позволяла разработчикам делать всё что угодно. Владение железом необходимо для взаимодействия между приложениями. Но такое взаимодействие — это в точности то, что ненавидят разработчики игр, потому что оно потребляет драгоценные ресурсы, которые они могли бы использовать для всяких крутых вещей.
Для продвижения разработки игр на Windows, Microsoft нуждалась в однородном API, который был бы низкоуровневым, работал бы на Windows без потерь производительности, и был бы совместим с различным железом. Единый API для графики, звука и устройств ввода.
Так родился DirectX.
3D ускорители появились несколько месяцев спустя. И Microsoft вляпались в неприятности. Дело в том, что DirectDraw, графический компонент DirectX, работал только с 2D графикой: выделял графическую память и делал быстрые битовые операции между различными секторами памяти.
Поэтому Microsoft купили немного стороннего ПО и превратили его в Direct3D версии 3. Его ругали абсолютно все. И было за что: чтение кода на D3D v3 выглядело как расшифровка письменности исчезнувшей древней цивилизации.
Старик Джон Кармак в Id Software посмотрел на это безобразие, сказал «Да пошло оно...», и решил писать с использованием другого API: OpenGL.
Однако другая сторона этой запутанной истории заключалась в том, что Microsoft совместно с SGI работали над реализацией OpenGL для Windows. Идея была в том, чтобы привлечь разработчиков типичных GL-приложений для рабочих станций: САПР, систем моделирования и тому подобных вещей. Игры были последним, о чём они думали. В основном это касалось Windows NT, но Microsoft решили добавить OpenGL и в Windows 95.
Чтобы сманить разработчиков софта для рабочих станций на Windows, Microsoft решили подкупить их доступом к новомодным 3D-ускорителям. Они реализовали протокол для устанавливаемых клиентских драйверов: графическая карта могла заменить программный OpenGL от Microsoft своей аппаратной реализацией. Код автоматически использовал аппаратный OpenGL, если таковой был доступен.
Однако, в те времена потребительские видеокарты не имели поддержки OpenGL. Это не остановило Кармака от портирования Quake на OpenGL на рабочей станции SGI. В readme-файле GLQuake можно прочитать следующее:
Теоретически, glquake запустится на любой реализации OpenGL, которая поддерживает расширение texture objects. Но пока вы не запустите её на очень мощном железе, которое ускоряет всё, что нужно, работать она будет непростительно медленно. Если игре потребуется работать через какие-либо программные эмуляции, её производительность скорее всего не превысит один кадр в секунду.В настоящее время (март 1997), единственной полностью совместимой с opengl железкой, способной потянуть glquake на приемлемом уровне, является ОЧЕНЬ дорогая видеокарта intergraph realizm. 3dlabs существенно увеличили её производительность, но с имеющимися драйверами она всё ещё недостаточно подходит для игры. Некоторые из драйверов от 3dlabs для плат glint и permedia ещё и крэшат NT при выходе из полноэкранного режима, поэтому я не рекомендую запускать glquake на железе от 3dlabs.
3dfx предоставляет opengl32.dll, которая реализует все нужное для glquake, но это не полная реализация opengl. Другие opengl-приложения скорее всего с ней не заработают, поэтому рассматривайте её в основном как «драйвер для glquake».
Это было рождением miniGL драйверов. В конечном итоге они эволюционировали в полноценные реализации OpenGL, как только железо стало достаточно мощным для аппаратной поддержки этой функциональности. nVidia стала первой, кто предложил полную реализацию OpenGL. Другие поставщики всё ещё медлили, что стало одной из причин перехода разработчиков на Direct3D, поддерживаемый более широким спектром оборудования. В конце концов остались только nVidia и ATI (которая сейчас AMD), и у обеих имелись хорошие реализации OpenGL.
Рассвет OpenGL
Итак, участники определены: Direct3D против OpenGL. Это поистине удивительная история, учитывая то, как плох был D3D v3.
Совет по архитектуре OpenGL (Architectural Review Board, ARB) — это организация, ответственная за поддержание и развитие OpenGL. Они выпускают множество расширений, содержат репозиторий с расширениями, и создают новые версии API. ARB — это комитет, состоящий из большого количества игроков индустрии компьютерной графики и некоторых производителей ОС. Apple и Microsoft в разное время тоже были членами ARB.
3Dfx выходит на сцену со своей Voodoo2. Это первая видеокарта, позволяющая делать мультитекстурирование, которое не было ранее предусмотрено в OpenGL. В то время как 3Dfx была решительно против OpenGL, nVidia, следующий производитель чипа с мультитекстурированием (TNT1), были без ума от OpenGL. Тогда ARB выпустил расширение GL_ARB_multitexture, которое предоставляло доступ к множественным текстурам.
Тем временем появляется Direct3D v5. Теперь D3D действительно стал API, а не какой-то несуразицей. В чём же проблема? В отсутствии мультитекстурирования.
Упс.
Но это не доставляло таких неудобств, какие могло бы доставить, потому что почти никто не использовал множественное текстурирование. Мультитекстурирование почти не вредит производительности, и во многих случаях разница незаметна на фоне многопроходности. И конечно, разработчики игр очень любят чтобы их игры уверенно работали на старом железе, которое не имело поддержку множественных текстур, поэтому многие игры были выпущены без неё.
D3D вздохнул с облегчением.
Время шло, и nVidia выкатили GeForce 256 (не путать с самым первым GeForce GT-250), прекратив борьбу на рынке графических плат на следующие два года. Главным конкурентным преимуществом этой платы была возможность делать преобразования вершин и освещение (transformation & lighting, T&L) аппаратно. Но это ещё не всё: nVidia любила OpenGL настолько, что их T&L-движок фактически и был OpenGL. Почти буквально! Как я понимаю, некоторые из их регистров получали на вход напрямую численные значения переменных типа GLenum.
Выходит Direct3D v6. Наконец то подоспело множественное текстурирование… но без аппаратного T&L. В OpenGL всегда был T&L-конвейер, хотя до GeForce 256 он был реализован программно. Поэтому для nVidia оказалось довольно просто переделать программную реализацию в аппаратное решение. В D3D аппаратное T&L появилось только к седьмой версии.
Заря эпохи шейдеров, OpenGL во мгле
Затем появилась GeForce 3. В то же самое время произошло много интересных вещей.
В Microsoft решили, что они больше не собираются опаздывать. Поэтому вместо того, чтобы смотреть, что сделает nVidia, и копировать их разработки уже пост-фактум, Microsoft приняли изумительное решение: пойти и поговорить. И они полюбили друг друга, и у них появилась совместная маленькая консоль.
Шумный развод произошёл позже, но это совсем другая история.
Для рынка PC это значило, что GeForce 3 вышла одновременно с D3D v8, и нетрудно видеть, как GeForce 3 повлияла на шейдеры D3D v8. Пиксельные шейдеры Shader Model 1.0 были очень сильно заточены под оборудование nVidia. Не было предпринято ни единой попытки сделать хоть что нибудь для абстрагирования от железа nVidia. Shader Model 1.0 стала тем, для чего предназначена GeForce 3.
Когда ATI ворвалась в гонку производительности видеокарт со своей Radeon 8500, появилась одна проблема. Пиксельный конвейер Radeon 8500 оказался более мощным, чем у nVidia. Поэтому Microsoft выпустила Shader Model 1.1, которая в основном была тем, для чего предназначена 8500.
Это звучит как поражение D3D, но успех и провал — понятия относительные. На самом деле эпический провал поджидал OpenGL.
В nVidia очень любили OpenGL, поэтому после выхода GeForce 3 они выпустили целую пачку расширений для OpenGL. Проприетарных расширений, которые работали только на nVidia. Естественно, когда появилась плата 8500, она не могла использовать ни одно из них.
Итак, на D3D 8 вы могли хотя бы запустить шейдеры SM 1.0. Конечно, чтобы использовать всю крутость 8500, приходилось писать новые шейдеры, но код хотя бы работал.
Чтобы получить любые шейдеры на Radeon 8500 в OpenGL, ATI пришлось разработать несколько расширений для OpenGL. Проприетарных расширений, которые работали только на ATI. В итоге, чтобы разработчики могли заявить, что они прикрутили к своему движку шейдеры, им приходилось писать отдельный код для nVidia и отдельный код для ATI.
Вы возможно спросите: «А где же был комитет ARB, который должен поддерживать OpenGL на плаву?». А были они там, где в конечном итоге оказываются многие комитеты: они сидели и тупили.
Обратите внимание, выше я упомянул ARB_multitexture, потому что это расширение глубоко замешано во всей ситуации. Стороннему наблюдателю казалось, что ARB вообще хочет избежать идеи шейдеров. Они решили, что если они вбухают достаточно конфигурируемости в фиксированный конвейер, то он сравняется по своим возможностям с программируемым шейдерным конвейером.
ARB выпускали расширения одно за другим. Каждое расширение со словами «texture_env» в названии было попыткой залатать этот устаревающий дизайн. Посмотрите на список расширений: таких расширений было выпущено восемь штук, и многие из них были переведены в основную функциональность OpenGL.
В то время Microsoft входила в ARB, и покинула его только к выпуску D3D 9, поэтому возможно, Microsoft саботировали OpenGL некоторым образом. Лично я сомневаюсь в этой теории по двум причинам. Во-первых, они должны были бы заручиться поддержкой других членов Комитета, потому как каждый участник имеет всего один голос. Во-вторых, что более важно, Комитету не нужна была помощью Microsoft чтобы всё запороть, свидетельства чему мы увидим далее.
В итоге ARB, скорее всего под давлением ATI и nVidia (обе являются активными участниками), наконец очнулся и ввёл в стандарт ассемблерные шейдеры.
Хотите ещё более дурацкую историю?
Аппаратное T&L. Это то, что в OpenGL было изначально. Чтобы получить максимально возможную производительность аппаратного T&L, нужно хранить данные вершин на GPU. Все-таки, GPU — это основной потребитель вершинных данных.
В D3D v7 Microsoft ввела концепцию вершинных буферов, которые выделяют куски памяти в GPU и размещают там данные вершин.
Хотите знать когда в OpenGL появилась эквивалентная функциональность? Да, nVidia, как самый большой любитель OpenGL, выпустила своё расширение для хранения массивов вершин на GPU ещё во времена выхода GeForce 256. Но когда же ARB представил такую функциональность?
Два года спустя. Это было после того, как она утвердили вершинные и фрагментные (пиксельные в терминах D3D) шейдеры. Столько времени ушло у ARB чтобы разработать кросс-платформенное решение для хранения вершинных данных в памяти GPU. И это то, что необходимо, чтобы аппаратное T&L достигло максимальной производительности.
Один язык, чтобы убить их всех
Итак, OpenGL был сломан в течение какого-то времени. Отсутствовали кросс-платформенные шейдеры и аппаратно-независимое хранение вершин в GPU, в то время как пользователи D3D наслаждались и тем и другим. Могло ли стать ещё хуже?
Можно сказать, что могло. Встречайте: 3D Labs.
Вы спросите: кто же они? Они — мёртвая компания, которую я считаю истинным убийцей OpenGL. Конечно, общая несостоятельность Комитета сделала OpenGL уязвимым, в то время как он должен был рвать D3D в клочья. Но по-моему, 3D Labs — возможно единственная причина текущего положения OpenGL на рынке. Что они для этого сделали?
Они разработали язык шейдеров для OpenGL.
3D Labs были умирающей компанией. Их дорогостоящие GPU были вытеснены с рынка рабочих станций всё возрастающим давлением nVidia. И в отличие от nVidia, 3D Labs не были представлены на потребительском рынке; победа nVidia означала бы смерть для 3D Labs.
Что в итоге и случилось.
В стремлении оказаться на плаву в мире, которому были не нужны их продукты, 3D Labs заявились на конференцию Game Developer Conference с презентацией того, что они назвали «OpenGL 2.0». Это был OpenGL API, переписанный с нуля. И это имело смысл, ибо в те времена в API OpenGL было полно хлама (который, впрочем, остаётся там и по сей день). Посмотрите хотя бы на то, насколько эзотерически сделаны загрузка и биндинг текстур.
Частью их предложения был язык шейдеров. Да, именно он. Тем не менее, в отличие от имеющихся кросс-платформенных расширений, их язык шейдеров был «высокоуровневым» (C — это высокий уровень для языка шейдеров).
В это же время в Microsoft работали над своим собственным языком шейдеров. Который они, включив всё своё коллективное воображение, назвали… Высокоуровневым Языком Шейдеров (HLSL). Но их подход к языку был фундаментально иным.
Наибольшей проблемой языка от 3D Labs было то, что он был встраиваемым. Microsoft полностью самостоятельно определяла свой язык. Они выпустили компилятор, который генерировал ассемблерный код для шейдеров SM 2.0 (или выше), который, в свою очередь, можно было скармливать D3D. Во времена D3D v9, HLSL никогда не касался D3D напрямую. Он был хорошей, но необязательной абстракцией. У разработчика всегда была возможность взять выхлоп компилятора и подправить его для максимальной производительности.
В языке от 3D Labs ничего этого не было. Вы отдаёте драйверу C-подобный язык, и он создаёт шейдер. На этом всё. Никакого ассемблерного шейдера, ничего, что можно скормить чему-то ещё. Только объект OpenGL, представляющий шейдер.
Для пользователей OpenGL это означало, что они становились подвержены капризам разработчиков OpenGL, которые только научились компилировать ассемблероподобные языки. В компиляторах новорождённого языка шейдеров OpenGL (GLSL) свирепствовали баги. Что ещё хуже, если вам удавалось заставить шейдер корректно компилироваться на различных платформах (что уже само по себе было большим достижением), то он всё ещё был подвержен оптимизаторам тех времён, которые были не так уж оптимальны, как могли бы быть.
Это было большим, но не единственным недостатком GLSL. Далеко не единственным.
В D3D, как и в старых ассемблерных языках OpenGL, можно было смешивать и всячески комбинировать вершинные и фрагментные шейдеры. Можно было использовать любой вершинный шейдер с любым совместимым фрагментным шейдером, если они взаимодействовали через одинаковый интерфейс. Более того, допускалась даже некоторая несовместимость: например, вершинный шейдер мог подать на выход значение, которое не использовалось фрагментным шейдером.
В GLSL ничего такого не было. Вершинный и фрагментный шейдер сплавлялись воедино, образовывая нечто, названное компанией 3D Labs «программным объектом». Поэтому, для совместного использования нескольких вершинных и фрагментных шейдеров в различных комбинациях, приходилось создавать несколько программных объектов. Это стало причиной второй по величине проблемы.
3D Labs думали, что они самые умные. Они взяли C/C++ за основу для модели компиляции GLSL. Это когда вы берёте один c-файл и и компилируете его в объектный файл, а затем берёте несколько объектных файлов и компонуете их в программу. Именно так компилируется GLSL: сначала вы компилируйте вершинный или фрагментный шейдер в шейдерный объект, затем помещаете эти объекты в программный объект и компонуете их воедино чтобы наконец сформировать программу.
В теории это позволяло появиться таким крутым вещам, как «библиотечные» шейдеры, которые содержат код, вызываемый основным шейдером. На практике это приводило к тому, что шейдеры компилировались дважды: один раз на стадии компиляции и второй раз на стадии компоновки. В частности, этим славился компилятор от nVidia. Он не генерировал какой-либо промежуточный объектный код; он компилировал вначале, выбрасывал полученный результат и компилировал заново на стадии компоновки.
Таким образом, чтобы приделать вершинный шейдер к двум разным фрагментным шейдерам, приходилось компилировать намного больше, чем в D3D. Особенно с учётом того, что вся компиляция производится оффлайново, а не перед непосредственным исполнением программы.
У GLSL были и другие проблемы. Возможно, было бы неправильным сваливать всю вину на 3D Labs, ибо в конечном итоге ARB утвердили и включили в OpenGL язык шейдеров (но ничего больше из предложений 3DLabs). Однако, изначальная идея всё равно была за 3D Labs.
И теперь самое печальное: 3D Labs были правы (в основном). GLSL не векторный язык, каким в то время был HLSL. Так случилось потому, что железо 3D Labs было скалярным (как современное железо от nVidia), и они были полностью правы в выборе направления, которому позднее последовали многие производители оборудования.
Они были правы и с выбором модели компиляции для «высокоуровневого» языка. Даже D3D в итоге к этому пришёл.
Проблема в том, что 3D Labs были правы в неправильное время. И в попытках попасть в будущее преждевременно, в попытках быть готовыми к будущему, они отставили в сторону настоящее. Это выглядит как T&L-функциональность в OpenGL, которая была в нём всегда. За исключением того, что T&L-конвейер OpenGL был полезным и до появления аппаратного T&L, а GLSL был обузой до того как остальной мир догнал его.
GLSL — это хороший язык сейчас. Но что было в то время? Он был ужасен. И OpenGL пострадал от этого.
На подходе к апофеозу
Я поддерживаю ту точку зрения, что 3D Labs нанесли OpenGL смертельный удар, но последний гвоздь в крышку гроба забил сам ARB.
Возможно вы слышали эту историю. Во времена OpenGL 2.1, у OpenGL были большие проблемы. Он тащил за собой огромный груз совместимости. API больше не был простым в использовании. Одну вещь можно было сделать пятью разными способами и непонятно какой из них быстрее. Можно было «изучить» OpenGL по простым руководствам, но при этом вы не изучали тот OpenGL, который даёт настоящую графическую мощь и производительность.
ARB решили предпринять ещё одну попытку изобрести OpenGL. Это было как «OpenGL 2.0» от 3D Labs, но лучше, потому что за этой попыткой стоял ARB. Они назвали это «Longs Peak».
Что такого плохого в том, чтобы потратить немного времени на улучшение API? Плохо то, что Microsoft оказалась в довольно шатком положении. Это было время перехода на Vista.
В Vista Microsoft решили внести давно напрашивающиеся изменения в графические драйверы. Они заставили драйверы обращаться к ОС за виртуализацией графической памяти и многим другим.
Можно долго спорить о достоинствах такого подхода, и о том, был ли он вообще возможен, но факт остаётся фактом: Microsoft сделала D3D 10 только для ОС Vista и выше. Даже на поддерживающем D3D железе было невозможно запустить D3D приложение без Висты.
Вы возможно помните, что Виста… скажем так, работала не очень хорошо. Итак, у нас была неторопливая ОС, новый API, который работал только на этой ОС, и новое поколение железа, которое нуждалось в этом API и ОС чтобы делать нечто большее, чем просто превосходить предыдущее поколение в производительности.
Тем не менее, разработчики могли использовать функциональность уровня D3D 10 через OpenGL. То есть могли бы, если бы ARB не был занят работой над Long Peaks.
ARB потратили добрые полтора-два года, работая над улучшением API. Ко времени выхода OpenGL 3.0 переход на Висту закончился, Windows 7 была на подходе, и разработчиков игр больше не заботила функциональность уровня D3D 10. В конце концов, оборудование для D3D 10 прекрасно работало с приложениями на D3D 9. С увеличением темпов портирования с ПК на консоли (или с переходом ПК-разработчиков на консольный рынок), разработчикам всё меньше была нужна функциональность D3D 10.
Если бы разработчики получили доступ к этой функциональности даже на Windows XP, развитие OpenGL могло бы получить живительный заряд бодрости. Но ARB упустили эту возможность. А хотите знать что самое ужасное?
ARB не смогли изобрести API с нуля несмотря на трату двух драгоценных лет на попытки сделать это. Поэтому они вернули статус-кво, добавив лишь механизм для объявления функциональности устаревшей.
В итоге ARB не только упустили ключевые возможности, но и не выполнили ту работу, которая привела их к этому упущению. Это был epic fail по всем направлениям.
Такова история о противостоянии OpenGL и Direct3D. История упущенных возможностей, величайшей глупости, умышленного безрассудства и банальных нелепостей.
Знакомимся с OpenGL / Хабр
OpenGL
Знакомство с OpenGL нужно начать с того, что OpenGL — это
спецификация. Т.е. OpenGL лишь определяет набор обязательных возможностей. Реализация же зависит от конкретной платформы.
OpenGL является кроссплатформенным, независимым от языка программирования API для работы с графикой. OpenGL — низкоуровневый API, поэтому для работы с ним неплохо иметь некоторое представление о графике в целом и знать основы линейной алгебры.
Именования
Скажем пару слов об именовании функций в OpenGL. Во-первых имена всех функций, предоставляемых непосредственно OpenGL, начинаются с приставки
gl. Во-вторых функции, задающие некоторый параметр, характеризующийся набором чисел (например координату или цвет), имеют суффикс вида [число параметров + тип параметров + представление параметров].
- Число параметров — указывает число принимаемых параметров. Принимает следующие значения: 1, 2, 3, 4
- Тип параметров — указывает тип принимаемых параметров. Возможны следующие значения: b, s, i, f, d, ub, us, ui. Т.е. byte (char в C, 8-битное целое число), short (16-битное целое число), int (32-битное целое число), float (число с плавающей запятой), double (число с плавающей запятой двойной точности), unsigned byte, unsigned short, unsigned int (последние три — беззнаковые целые числа)
- Представление параметров — указывает в каком виде передаются параметры, если каждое число по отдельности, то ничего не пишется, если же параметры передаются в виде массива, то к названию функции дописывается буква v
Пример:
glVertex3ivзадает координату вершины, состоящую из трех целых чисел, передаваемых в виде указателя на массив.
Графика
Все графические объекты в OpenGL представляют собой набор точек, линий и многоугольников. Существует 10 различных примитивов, при помощи которых строятся все объекты. Как двухмерные, так и трехмерные. Все примитивы в свою очередь задаются точками — вершинами.
- GL_POINTS — каждая вершина задает точку
- GL_LINES — каждая отдельная пара вершин задает линию
- GL_LINE_STRIP — каждая пара вершин задает линию (т.е. конец предыдущей линии является началом следующей)
- GL_LINE_LOOP — аналогично предыдущему за исключением того, что последняя вершина соединяется с первой и получается замкнутая фигура
- GL_TRIANGLES — каждая отдельная тройка вершин задает треугольник
- GL_TRIANGLE_STRIP — каждая следующая вершина задает треугольник вместе с двумя предыдущими (получается лента из треугольников)
- GL_TRIANGLE_FAN — каждый треугольник задается первой вершиной и последующими парами (т.е. треугольники строятся вокруг первой вершины, образуя нечто похожее на диафрагму)
- GL_QUADS — каждые четыре вершины образуют четырехугольник
- GL_QUAD_STRIP — каждая следующая пара вершин образует четырехугольник вместе с парой предыдущих
- GL_POLYGON — задает многоугольник с количеством углов равным количеству заданных вершин
Для задания примитива используется конструкция
glBegin (тип_примитива)…glEnd (). Вершины задаются
glVertex*. Вершины задаются против часовой стрелки. Координаты задаются от верхнего левого угла окна. Цвет вершины задается командой
glColor*. Цвет задается в виде RGB или RGBA. Команда glColor* действует на все вершины, что идут после до тех пор, пока не встретится другая команда glColor* или же на все, если других команд glColor* нет.
Вот код рисующий квадрат с разноцветными вершинами:
- glBegin(GL_QUADS);
- glColor3f(1.0, 1.0, 1.0);
- glVertex2i(250, 450);
- glColor3f(0.0, 0.0, 1.0);
- glVertex2i(250, 150);
- glColor3f(0.0, 1.0, 0.0);
- glVertex2i(550, 150);
- glColor3f(1.0, 0.0, 0.0);
- glVertex2i(550, 450);
- glEnd();
Основы программы на OpenGL
Для платформонезависимой работы с окнами можно использовать библиотеку
GLUT. GLUT упрощает работу с OpenGL.
Для инициализации GLUT в начале программы надо вызвать
glutInit (&argc, argv). Для задания режима дисплея вызывается
glutInitDisplayMode (режим), где режим может принимать следующие значения:
- GLUT_RGBA — включает четырехкомпонентный цвет (используется по умолчанию)
- GLUT_RGB — то же, что и GLUT_RGBA
- GLUT_INDEX — включает индексированный цвет
- GLUT_DOUBLE — включает двойной экранный буфер
- GLUT_SINGLE — включает одиночный экранный буфер (по умолчанию)
- GLUT_DEPTH — включает Z-буфер (буфер глубины)
- GLUT_STENCIL — включает трафаретный буфер
- GLUT_ACCUM — включает буфер накопления
- GLUT_ALPHA — включает альфа-смешивание (прозрачность)
- GLUT_MULTISAMPLE — включает мультисемплинг (сглаживание)
- GLUT_STEREO — включает стерео-изображение
Для выбора нескольких режимов одновременно нужно использовать побитовое ИЛИ '|'. Например: glutInitDisplayMode (GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH) включает двойную буферизацию, Z-буфер и четырехкомпонентный цвет. Размеры окна задаются
glutInitWindowSize (ширина, высота). Его позиция —
glutInitWindowPosition (х, у). Создается окно функцией
glutCreateWindow (заголовок_окна).
GLUT реализует событийно-управляемый механизм. Т.е. есть главный цикл, который запускается после инициализации, и в нем уже обрабатываются все объявленные события. Например нажатие клавиши на клавиатуре или движение курсора мыши и т.д. Зарегистрировать функции-обработчики событий можно при помощи следующих команд:
- void glutDisplayFunc (void (*func) (void)) — задает функцию рисования изображения
- void glutReshapeFunc (void (*func) (int width, int height)) — задает функцию обработки изменения размеров окна
- void glutVisibilityFunc (void (*func)(int state)) — задает функцию обработки изменения состояния видимости окна
- void glutKeyboardFunc (void (*func)(unsigned char key, int x, int y)) — задает функцию обработки нажатия клавиш клавиатуры (только тех, что генерируют ascii-символы)
- void glutSpecialFunc (void (*func)(int key, int x, int y)) — задает функцию обработки нажатия клавиш клавиатуры (тех, что не генерируют ascii-символы)
- void glutIdleFunc (void (*func) (void)) — задает функцию, вызываемую при отсутствии других событий
- void glutMouseFunc (void (*func) (int button, int state, int x, int y)) — задает функцию, обрабатывающую команды мыши
- void glutMotionFunc (void (*func)(int x, int y)) — задает функцию, обрабатывающую движение курсора мыши, когда зажата какая-либо кнопка мыши
- void glutPassiveMotionFunc (void (*func)(int x, int y)) — задает функцию, обрабатывающую движение курсора мыши, когда не зажато ни одной кнопки мыши
- void glutEntryFunc (void (*func)(int state)) — задает функцию, обрабатывающую движение курсора за пределы окна и его возвращение
- void glutTimerFunc (unsigned int msecs, void (*func)(int value), value) — задает функцию, вызываемую по таймеру
Затем можно запускать главный цикл
glutMainLoop ().
Первая программа
Теперь мы знаем основы работы с OpenGL. Можно написать простую программу для закрепления знаний.
Начнем с того, что нужно подключить заголовочный файл GLUT:
- #if defined(linux) || defined(_WIN32)
- #include <GL/glut.h> /*Для Linux и Windows*/
- #else
- #include <GLUT/GLUT.h> /*Для Mac OS*/
- #endif
Теперь мы уже знаем, что писать в main. Зарегистрируем два обработчика: для рисования содержимого окна и обработки изменения его размеров. Эти два обработчика по сути используются в любой программе, использующей OpenGL и GLUT.
- int main (int argc, char * argv[])
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA); /*Включаем двойную буферизацию и четырехкомпонентный цвет*/
- glutInitWindowSize(800, 600);
- glutCreateWindow(«OpenGL lesson 1»);
- glutReshapeFunc(reshape);
- glutDisplayFunc(display);
- glutMainLoop();
- return 0;
- }
Теперь надо написать функцию-обработчик изменений размеров окна. Зададим область вывода изображения размером со все окно при помощи команды
glViewport (х, у, ширина, высота). Затем загрузим матрицу проекции
glMatrixMode (GL_PROJECTION), заменим ее единичной
glLoadIdentity ()и установим ортогональную проекцию. И наконец загрузим модельно-видовую матрицу
glMatrixMode (GL_MODELVIEW)и заменим ее единичной.
В итоге получим:
- void reshape(int w, int h)
- {
- glViewport(0, 0, w, h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluOrtho2D(0, w, 0, h);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- }
Осталось только написать функцию рисования содержимого окна. Рисовать будем тот квадрат, что я приводил выше в качестве примера. Добавить придется совсем немного кода. Во-первых перед рисованием надо очистить различные буфера при помощи
glClear (режим). Используется также как и glutInitDisplayMode. Возможные значения:
- GL_COLOR_BUFFER_BIT — для очистки буфера цвета
- GL_DEPTH_BUFFER_BIT — для очистки буфера глубины
- GL_ACCUM_BUFFER_BIT — для очистки буфера накопления
- GL_STENCIL_BUFFER_BIT — для очистки трафаретного буфера
В нашем случае нужно очистить только буфер цвета, т.к. другие мы не используем. Во-вторых после рисования нужно попросить OpenGL сменить экранные буфера при помощи
glutSwapBuffers (), ведь у нас включена двойная буферизация. Все рисуется на скрытом от пользователя буфере и затем происходит смена буферов. Делается это для получения плавной анимации и для того, чтобы не было эффекта
мерцанияэкрана.
Получаем:
- void display()
- {
- glClear(GL_COLOR_BUFFER_BIT);
- glBegin(GL_QUADS);
- glColor3f(1.0, 1.0, 1.0);
- glVertex2i(250, 450);
- glColor3f(0.0, 0.0, 1.0);
- glVertex2i(250, 150);
- glColor3f(0.0, 1.0, 0.0);
- glVertex2i(550, 150);
- glColor3f(1.0, 0.0, 0.0);
- glVertex2i(550, 450);
- glEnd();
- glutSwapBuffers();
- }
Итог
Все! Можно компилировать. Должно получиться что-то вроде этого:
Весь код целиком
(для кто не осилил статью).
В принципе ничего сложного в этом нет, по крайней мере если вы уже сталкивались с графикой до этого.
OpenGL — удобный инструмент для создания кроссплатформенных приложений, использующий графику. OpenGL легко использовать с тем языком программирования, который вам более удобен. Привязки к OpenGL есть для множества популярных языков, таких как C, C++, C#, Java, Python, Perl, VB и других. Посмотреть информацию о них можно на официальном сайте OpenGL.
Устранение проблем с OpenGL | After Effects CS4-CS5.5
В этом документе содержатся рекомендации по решению проблем, связанных с OpenGL, проявляющихся при использовании After Effects. Проблемы с OpenGL могут проявляться различным образом, включая (но не ограничиваясь) следующее:
- Adobe After Effects испытывает сбой или закрывается без ошибки при запуске.
- Сбой или зависание при очистке шкалы времени или предварительном просмотре или рендеринге композиции.
- Сбой при изменении настройки эффекта, когда включен предварительный просмотр OpenGL.
- Сбой или зависание при включении или отключении предварительного просмотра OpenGL.
- Перерисовка в окне композиции занимает очень много времени.
- Артефакты или блоки «мусорных» пикселов отображаются в окне композиции.
- Окно композиции отображается по-разному в браузере, когда предварительные просмотры OpenGL включены и отключены.
- Сообщение об ошибке, например:
«Предупреждение After Effects: Произошла ошибка при обработке команд OpenGL».
«Инструкция 0x00fe1940 ссылается на память по адресу 0x000000000. Память не может быть «read»».
«AE_OpenGL: не удалось создать карту теней (5065::0)»
«Данная композиция слишком сложна для аппаратного обеспечения OpenGL».
«Ошибка After Effects: AE_OpenGL: Ошибка создания текстуры. (5065 :: 0)»
Сведения о том, как настраивать параметры предварительного просмотра в After Effects для OpenGL, и список новых функций в After Effects, которые могут выполняться с помощью OpenGL, см. в разделе Рендеринг с помощью OpenGL в справке по After Effects.
Для того, чтобы данный документ принес вам пользу, выполняйте приведенные в нем задания по порядку. Запишите задания, которые вы выполняете, и запишите результаты каждого задания, в том числе ошибки и иные проблемы. Служба технической поддержки Adobe сможет использовать эту информацию, чтобы помочь вам в устранении неполадки.
Для того, чтобы произвести некоторые процедуры, перечисленные в этом документе, вы должны войти в систему как администратор.
В Windows, для некоторых из этих процедур требуется определение местонахождения скрытых файлов и скрытых папок. Для некоторых процедур требуется поиск файлов по их полному имени, включая расширения (например, example_filename.ini). По умолчанию Проводник Windows не показывает скрытые файлы и папки, а также расширения имен файлов, которые он распознает. См. Показать скрытые файлы и папки в Windows для получения подробной информации.
Для Windows Vista, упомянутые в данном документе уровни, которые ссылаются на Панель управления, являются ссылками на ее классический вид. Для получения информации о переключении Панели управления в классический вид и многих других общих процедурах операционной системы см. раздел Общие процедуры операционной системы.
Приведенные ниже рекомендации помогут вам решить самые распространенные проблемы, связанные с OpenGL. Перед выполнением любого из указанных действий создайте резервные копии всех личных файлов (например, созданных вами файлов After Effects). После обнаружения системной ошибки всегда перезагружайте компьютер, чтобы обновить память. Если Вы продолжите работу без перезагрузки компьютера, это может лишь усугубить проблему.
Настройки производительности с OpenGL - 2021
Чтобы изменить параметры системы, нажмите кнопку Параметры (панель инструментов "Стандартная") или .Использовать программу OpenGL выбран
- Включить:
Высокое качество для нормального вида
(Параметры быстродействия)
- Выключить:
Высокое качество для динамического вида
(Параметры быстродействия)
Отобразить закрашенные плоскости
(Параметры отображения и выбора)
Верхний/нижний полутоновой переход цветов
(Параметры цвета)
Отобразить плоскость при оттенении
(Параметры эскиза)
Тени
(Нажмите кнопку Просмотр настроек (панель инструментов Отображение поверх окна вида) и отключите Тени в режиме Закрасить)
Использовать программу OpenGL не выбрана
- Включить:
Высокое качество для нормального вида
(Параметры быстродействия)
Высокое качество для динамического вида
(Параметры быстродействия)
Плавный полутоновой переход цвета (Верхний/нижний переход цвета)
(Параметры цвета)
Отобразить закрашенные плоскости
(Параметры отображения и выбора)
Тени
(Нажмите кнопку Просмотр настроек (панель инструментов Отображение поверх окна вида) и отключите Тени в режиме Закрасить)
- Выключить:
Отобразить плоскость при оттенении
(Параметры эскиза)
изучайте технологии для программирования 2D и 3D графики, 3D моделирования, методы работы с операционными системами и многое удругое.
OpenGL (Open Graphics Library — открытая графическая библиотека, графический API) — спецификация, определяющая независимый от языка программирования платформонезависимый программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.Подробнее, что такое OpenGL
просмотров:
12 938комментариев:
2обновлено:
19.06.2017 Проигрывание видео-заставки в C# Данный урок основывается на авторской публикации пользователя. В нем речь пойдет о быстром и простом в реализации способе проиграть видео на основной форме окна приложения с помощью COM элемента Windows Media Player.просмотров:
3 805комментариев:
0обновлено:
19.06.2017 Загрузка .X (DirectX) файлов в OpenGL Данный урок основывается на авторской публикации пользователя. Так как OpenGL - это кросс-платформенная библиотека, которая была написана для вывода графики, а не для работы с файловой системой и потоками, поэтому в ней нет встроенных решений для загрузки трехмерных объектов (<b>Meshs</b>) из файла. В этом уроке вы научитесь загружать файл .X (DirectX).просмотров:
12 264комментариев:
0обновлено:
19.06.2017 Создание класса Камеры (C#, TaoFramework) Данный урок основывается на авторской публикации пользователя. В нем вы познакомитесь с технологией создания камеры с видом как от первого, так и от третьего лица, научитесь поворачивать и перемещать ее. Для этого понадобится разобраться с командой библиотеки Glu - GluLookAt, которая принимает три набора аргументов.просмотров:
4 614комментариев:
0обновлено:
19.06.2017 Звук в игре (мультимедиа, С++) Данный урок основывается на авторской публикации пользователя. В нем вы научитесь создавать код для воспроизведения звуковых файлов с помощью простой и удобной библиотеки Audiere (C++). Audiere - это доступная и несложная, кроссплатформенная, высокоуровневая библиотека для воспроизведения звуковых файлов.просмотров:
3 915комментариев:
0обновлено:
19.06.2017 Проигрывание видео (Microsoft.DirectX.AudioVideoPlayback) Данный урок основывается на авторской публикации пользователя. В нем вы познакомитесь с методом проигрывания видео контента на форме приложения с использованием Microsoft.DirectX.AudioVideoPlayback. В статье будет рассмотрена возможность воспроизведения видео, а также обработка события нажатия клавиши для остановки воспроизведения видео-контентапросмотров:
9 917комментариев:
0обновлено:
19.06.2017 GLFW. Скелет OpenGL приложения со сглаживанием. (C/C++) Данный урок основывается на авторской публикации пользователя. В нем вы научитесь создавать приложения с использованием OpenGL в связке с библиотекой GLFW. GLFW - бесплатная кроссплатформенная библиотека для создания оконных приложений, позволяющая быстро реализовывать поддержку OpenGL 3.2 в вашем приложении. Кроме того, она предлагает множество дополнительных возможностей, таких как работа с несколькими окнами, несколькими мониторами и поддержка большого количество устройств ввода.просмотров:
10 497комментариев:
3обновлено:
19.06.2017 OpenGL. Убрать консольное окно (С/C++) Данный урок основывается на авторской публикации пользователя. У многих при использовании библиотек (GLUT, GLFW), создающих окна и контекст OpenGL, возникает необходимость убрать консоль, которая появляется вместе с запуском OpenGL-приложения. В данном уроке вы познакомитесь с простым и коротким способом, который избавит вас от этой проблемы.просмотров:
7 185комментариев:
5обновлено:
19.06.2017 Использование Freetype. Получение битового образа символов Данный урок основывается на авторской публикации пользователя. В нем вы подробнее познакомитесь с библиотекой Freetype, которая позволяет читать файлы шрифтов, таких как TrueType fonts, OpenType fonts, BDF fonts и многие другие. Кроме того, с ее помощью можно извлекать битовые образы глифов, а также различную дополнительную информацию о шрифтах и глифах, необходимую для их правильной отрисовки.просмотров:
8 263комментариев:
0обновлено:
20.06.2017 C#/Tao.framework. Простой способ отобразить текст в OpenGL Данный урок основывается на авторской публикации пользователя. Задача отрисовки текста в OpenGL обычно сводится к рисованию прямоугольников с натянутой текстурой, на которой отображена та или иная буква. Затем нужно располагать их друг относительно друга так, чтобы получались слова. На C# это делается очень легко с помощью встроенных методов класса Graphics.просмотров:
10 985комментариев:
3обновлено:
20.06.2017 Создание онлайн-игры: основы Автор: | Теги: online Данный урок основывается на авторской публикации пользователя. В этой статье вы познакомитесь с базовыми понятиями, в которых необходимо разбираться разработчику для создания онлайн-игры, а также увидите, как можно создать простейший сервер на платформе .NET с использованием протокола TCP/IP.OpenGL в фотошопе
OpenGL — это спецификация, которая помогает графическим контроллерам (видеокартам) современных компьютеров быстрее и эффективнее рисовать графику.
Чтобы определить, поддерживает ли ее ваш компьютер, перейдя в меню Редактирование — Установки — Производительность. Если установлен флажок Включить отрисовку OpenGL, значит все включено.
Если флажок не установлен, но вы можете установить его, сделайте это.
Если параметр затемнен серым цветом (то есть вы не можете установить флажок), значит графический контроллер вашего компьютера не достаточно производителен или у него недостаточно памяти для запуска OpenGL в фотошопе.
Параметр Включить отрисовку OpenGL активирует определенные функции и расширенные дополнительные элементы интерфейса. Эти параметры вступают в силу только для новых документов.
Он активируют следующие функции фотошопа:
- поворот вида;
- масштабирование с высоты птичьего полета;
- пиксельная сетка;
- настройка «Захват рисования»;
- масштаб перетаскиванием;
- палитра цветов HUD;
- кольцо пробы;
- изменение размера и жесткости кисти на холсте;
- предварительный просмотр кончика щетины;
- чеканка.
Отвечает за следующие улучшения:
- плавное панорамирование и масштабирование;
- наложение теней для границ холста;
- ускорение взаимодействия с 3D-объектами;
- виджет 3D-оси;
- 3D-наложения.
Также большинство установок 3D-эффектов выключены, если отключена отрисовка OpenGL.
Заметили ошибку в тексте - выделите ее и нажмите Ctrl + Enter. Спасибо!
Почему следует использовать OpenGL, а не DirectX | Ubuntu — Linux — Новости
Как получилось, что OpenGL, несмотря на доступность на всех популярных платформах, проигрывает DirectX, работающему только на продуктах Microsoft? Что сделала Microsoft, чтобы уничтожить OpenGL? В чем преимущества решений открытого программирования и, наконец, что делать, чтобы оздоровить игровой рынок. Обо всем этом сами производители игр рассказывают в записи ниже.Переведено с сайта blog.wolfire.com с согласия автора: Адриан Новак.
Часто, когда мы встречаемся с разработчиками игр и говорим, что используем OpenGL для нашей игры Overgrowth, мы сталкиваемся с огромным недоверием — зачем кому-то использовать OpenGL? DirectX — это будущее. Когда мы сообщаем производителям видеокарт, что используем OpenGL, температура в помещении падает на десять градусов.
Это отличает нас. Хорошо известная философия гиков заключается в том, что веб-сайты, основанные на стандартах, должны использовать безупречные Silverlight, Flash или ActiveX. Программирование с использованием мультиплатформенных технологий похвально и мудро.У меня нет внутреннего уважения к гикам, работающим с закрытыми документами Word или серверами Exchange. Где этот мир, где разработчики программного обеспечения не только в восторге от нового проприетарного API Microsoft, но и активно поддерживают открытые стандарты конкуренции?
Прежде чем мы углубимся в то, почему мы поддерживаем OpenGL, давайте начнем с немного истории:
Что такое OpenGL?
В 1982 году Silicon Graphics начала продавать графические терминалы с использованием проприетарного API под названием Iris GL (GL означает «графическая библиотека»).С годами Iris GL «раздулся» до такой степени, что дальше управлять было сложно — пока Silicon Graphics не пошла на радикальный шаг: полностью перестроила Iris GL и сделала его открытым стандартом. Их конкуренты могли использовать Open Graphics Library (OpenGL), но взамен им приходилось помогать им расширять и поддерживать библиотеки в актуальном состоянии.
Сегодня OpenGL находится под контролем Khronos Group — некоммерческой организации, в которую входят представители многих компаний, заботящихся о создании качественного мультимедийного API.На более низком уровне всем этим управляет Совет по обзору архитектуры OpenGL (ARB). OpenGL поддерживается на всех игровых платформах, включая Mac, Windows, Linux, PS3 (как оверлей GCM), Wii, iPhone, PSP и DS. На самом деле, все игровые платформы, кроме XBox, что подводит нас к следующей теме:
Что такое DirectX
Еще со времен MS-DOS Microsoft поняла, что запуск игр является важным аспектом для пользователей, выбирающих операционную систему. По этой причине в 1995 году они создали набор проприетарных библиотек, чтобы поощрять использование эксклюзивных игр для их новой операционной системы Windows 95.Эти библиотеки включали Direct3D, DirectInput и DirectSound, и вся коллекция была объявлена как DirectX. Когда Microsoft открыла игровой рынок в 2001 году, она также представила DirectX Box, или сокращенно XBox. XBox понесла огромные убытки (утонув более 4 миллиардов долларов), но подготовила почву для доминирования в играх в будущем выпуске.
Глядя на игровой рынок сейчас, становится ясно, что их стратегия была правильной. Большинство ПК используют DirectX для запуска игр и подготовлены как для Windows, так и для Xbox 360.За некоторыми исключениями, они не работают на конкурирующих платформах, таких как Playstation, Mac OS или Wii. Это слишком важные рынки, чтобы их игнорировать, так что вот еще один большой вопрос:
Почему все используют DirectX?
Все используют DirectX, потому что выбор API для игры во многом связан с прошлым, которое сформировалось в пользу DirectX в 2005 году.
Это эффект петли, потому что, когда один API становится популярным, он получает все больше и больше поддержки.Одним из важнейших проявлений этого является то, что известный API получает лучшую поддержку от производителей видеокарт, а программисты охотнее обучаются на популярных решениях.
API DirectX популяризировался в кампаниях по продвижению Xbox 360 и Windows Vista, включая FUD (распространение страха, неуверенности и сомнений) по поводу будущего OpenGL и преувеличение возможностей DirectX. С тех пор все время отвращение к OpenGL росло, пока его практически не вытеснили с рынка популярных компьютерных игр.
1. Сетевой эффект и замкнутый круг
Дело в том, что в Windows чаще предоставляются графические драйверы для DirectX, чем для соответствующего OpenGL. Это связано с замкнутым кругом поддержки со стороны производителей. Разработчики игр переходят с OpenGL на DirectX и по другим причинам: производители видеокарт (поставщики) получают меньше отчетов об ошибках своих драйверов, расширений и документации OpenGL. По этой причине качество драйверов OpenGL ухудшается, что приводит к еще большему переходу от OpenGL к DirectX.
Цикл повторяется.
Точно так же факт заключается в том, что больше разработчиков игр знают, как использовать DirectX, чем OpenGL, поэтому дешевле (требуется меньше практики) создавать игры с использованием DirectX, чем OpenGL. Это результат еще одного порочного круга: чем больше игр используют DirectX, тем больше разработчиков учатся его использовать. Чем больше разработчики узнают, как его использовать, тем дешевле становится разрабатывать игры с использованием DirectX по сравнению с OpenGL.
2. OpenGL и Vista FUD
Microsoft привнесла страх, неуверенность и сомнения (FUD) в отношении OpenGL во время запуска Windows Vista.В 2003 году Microsoft покинула Совет по обзору архитектуры OpenGL, показав, что у них больше нет интереса к OpenGL. В 2005 году они сделали презентацию на SIGGRAPH (группа по интересам для графики) и WinHEC (конференция по разработке оборудования для Windows), подчеркнув, что Windows Vista удалит поддержку OpenGL, за исключением обратной совместимости для приложений с XP. Эта версия OpenGL будет слоем OpenGL, как показано здесь (из презентации HEC), и будет настоящим хитом производительности.Эта кампания вызвала панику в сообществе OpenGL, в результате чего многие профессиональные разработчики перешли на DirectX.
Когда была выпущена Vista, появилась возможность вернуться к поддержке OpenGL, создав ICD (устанавливаемые клиентские драйверы). Затем команда разработчиков OpenGL разослала информационные бюллетени, в которых заверяла их, что OpenGL по-прежнему остается первоклассным продуктом и что производительность OpenGL в Vista по-прежнему сравнима с Direct3D. К несчастью для OpenGL, ущерб оказался необратимым — доверие общественности к OpenGL было сильно подорвано.
3. Запутанные маркетинговые кампании
Кампании по продвижению Windows Vista и Windows 7 были сильно направлены на продвижение DirectX, часто показывая скриншоты «до» и «после» разных версий DirectX. Многие геймеры теперь думают, что переход с DirectX 9 на DirectX 10 волшебным образом изменил их графику с очень плохой на нормальную (как в сравнении выше) или с Halo 1 на Crysis. Игровые журналисты доказали, что разницы между Crysis на DX9 и DX10 нет, и эти "функции DX10" прекрасно работают с DX9 после редактирования конфигурационного файла. Несмотря на очевидные неточности, маркетинговые усилия убедили многих геймеров в том, что обновления DirectX — единственный способ получить доступ к функциям новейших видеокарт.
Несмотря на огромную долю Microsoft на игровом рынке, многие сообразительные разработчики, такие как Джон Кармак, отказались участвовать в этом расширении. Он сказал об этом так: «Лично я бы пока не стал переключаться на что-то вроде DX10. Вы должны дать вещам некоторое время, чтобы стабилизироваться и посмотреть, действительно ли есть острая необходимость в изменениях.".
Так почему же мы используем OpenGL?
Учитывая тот факт, что OpenGL меньше поддерживается производителями, больше не используется в играх, подвергается активным атакам со стороны Microsoft и не имеет маркетингового ажиотажа - почему мы должны продолжать использовать его? Разве не было бы выгоднее использовать DirectX, как и все остальные? Нет, потому что на самом деле OpenGL более мощный, чем DirectX, поддерживает больше платформ и необходим для будущего игр.OpenGL мощнее, чем DirectX
Общеизвестно, что OpenGL отрисовывает быстрее, чем DirectX (см., например, демонстрацию NVIDIA, если не верите мне на слово) и имеет первый доступ к новым функциям графического процессора через расширения поставщиков. OpenGL обеспечивает легкий доступ ко всем новым графическим функциям на всех платформах, в то время как DirectX лишь изредка предоставляет моментальные снимки в последних версиях Windows.
Технология тесселяции, которую Microsoft активно продвигала в DirectX 11, уже три года является расширением OpenGL.За это время его можно было использовать для быстрого заполнения трехмерного пространства повторяющимся мотивом. Я не знаю, какие новые технологии будут представлены в ближайшие годы, но я знаю, что они будут доступны в OpenGL раньше.
Microsoft усердно работала над DirectX 10 и 11, и теперь они работают почти так же быстро, как OpenGL, и предоставляют почти такую же функциональность. Однако есть одна большая проблема: они не работают в Windows XP! Половина компьютеров геймеров все еще использует XP, поэтому использование DirectX 10 или 11 невозможно.Если вы действительно хотите предоставить наилучшую графику как можно большему количеству игроков, у вас нет выбора, кроме OpenGL.
2. OpenGL является мультиплатформенным
Более половины пользователей Ligary используют Mac или Linux, и мы не удивимся, если то же самое произойдет и с нашей новой игрой Overgrowth. Когда мы разговариваем с большинством разработчиков игр, мы слышим, что поддержка Mac или Linux — пустая трата времени. Ведь мы никогда не видели доказательств этого тезиса.Blizzard всегда предлагает релизы для Mac одновременно с другими, и это одна из крупнейших игровых компаний в мире! Если они делают что-то отличное от всех остальных, они, вероятно, правы.
Как сказал Джон Кармак, когда его спросили, что, если бы Rage была игрой DirectX: «Это по-прежнему OpenGL, даже несмотря на то, что она явно использует D2D API [на Xbox 360] и CF на PS3. Интересно, как мало технологии заботятся о том, какой API вы используете. и какого вы поколения.У вас есть удобный небольшой набор файлов, которые учитывают это, и миллионы строк кода, которые не имеют значения, на какой платформе они работают.«Если вы можете покорить все платформы с помощью OpenGL, зачем стрелять себе в ногу с помощью DirectX?
Даже если все, что вы ожидаете, это пользователи Windows, позвольте мне напомнить вам, что до сих пор половина компьютеров работает под управлением Windows XP, и они просто не будут поддержите свою игру, если хотите.использовали последние версии DirectX Единственный способ предоставить новейшие графические функции геймерам на Windows XP (крупнейшая игровая платформа) — через OpenGL
3.OpenGL лучше подходит для будущего игр
OpenGL — это некоммерческий стандарт, разработанный для того, чтобы пользователи всех платформ могли наслаждаться самыми передовыми графическими эффектами, которые может обеспечить их аппаратное обеспечение. Его разрушает монополия, корпоративный гигант, пытающийся доминировать над проектами, которые слишком молоды, чтобы защитить себя. После того, как Direct3D стал единственным игровым API, поддерживаемым Windows, Microsoft пытается доминировать на рынке компьютерных игр.
Нам нужна конкуренция и свобода, чтобы снизить цены и повысить качество.Монополия Microsoft на игровом рынке очень плоха как для геймеров, так и для разработчиков игр.
Может ли OpenGL снова стать популярным?
Возвращаясь к 1997 году, ситуация похожа на нынешнюю. Microsoft запустила масштабную маркетинговую кампанию для Direct3D, и скоро все будут «просто знать», что он быстрее и лучше, чем OpenGL. Ситуация начала меняться после того, как Крис Хекер опубликовал открытое письмо с критикой DirectX. Вскоре после этого Джон Кармак опубликовал свою знаменитую декламацию об OpenGL и вложил свои деньги в перевод всех игр Id Software на OpenGL, раз и навсегда убедившись, что DirectX не нужен для новых 3D-игр.
Кажется, за последние несколько лет этот урок был забыт. Большинство разработчиков игр поддались маркетингу DirectX или сетевому эффекту. Пришло время отбросить пелену рекламы и слухов и посмотреть, что происходит на самом деле. Если вы используете DirectX, вам придется выбирать между медленным DirectX9 или пожертвовать большей частью своей пользовательской базы (используя XP) и выбрать DirectX 10 или 11.
С другой стороны, если вы используете OpenGL, вы будете работать быстрее и более эффективные графические функции, чем с DirectX 11, и вы сможете использовать их на всех версиях Windows, Mac, Linux, а также на PS3, Wii, PSP, DS и iPhone.Вы также можете получить их, воспользовавшись быстро развивающимся стандартом WebGL, который может заложить основу для следующего поколения браузерных игр.
Если вы разработчик, все, о чем я прошу, это провести подробное исследование, сравнить и, наконец, решить, является ли OpenGL лучшим выбором. Некоторые разработчики предпочитают стиль API DirectX 11, а не OpenGL, однако вы также будете использовать его на уровне абстракции низкого уровня, поэтому это не должно быть решающим моментом.Если вам что-то не нравится в OpenGL, просто отправьте электронное письмо в ARB, чтобы они изменили это — они готовы вам помочь!
Если вы геймер, который использует Windows XP, Mac или Linux, я надеюсь, вы понимаете, что DirectX существует только для того, чтобы не допускать появления новых игр на вашей платформе, и единственный способ изменить это — поддерживать игры, использующие OpenGL.
.ИНФОРМАЦИЯ О ТЕХНИЧЕСКИХ ПРОБЛЕМАХ НЕКОТОРЫХ
ИГРОКОВ14 октября 2016 г.
Привет! За последние несколько дней возникло несколько проблем, и мы подготовили для вас полезную информацию о том, что мы исправляем и как вы можете справиться со сломанной игрой.
Читайте дальше, если у вас возникли проблемы.
Как работает графика в Star Stable? Переключиться на OpenGL
5 октября Star Stable перестала работать на DirectX и перешла на OpenGL для рендеринга графики на ваших компьютерах.
DirectX вызывал много проблем, и наша игра была основана на версии DirectX 9, выпущенной в 2002 . Microsoft, которая является разработчиком DirectX, больше не поддерживает эту версию, а это означает, что кодирование игры было невозможно.
Игроки, которые сейчас не могут играть с помощью OpenGL, также не смогут играть, если мы перейдем на более новую версию DirectX. Технология, используемая в старой версии, почти пятнадцать , и мы больше не могли над ней работать.
Большинство игр и компаний рано или поздно перестанут работать на такой устаревшей технологии и отныне мы полагаемся на OpenGL начиная с версии 2.1 и выше, а это значит, что мы используем технологию внедренную в 2006 . Этого достаточно для покрытия большинства компьютеров, которые вы используете, но мы не можем обеспечить 100% технологию для старых компьютеров.
Почему игра не работает у некоторых игроков?
Только старые и самые простые системы не смогут поддерживать Star Stable.В последние годы технологии домашних компьютеров настолько развились, что старые версии не справятся с более новым программным обеспечением.
Чтобы вывести игровой процесс в Star Stable на новый уровень, мы вынуждены внести некоторые графические изменения, которые не работают с такими старыми технологиями.
Все это означает, что ваш компьютер должен поддерживать OpenGL 2.1 (10 лет на рынке) или выше для работы Star Stable.
Возможно, все, что вам нужно сделать, это добавить новую графику на свои компьютеры.Star Stable не может дать вам конкретных советов или инструкций о том, какую карту купить, но новые, даже самые дешевые видеокарты должны поддерживать последнюю версию OpenGL.
Я получаю сообщение о том, что моя версия OpenGL ниже 3.0, что мне делать?
Это не значит, что вы не можете играть! Мы говорили вам, что самое главное — убедиться, что ваши графические драйверы полностью обновлены.
Star Stable теперь предназначен для наилучшего использования OpenGL 3.0 или выше. Можно играть на версии 2.1, но без графических вкусностей.
Убедитесь, что ваша видеокарта обновлена, чтобы игра работала без сбоев.
Если вы не знаете, как это сделать, в Интернете есть множество руководств, которые могут вам помочь.
Проверьте минимальные аппаратные требования для Star Stable
Ниже приведен список технических характеристик, которым должен соответствовать ваш компьютер для работы Star Stable.Первый список представляет вам абсолютный минимум, основные требования, а второй — идеальные требования, которые позволят игре работать без сбоев.
Основные аппаратные требования ПК
Операционная система: Windows 7 (32- или 64-разрядная) с последним пакетом обновления
ЦП: Intel Pentium D или AMD Athlon 64 (K8) 2,6 ГГц
ОЗУ: 2 ГБ
Диск пространство: 5 ГБ
Графика: Intel HD Graphics или AMD / ATI Radeon HD Graphics с OpenGL 2.1
Звуковая карта: Да
Подключение к Интернету: Да
Характеристики идеального ПК
Операционная система: Windows 7 (32- или 64-разрядная версия) ), с последним пакетом обновления
ЦП: Intel Core i3 или AMD Athlon II (K10) 2.8 ГГц
ОЗУ: 4 ГБ ОЗУ
Место на диске: 5 ГБ
Видеокарта: серии GeForce 2xx или AMD Radeon HD серии 5xxx (за исключением встроенных видеокарт) с OpenGL 3.3
Звуковая карта: да
Подключение к Интернету: да
Наши технические специалисты все еще работают над качеством игры и устраняют любые возникающие лаги Количество различных проблем, которые возникли, не дает мне спать по ночам, чтобы сообщить об этом нашим техникам! Одним из них являются игроки, у которых наблюдаются лаги в игре.
Мы постоянно работаем над различными решениями и будем держать вас в курсе, если что-то найдем.
Напоминание о том, как должны выглядеть настройки графики
В игре есть инструмент, позволяющий настроить графику, которую вы видите во время игры. Это может помочь вам, если у вас есть лаги в игре. Чем меньше игровая графика, тем меньше лаг.
Вам необходимо изменить некоторые настройки в настройках графики игры. Отключите «Вертикальную синхронизацию» и «Дополнительные эффекты» по инструкции ниже:
1. Нажмите на значок телефона в правом нижнем углу;
2.Нажмите «Параметры»;
3. Нажмите «Графика»;
4. Убедитесь, что "Вертикальная синхронизация" и "Побочные эффекты" отключены!
Все о "Проверке"
На этой неделе мы обновили приложение для повышения стабильности игры. Новая версия проверяет наличие отсутствующих файлов, которые вызывают сбой игры.
Это означает, что мы добавили дополнительный шаг в запуск приложения, который называется «Проверка». Это не должно занять более нескольких минут, но если у вас возникла проблема с этим, пожалуйста, предоставьте как можно больше подробностей о проблеме в наш Справочный центр, чтобы мы могли позаботиться о ней.
Мы надеемся, что вы нашли этот пост полезным для людей, которые ищут ответы на свои вопросы!
Желаем вам замечательных выходных!
Объятия от команды Star Stable
Star Stable Online Mel:
Системные требованияОсновные требования к аппаратному обеспечению ПК
Операционная система: Windows 7 (32- или 64-разрядная) с последним пакетом обновления
.ЦП: Intel Pentium D или AMD Athlon 64 (K8) 2,6 ГГц
Оперативная память: 2 ГБ
Место на диске: 5 ГБ
Графика: Intel HD Graphics или AMD/ATI Radeon HD Graphics с OpenGL 2.1
Звуковая карта: Да
Интернет-соединение: Да
Эта спецификация обеспечит вам не плавный геймплей, а возможность входа в игровой мир.Идеальная спецификация для ПК
Операционная система: Windows 7 (32- или 64-разрядная) с последним пакетом обновления
.ЦП: Intel Core i3 или AMD Athlon II (K10) 2,8 ГГц
Оперативная память: 4 ГБ ОЗУ
Место на диске: 5 ГБ
Графика: GeForce серии 2xx или AMD Radeon HD серии 5xxx (за исключением встроенных графических карт) с OpenGL 3.3
Звуковая карта: Да
Интернет-соединение: Да
Данная спецификация обеспечит высокое качество игры.Почему у некоторых игроков не работает игра?
Для работы Star Stable ваш компьютер должен поддерживать OpenGL 2.1 или выше.
Старые системы не справляются с новым программным обеспечением, а значит, вы не сможете получить доступ к игре. К сожалению, Star Stable ничем помочь не может. Чтобы обеспечить более высокий уровень геймплея, им приходится добавлять графические изменения, что было невозможно в DirectX.
Что я могу сделать, чтобы избавиться от лагов?
Вот несколько примеров:
• Измените несколько настроек в настройках графики игры.Отключите «Вертикальную синхронизацию», «Затенение», «Дополнительные эффекты», «Затенение II», «Анизотропную фильтрацию» и «Антиалиас».
• Обновите драйверы вашего компьютера.• Подключайтесь к Интернету через кабель, а не через WiFi.
• Перед входом в игровой мир убедитесь, что все остальные программы выключены. Их работа в фоновом режиме может сильно нагрузить ноутбук.
* лаг - обрывы в игре, мешающие плавному игровому процессу.
Источник информации: КЛИК .выпущеноOpenGL 3.1 | OSnews.pl
24 марта организация Khronos объявила о выпуске следующей версии OpenGL - 3.1. Новая версия включает в себя новую версию языка программирования шейдеров GLSL 1.40, а также ряд мелких исправлений и улучшений
.К наиболее интересным новинкам относятся:
- Texture Buffer Objects — новый тип текстуры, хранящий одномерный массив текселей фиксированного формата, позволяющий передавать большие массивы в шейдеры
- Signed Normalized Textures — новый общий формат текстур, который представляет значения в диапазоне [-1.0.1.0]
- унифицированных объектов буфера — позволяют быстро изменять блоков данных
- Больше текстурных блоков — теперь требуется минимум 16 .
- Перезапустить примитивы — позволяет легко перезапускать и вызывать примитивы, что позволяет ускорить отрисовку мешей
- Конкретизация — возможность рисовать одни и те же объекты несколько раз, повторно используя данные вершин для ускорения рендеринга и уменьшения количества необходимых вызовов функций
- CopyBuffer API — ускоряет копирование из одного объекта буфера в другой, особенно полезно для приложений, совместно использующих буферы с OpenCL 1.0 для расширенных графических вычислений.
Кроме того, введена модель маркировки устаревших функций — многие функции были удалены из этого выпуска, другие отмечены как устаревшие, и их не рекомендуется использовать, поскольку они будут удалены в будущих выпусках. При этом для сохранения обратной совместимости было предложено расширение ARB, добавляющее все удаленные функции, но его реализация не является обязательной и зависит от доброй воли производителей драйверов.
Ключевые функции, которые были удалены/помечены как устаревшие:
- Определить примитивы в блоках Begin End
- все константы для обработки вершин (Frustum, LoadIdentity, LoadMatrix, LoadTransposeMatrix, MatrixMode, MultMatrix, MultTransposeMatrix, Ortho, PopMatrix, PushMatrix, Rotate, Scale, Translate)
- буфер накопления
- Буфер выбора
- список отображения
AMD объявила о добавлении реализации OpenGL 3.1 в последней версии драйвера, Nvidia решила быть еще быстрее и объявила о выпуске драйверов с реализацией на следующий день после своего релиза
.Vulkan API 1.0, преемник OpenGL, теперь доступен в финальной версии
Khronos Group публикует окончательную спецификацию API Vulkan 1.0. В отличие от DirectX 12, он открывает двери для низкоуровневого программирования на многих платформах. Однако на этом преимущества не заканчиваются.
Vulkan — первый низкоуровневый универсальный API. Это означает, что его преимущества можно использовать на многих платформах: как мобильных, так и десктопных. Не имеет значения ни операционная система, ни аппаратное обеспечение (GPU), которое у вас есть.Работа над ним началась около двух лет назад. Изначально проект назывался GLNext (Next Generation Open GL) — но в итоге год назад это был просто Vulkan. API основан на принципах открытого исходного кода. Надзор за проектом осуществляет Khronos Group, а их вклад вносят, в частности, АМД или Нвидиа. Однако особую роль играют «красные», ведь именно здесь знаменитая API Mantle обрела новую жизнь. На самом деле именно продукт AMD, который компания решила сделать доступным на бесплатной основе (не в первый и, вероятно, не в последний раз), был частично использован в Vulcan.
Не надо объяснять, для чего используется API Vulkan в играх и приложениях. Низкоуровневое программирование означает меньшую нагрузку на ЦП и прямое управление графическим процессором. Кроме того, все это имеет многоуровневую структуру, что облегчает разработчикам реализацию отдельных частей. Более того, дизайн API дает вам огромный контроль над выполнением приложения.
Сегодня Khronos Group опубликовала окончательную спецификацию API Vulkan, отмеченную цифрой 1.0. На практике это не большая премьера - все, что можно было систематизировать, было систематизировано и опубликовано под версией 1.0. Теоретически, однако, это можно считать символическим началом великого испытания Вулкана. Судьба этого стандарта будет зависеть от заинтересованности разработчиков, простоты реализации и вытекающих из него преимуществ. А потенциал огромен, ведь Вулкан уже реализован в таких движках, как Frostbite, Source, Unity 5, Unreal Engine 4. Есть и первые анонсы.С самого начала Вулкан должен использоваться в Serious Sam 4. На следующей неделе этой информации должно быть гораздо больше.
В то же время AMD выпускает новую версию своих драйверов Crimson, поддерживающих Vulkan. Nvidia, которая меньше участвовала в проекте (по понятным причинам), возможно, присоединится к нему чуть позже. Интересно, что относительно недавно Intel хвасталась производительностью Vulkan. На размещенном видео мы можем увидеть, какие преимущества для интегрированных видеокарт принесет использование низкоуровневого API.Естественно, выиграют системы ВСУ конкурентов (кто знает или не знает больше, учитывая происхождение Вулкана). Раджа Кодури, старший вице-президент и главный архитектор AMD Radeon Technologies Group, объясняет:
Выпуск спецификации Vulkan 1.0 — огромный шаг вперед для разработчиков. Этот мощный графический API, который также является производным от технологии Mantle, будет особенно полезен для приложений, разработанных на нескольких платформах и многими разработчиками. Продвижение открытых и масштабируемых технологий по-прежнему лежит в основе деятельности AMD, которая, в конце концов, является пионером в области низкоуровневых API.Являясь членом Khronos Group, AMD с гордостью сотрудничает с лидерами в области аппаратных и программных технологий для создания Vulkan API, целью которого является переход на следующий этап в разработке компьютерных игр.
Кто знает, не окажется ли Vulkan более успешным, чем сам DirectX 12. Обе технологии довольно разные, поэтому их сложно сравнивать напрямую. Однако, что особенно важно, DirectX доступен только на Windows 10, а эта пока набирает свою популярность (последовательно и хорошими темпами).Тем временем Вулкан из марша становится универсальным и открытым для публики. Определенно, геймдев ждет интересные времена.
.Текущее состояние и решения для OpenGL через Windows Remote [закрыто]
Решения этой проблемы зависят от варианта использования, а ответы разбросаны по бескрайним глубинам сети. Я бы хотел, чтобы эта статья существовала, когда я начал ее исследовать, как для разработчиков, так и для тех, кто не кодирует.
Выпуск:
Сеанс Windows RDP не показывает видеокарту, по крайней мере, напрямую.Например, вы не можете изменить разрешение рабочего стола, а графические драйверы обычно просто отключают меню настроек. Таким образом, запуск контекста OpenGL выше версии 1.1 невозможен. Часто предлагается, особенно при поддержке IRC, «Не использовать WindowsRemote», к сожалению, не для многих. Во многих корпоративных средах Windows Remote является постоянно используемым инструментом, и приложение также должно работать там.
Байпас без энкодера
Вы можете запустить программу OpenGL, разрешив ей увидеть вашу видеокарту, создать контекст OpenGL, а затем подключиться через WindowsRemote.Это всегда работает, потому что пульт Windows просто передает содержимое окна. Это может быть достигнуто с помощью:
- Пакетный сценарий, который закрывает сеанс и запускает программу, позволяя вам подключиться к уже запущенной программе. (https://social.technet.microsoft.com/Forums/windowsserver/en-US/c8295ef8-3711-4576-9293-2c4965280165/opengl-and-remote-desktop?forum=winserverTS)
- При использовании VNC или другого для удаленного доступа к устройству запустите программу, затем переключитесь на Windows Remote.(http://tightvnc.net/, также с расширением https://portableapps.com/node/32118)
Обход энкодера
(только для OpenGL ES) Преобразовать OpenGL в DirectX. DirectX безупречно работает под Windows Remote и даже имеет встроенную функцию замены программного рендеринга в DX11, если что-то пойдет не так.
- Используйте проект ANGLE, чтобы сделать это во время выполнения. Вот что QThttps://wiki.qt.io/Qt_5_on_Windows_ANGLE_and_OpenGL#Recommendations вы делаете и как Chrome и Firefox реализуют WebGL.(https://github.com/google/angle)
В качестве резерва переключитесь на программный рендеринг. Некоторые программы САПР, такие как 3dsMax, делают это, например:
.- В SDL2 можно использовать SDL_CreateSoftwareRenderer (https://wiki.libsdl.org/SDL_CreateSoftwareRenderer)
- В GLFW версии 3.3 будут выпущены OSMes (рендеринг Mesa за кадром), в то же время вы можете собрать версию Github с -DGLFW_USE_OSMESA = TRUE, но лично у меня все еще есть проблемы с ее запуском (http: // www.glfw.org/docs/3.3/window_guide.html#window_hints_ctx)
- Непосредственно используйте конвейер Mesa LLVM для быстрой реализации OpenGL. (https://www.mesa3d.org/llvmpipe.html)
Разное:
- Использовать OpenGL 1.1: Windows имеет встроенную реализацию OpenGL 1.1 и более ранних версий. Некоторые игровые движки имеют встроенную функцию резервного копирования, поэтому они работают под управлением Windows Remote.
- Очевидно, существует промежуточное программное обеспечение, которое даже позволяет использовать OpenGL 4 через Windows Remote, но оно является частью более крупного пакета и является коммерческим решением.(http://www.thinanywhere.com/products/thinanywhere-for-windows-rdp/)
Приветствуются любые другие решения или исправления.
.Ноутбук для графического дизайнера - что посоветовать, какой выбрать?
Выбор лучшего ноутбука для вашего дизайна может быть довольно сложной задачей, и он принципиально отличается от покупки ноутбука для общего использования или игр. Ноутбуки для графического дизайна должны соответствовать очень индивидуальным потребностям и быть достаточно мощными для выполнения сложных и вполне специфических задач. В мире IT «ноутбук для графического дизайнера» — это так называемый мобильная рабочая станция или мобильная графическая станция.
В начале нашей беседы вам нужно спросить себя - "Каковы именно мои потребности?" Определение потребностей и ожиданий значительно поможет нам приспособить рабочую станцию к нашим предпочтениям и бюджету. Прежде чем искать информацию и заходить слишком далеко в процессе принятия решений, подумайте о том, какую работу вы выполняете. Именно к виду и специфике работы следует подбирать оборудование и его комплектацию. Если вы выполняете сложную 3D-работу, вы должны соответствовать всем требованиям.Если ваша работа в основном связана с 2D, вы можете быть в середине или в нижней части диапазона и, таким образом, сэкономить до нескольких тысяч злотых ...
Наиболее важными параметрами ноутбука, которые следует учитывать при проектировании, являются операционная система, процессор, оперативная память (ОЗУ), накопитель большой емкости (так называемый диск), тип и размер дисплея, точность цветопередачи, вес и время автономной работы.
Хороший ноутбук — это больше, чем просто скорость.Конечно, вам нужна скорость для запуска программ, но у вас также есть такие факторы, как выбор между Mac или ПК, оперативной памятью, носителем, дисплеем и т. д. Вам нужно найти правильный баланс в том, как вы используете свой ноутбук. Попробуем разобрать...
Первый вопрос: хотите ли вы работать с Mac или ПК. Большая часть программного обеспечения, даже ПО для графического дизайна, создается для платформ iOS® (Apple) и Microsoft® Windows®.Конечно, вы должны убедиться, что ваши файлы совместимы с программным обеспечением и операционной системой, используемой каждой компанией, с которой вы работаете.
Macимеет несколько преимуществ. Во-первых, их мониторы, как правило, имеют очень точные цвета и высокое качество отображения. Это было сказано давно, но это все меньше и меньше верно, поскольку ПК (Microsoft Windows) постоянно повышают свою дружественность к графическому дизайну и теперь предлагают сопоставимые аппаратные стандарты.К преимуществам ПК относится возможность запуска более общего программного обеспечения, что может иметь большое значение, если ноутбук будет использоваться для бизнеса или личной работы. Apple постепенно удаляет порты со своих устройств. Это придает вашим продуктам гладкий, обтекаемый вид, но может быть неприятно, когда вы хотите подключить к компьютеру множество аксессуаров. ПК более мощные, чем Mac, с возможностью первоначальной настройки или обновления большего количества компонентов. Эта функция позволяет обновить устаревший или неисправный компонент без замены всего ноутбука.
Поскольку графический дизайн обычно является визуальным средством, вам нужна лучшая матрица, которую вы можете себе позволить. Однако, прежде чем мы начнем тратить тысячи злотых, нам также нужно подумать о том, как мы работаем, мы должны задать себе конкретные вопросы.
Будет ли переносной компьютер часто перемещаться? (например, чтобы показать наш проект клиенту)
Этот параметр определяет размер кристалла, который, в свою очередь, определяет вес всего устройства. Если ноутбук должен быть устройством, которое много путешествует по вашей компании, вам следует ориентироваться на размер матрицы от 14 до 15,6 дюймов.Дополнительным плюсом больших ноутбуков является лучшее и более тихое охлаждение — логично, что в большем корпусе у нас больше места для циркуляции воздуха и отвода тепла за пределы блока. Популярные «семнадцатки» могут быть эффективнее «пятнашек», к сожалению, они еще и явно тяжелее. Размер выбранного нами устройства – это компромисс между удобством работы в графических приложениях и малым весом самого устройства.
Будем ли мы работать на внешних дисплеях? (например.2 внешних монитора)
При работе на внешних дисплеях цветопередача или большой размер матрицы ноутбука не будут для нас самым важным параметром. Затем мы можем ориентироваться на другие параметры, такие как требуемая производительность или диагональ экрана, самого устройства. Работа на мониторах, подключенных к ноутбуку, часто позволяет нам выбрать устройство меньшего размера, например, с диагональю экрана 14 дюймов. Тогда мы выиграем от мобильности и привлекательного тонкого внешнего вида самого устройства.
Как правило, 13-дюймовый экран ноутбука слишком мал для графической работы, и мы можем немедленно удалить такие решения. Вы должны сосредоточиться на единицах не менее 14 - 17,3 дюймов. Чем больше экран, тем лучше с ним работать, но носить его может быть неудобно. В пользу такого размера есть два аргумента — в первую очередь, больший экран и размер отображаемых элементов. Трудно использовать программное обеспечение для обработки графики или видео на маленьком экране, поскольку оно имеет множество меню, инструментов и цветовых палитр, окружающих маленькое рабочее пространство.
Разрешение экрана тоже может быть для нас узким местом, а не сам размер. Общее правило для любого ноутбука дизайнера и графического дизайнера - чем выше разрешение, тем лучше. Однако так должно быть не всегда, о чем будет сказано позже. В настоящее время у нас есть матрицы 4K (3840x2160), на которых упаковка пикселей, а значит, и количество деталей, которые мы видим, будет намного больше. Такие ноутбуки станут мишенью для графических дизайнеров, создающих сложные структуры или подготавливающих материалы с высоким разрешением.Однако следует помнить, что не всем нужно переплачивать за 4К (эти матрицы все же относительно дороги) — ведь для их проектов достаточно FHD-разрешения, а 4К потребует использования масштабирования экрана, которое может некорректно работать в некоторых приложениях. . В данном конкретном случае надо руководствоваться спецификой работы, а не принципом чем больше, тем лучше.
Будем ли мы работать при ярком солнечном свете?
Важным параметром для нас в случае с солнечными комнатами будет освещенность матрицы (измеряется на заклепках).Чем выше параметр подсветки, тем лучше мы будем видеть изображение, отображаемое на экране. В случае работы в «стеклянном офисе», где нам мешает солнце, параметр подсветки в нашем ноутбуке должен быть не менее 400 нит. В том случае, если мы работаем на улице, этот параметр должен быть не менее 600 заклепок.
Нам очень важна передача цветов на матрице?
Цвета — элемент, существенно влияющий на визуальную работу, т. е. графическую обработку или дизайн.В случае, когда мы работаем на внешних мониторах, цветопередача в ноутбуке нам может быть не важна и тогда должно хватить обычной IPS-матрицы. Однако, если ноутбук используется еще и для презентации наших проектов на площадке заказчика, мы не можем не обратить внимание на этот параметр. В случае подготовки проектов к печати этот параметр является одним из самых важных. Чтобы быть уверенными, что цвет, отображаемый на экране нашего ноутбука, будет выглядеть так же после печати, мы должны сосредоточиться на воспроизведении цвета не менее 100% sRGB.В особых случаях, а этого может быть недостаточно, мы можем выбрать самые профессиональные матрицы для ноутбуков, которые позволяют воспроизводить цвета в 100% палитре Adobe RGB или 100% воспроизводить палитру DCI-P3 (стандарт, используемый при обработке видео).
Очевидно, что встроенную видеокарту вообще не стоит рассматривать из-за низкой производительности. Такая карта не справится с современным программным обеспечением для дизайна и не даст нам возможности выполнять различные задачи, которые обычно мешают карьере графика или дизайнера.Даже в случае обработки 2D-графики применение сложных фильтров может эффективно насытить возможности встроенной видеокарты.
Так работают профессиональные приложения, которые дадут нам ответ о том, какую видеокарту нам следует выбрать. Здесь в качестве примера такого специализированного приложения мы можем использовать приложение Autodesk 3D Studio MAX, производитель которого с точки зрения аппаратных требований настоятельно рекомендует использовать сертифицированные профессиональные видеокарты серии Quadro, ввиду значительно более высокой производительности в этом заявление.Как и в случае с другими компонентами ноутбука, выбор зависит от специфики работы, которую мы намерены выполнять на нашей графической станции.
Помните, что потребительские видеокарты (GeForce) оптимизированы в основном с точки зрения однопоточной производительности — они должны хорошо работать в 3D-играх с использованием библиотек DirectX и OpenGL. Для профессионального использования видеокарты напрямую используют специальные возможности обработки графического процессора. Примеры включают редактирование видео, где графический процессор может использоваться для ускорения таких процессов, как кодирование видео, 3D-рендеринг и приложения для автоматизированного проектирования/производства (CAD/CAM), такие как AutoCAD.Все эти программы выигрывают от дополнительной вычислительной мощности графического процессора, хотя больше всего они выигрывают от графических процессоров, разработанных специально для этих приложений.
Мы писали о сертифицированных видеокартах, стоит выделить эту тему. Что ж, nVidia тесно сотрудничает с производителями программного обеспечения для графики и дизайна. Благодаря этому сотрудничеству nVidia гарантирует совместимость и высочайшую производительность с ведущими приложениями, подтверждая это сертификатом ISV (Independent Software Vendors), которым обладают профессиональные видеокарты NVIDIA Quadro.
В заключение, если вы не разрабатываете игры, сосредоточьтесь на профессиональных картах, предназначенных для наиболее эффективной работы в приложениях для дизайна, графики и обработки видео. Для работы с графикой мы рекомендуем профессиональные видеокарты nVidia Quadro. Начиная с моделей nVidia Quadro P620 и nVidia Quadro T1000 (4 ГБ GDDR5) и заканчивая более мощными nVidia Quadro T2000 и nVidia Quadro RTX3000 (6 ГБ GDDR5, поддержка виртуальной реальности). Для самых требовательных проектов также есть рабочие станции с самыми мощными картами — например, nVidia Quadro RTX4000 и nVidia Quadro RTX5000 (16 ГБ GDDR5, VR ready).
Память или т.н. ОЗУ (оперативное запоминающее устройство) хранит данные, к которым ваш компьютер должен иметь оперативный доступ, например, всю информацию в файле, над которым вы в данный момент работаете. Это энергозависимая память, содержимое которой теряется при отключении питания, т.е. это не постоянная память, такая как жесткий диск. Если вы обычно работаете со многими открытыми приложениями или работаете с очень большими файлами, вам потребуется больше оперативной памяти, чтобы обеспечить плавное переключение между приложениями и прокрутку сложных файлов.
Стандартом, используемым в настоящее время в ноутбуках, является оперативная память DDR4 SDRAM. Он был представлен на выставке CES в январе 2013 года. Характеризуется меньшим энергопотреблением, на уровне 1,2В, и большей пропускной способностью. В случае новейших процессоров, используемых в предлагаемых мобильных рабочих станциях, системная шина работает на частоте 2666 МГц или 3200 МГц. В случае оперативной памяти DDR4 это обеспечивает пропускную способность до 25600 МБ/с. Это наглядно показывает, в чем суть использования оперативной памяти.SSD-накопитель PCIe, с которого данные считываются в ОЗУ, обеспечивает скорость передачи 3500 МБ/с. Это более чем в семь раз меньше! Это можно упростить, сказав, что благодаря использованию оперативной памяти процессор имеет в семь раз более быстрый доступ к данным, над которыми мы работаем. Таким образом, мы можем выполнять операции над таким файлом намного быстрее.
На что следует обратить внимание в случае с рабочими станциями расширяемая оперативная память .Некоторые машины имеют очень ограниченные возможности расширения за счет впаянной в материнскую плату оперативной памяти. Это решение, которое не даст нам никаких возможностей для расширения в будущем. Помните, что программное обеспечение из года в год повышает требования к оборудованию, используемому графическими дизайнерами, поэтому лучше выбрать ноутбук, который даст нам возможность в будущем расширить оперативную память.
В настоящее время абсолютным минимумом для графического дизайнера является 16 ГБ ОЗУ, хотя я бы посоветовал вам рассмотреть 32 ГБ.Помните, что память является важным фактором быстрой работы всего компьютера. Даже если в ноутбуке всего 16 Гб, память чаще всего можно расширить без каких-либо препятствий. Доступные на рынке мобильные рабочие станции имеют до 4 слотов для оперативной памяти с возможностью поддержки до 128 ГБ. Поэтому, если в выбранном ноутбуке недостаточно памяти, свяжитесь с нами, чтобы подготовить предложение по увеличению памяти нашими специалистами. Каждый пользователь бизнес-рабочих станций может расширить объем памяти без потери гарантийных прав, но для этого часто требуется разборка корпуса.Поэтому, если вам не по себе, стоит доверить это профессионалам.
Процессор управляет этим жизненно важным компонентом любого компьютера, поскольку он управляет всеми его функциями. Для графического дизайна требуется быстрый и мощный процессор, предназначенный для работы со сложным программным обеспечением для проектирования. При рассмотрении различных альтернатив тактовая частота (ГГц) может показаться наиболее очевидным параметром для рассмотрения. Однако это совсем не так.В большом упрощении производительность процессора отражается в количестве поддерживаемых ядер и потоков, тактовой частоте одного ядра (ГГц) и размере кэш-памяти процессора . Количество ядер имеет решающее значение, если вы занимаетесь редактированием видео или 3D-рендерингом, поскольку процессор с большим количеством ядер будет эффективно распределять вычислительную нагрузку между всеми ядрами, тем самым максимально используя доступные ресурсы. В результате процессоры с большим количеством ядер могут выполнять задачи быстрее, чем процессоры с более высокой тактовой частотой, но с меньшим количеством ядер.4 и более ядер на данный момент являются стандартом.
Кэш-память процессора (кэш) предназначена для хранения данных, которые будут обрабатываться системой в короткие сроки. Его главное преимущество — скорость записи и чтения (намного быстрее оперативной памяти), которая используется всеми ядрами процессора. Другими словами, чем больше кэш-памяти у ЦП, тем быстрее он сможет получить доступ к данным.
На момент написания этой статьи (3 квартал 2021 г.) как минимум для графических приложений мы рекомендуем процессор Intel® Core™ i7-1165G7 (одиннадцатого поколения) — 4 ядра/8 потоков/максимальная частота 4,7 ГГц и 12 МБ кэш-памяти .Это эффективный процессор, который удовлетворит потребности многих графических дизайнеров. Для корпоративных графических дизайнеров, занимающихся более крупными проектами, должно хватить процессора Intel Core i7-11850H (11-го поколения) — 8 ядер/16 потоков/максимальная частота 4,8 ГГц и 24 МБ кэш-памяти.
Диски
годами были узким местом в наших компьютерах. Те, кто начал свои приключения с компьютерами в 90-х, могут многое рассказать об этом. Вездесущие в то время дисковые накопители (HDD) были шумными и обеспечивали крайне низкую скорость чтения/записи.Производители изменили архитектуру, увеличили объем кэш-памяти процессора, объем оперативной памяти, появились новые поколения стандарта SATA — все для обеспечения максимально быстрого доступа к данным. Сложные системы на основе RAID-массивов создавались как раз для того, чтобы иметь возможность быстрее читать и записывать данные. Все начало резко меняться в конце девяностых. Ренессанс быстрого доступа к данным начался тогда с первых SSD-дисков, то есть полупроводниковых накопителей.Конструкция была ближе к популярному подвесу, чем к классическому диску. Именно SSD-диски являются наиболее популярными решениями, доступными сегодня на рынке, и именно на них стоит ориентироваться.
PCIe Твердотельный накопитель. Это самый популярный стандарт, используемый в современных рабочих станциях. SSD-накопитель, работающий на шине PCI Express с интерфейсом NVMe, может одновременно читать и писать на уровне от 3 до 7 тысяч МБ/с! По сравнению с еще доступными дисководами, это даже в 90 раз быстрее! Решение такого типа незаменимо при работе с графикой, скорость доступа к данным и большой объем диска будут особенно важны для людей, занимающихся рендерингом фильмов, обработкой очень больших файлов или монтажом видеоматериала.
Диск для операционной системы. Базовый (системный) диск - должен быть носителем PCIe NVMe SSD емкостью не менее 512 ГБ, это стандарт, ниже которого опускаться не следует. Он обеспечит вам быструю работу системы, программ и мгновенную загрузку готовых проектов. Стоит инвестировать в профессиональный накопитель, который предлагает не только самые высокие параметры чтения и записи, но также гарантирует долговечность и надежность — например, Samsung 970 Pro — на основе более прочных ячеек MLC.TLC хранит три бита информации, имеет более короткий срок службы и более высокий риск ошибок. Помните, что данные, которые мы сохраняем на диске, это наша работа, на безопасности данных экономить не стоит, повреждение жесткого диска может стоить очень дорого, а следовательно привести не только к простою на работе, но и к потере ценные файлы.
Количество дисков. Мобильные рабочие станции, в зависимости от производителя и размера, предлагают возможность установки от 3 до 5 дисков.Например, HP ZBook 17 позволяет установить 4 диска (3 x M.2 PCIe + 1 x 2,5 дюйма SATA). HP ZBook 15 предоставляет место для 3 дисков (2 x M.2 PCIe + 1 x 2,5 дюйма SATA). ). Lenovo ThinkPad P73 предоставляет 3 дисковых пространства - (2 x M.2 + 1 x 2,5" SATA), аналогично ThinkPad P53. В наших проектах вы найдете примеры, в которых мы расширили заводские конфигурации, добавив или заменив заводские диски.
Диск хранилище . Мы упоминали о важности безопасности данных.Многие ноутбуки позволяют установить внутрь 2,5-дюймовый дисковод, который при правильной настройке может служить нам в качестве локальной резервной копии наших самых ценных данных. Как правило, людей можно разделить на тех, кто делает бэкапы, и тех, кто только начинает делать бэкапы после первой потери данных. Рекомендуем учиться на чужих ошибках, а не на своих, и заранее позаботиться о сохранности важных для нас папок.
Короче говоря, все зависит от того, что вы делаете в проекте, вашего бюджета и приложений, которые вы запускаете.Есть много хороших ноутбуков, оптимизированных для графического дизайна, просто нужно найти подходящий именно вам. Тем более, что выбирать есть из чего, среди топовых производителей оборудования обязательно стоит обратить внимание на следующие серии: HP ZBook , Dell Precision или Lenovo ThinkPad серии P. Каждая из указанных серий состоит из полноценного Портфолио ноутбуков предназначено для различных видов обработки графических приложений и дизайна. Есть модели для 2D-дизайна и расширенного 3D-дизайна.
Вышеприведенная статья не предназначалась для указания конкретной модели, а лишь для того, чтобы подсказать, какие аспекты следует учитывать при выборе устройства. Выбор подходящей конфигурации настолько индивидуален, что невозможно указать конкретное оборудование, не зная точных потребностей пользователя. Приглашаем вас ознакомиться с нашим предложением мобильных рабочих станций и сравнить предложения отдельных производителей. Если у вас есть какие-либо вопросы или сомнения, мы поможем вам выбрать правильный инструмент для работы, пожалуйста, свяжитесь с нами.
Наши специалисты в вашем распоряжении
Вам нужна консультация специалиста при покупке компьютерной техники?
Мы поможем вам найти лучшее решение.