Подтвердить что ты не робот

Внедрение аппаратного ускорения OpenVG на настольном компьютере на базе OpenGL ES

В настоящее время я пытаюсь запустить OpenVG на рабочем столе. Проблема возникает здесь: я/буду разрабатывать приложение для устройства Windows CE (с .NET compact framework), которое имеет аппаратное ускорение OpenGL ES 2.0 и OpenVG 1.0.1 (на основе TI OMAP35x, если вы заинтересованы). Приложение обязательно использует OpenVG для рисования и, вероятно, OpenGL для некоторых эффектов, если OpenVG их не предлагает (т.е. Размытие).

Теперь я бы хотел разработать на своем рабочем столе без эмулятора (см. этот вопрос). Поэтому я думал, что просто импортирую OpenVG с P/Invoke, что было довольно просто, поскольку люди OpenVG сделали свои константы в реальных enums, и хотя процедурный C API, он очень хорошо переводился в объектно-ориентированную форму (с классом Graphics для рисования и объектов Path, Paint, Stroke и Image). Мне также удалось перейти с разными именами DLL и точками входа. О, и я импортировал EGL 1.3, также довольно легко перевести на объектно-ориентированный API.

До этого момента это звучало неплохо. Я думал, что просто использую ссылку на OpenVG от Khronos, но она медленная. Очень медленно. Вы знаете, как очистка поверхности буквально секунду! Поэтому я подумал, хорошо, OpenVG - это стандарт, я просто возьму одну из других реализаций. Большинство из них основаны на OpenGL, чего я хочу. Или не так?

Нет, нет. Создание поверхности OpenGL ES 2.0 с EGL 1.3 (поставляется вместе с PowerVR Windows Emulation SDK для OpenGL ES 2.0) несовместимо с какой-либо реализацией OpenVG, которую я пробовал. Некоторые из них требуют традиционного OpenGL (AmanithVG GLE), версия EGL, поставляемая PowerVR, не поддерживает OpenVG. Большинство реализаций даже не имеют EGL и используют некоторые причудливые функции для инициализации контекста - все они предполагают, что контекст OpenGL уже создан. OpenGL, а не OpenGL ES. Вздох.

Единственное, что я мог получить, это AmanithVG SRE, что очень быстро для реализации программного обеспечения и не полагается на OpenGL или EGL. Он работает, но он все еще слишком медленный для анимации в реальном времени.

Я не могу поверить, что эти вещи так ошибаются. Мне очень нравится просто использовать WindowsMobile.DirectX.Direct3D, для которого PowerVR поставляет уровень эмуляции для Windows Desktop, в надежде, что окончательный пакет поддержки поддержки будет поставлять Direct3D в качестве оболочки OpenGL ES, как будто это похоже на многие устройства.

Итак, вопрос, наконец:

Есть ли какая-либо реализация OpenVG для систем Windows Desktop, работающая с OpenGL ES 2.0? Бонусные очки, если он работает плавно с эмулятором PowerVR OpenGL ES 2.0 и поставляемым EGL 1.3.

Или я должен просто попытаться использовать традиционную реализацию OpenGL 2.0 на рабочем столе? Но они обычно не поставляют EGL. Я не хочу иметь два уровня инициализации (EGL и WGL). Или я должен?

Примечание. Это не вопрос .NET, потому что проблема такая же без .NET.

4b9b3361

Ответ 1

Я нашел закрытый эмулятор OpenGL ES для OpenGLES 2.0 и других версий этого сайта во время поиска решения другой проблемы, которую я имел:

http://www.malideveloper.com/developer-resources/tools/opengl-es-20-emulator.php

Его закрытый источник, но, похоже, вы можете использовать его для своих целей разработки.

Кроме того, вы могли бы написать свой собственный уровень абстракции, который может переключаться между OpenGL и OpenGL ES - я не мог найти один доступный из моих поисков. Если вы его найдете, сообщите мне, потому что это то, что я пытаюсь сделать.