Microsoft ANGLE для uwp

#c #opengl-es #uwp #windows-10-universal #universal

#c #opengl-es #uwp #windows-10-универсальный #Универсальный

Вопрос:

ребята! В настоящее время я работаю над новым кроссплатформенным приложением (iOS, Android, UWP). У меня есть графическая библиотека для пользовательского интерфейса, написанная на c , с использованием freeglut для OpengGL. Проблема в том, что я не знаю, как использовать эту библиотеку в моем приложении UWP. Я прочитал много информации обо всех оболочках для OpenGL, но все они для WPF или написаны на C . Я также знаю о проекте Microsoft ANGLE, но он тоже написан на c , но мне нужно написать приложение на языке C #.

Итак, как я могу изменить свою собственную библиотеку, используя исключение freeglut и импортировать ее в свое приложение на C #?

Кстати, извините за ошибки в моем английском.

Ответ №1:

Итак, вы хотите использовать устаревшую сборку C в своем приложении UWP?

Вы можете создать проект компонента среды выполнения Windows (Universal Windows), в который вам нужно включить сборку, и объявить столько API, сколько вы хотите предоставить, все помеченные атрибутом DllImport .

В конце концов, этот компонент WinRT будет выполнять вызов платформы и будет работать как «оболочка» между вашим устаревшим кодом и приложением UWP.

Это зависит от ваших предпочтений, какой язык вы используете для компонента WinRT, C или C #, в любом случае, вам нужно беспокоиться о структуре / типе mashalling и unmashalling.

После того, как вы закончите с вышесказанным, вы сможете ссылаться на компонент WinRT в своем приложении UWP и вызывать API, которые вы объявили в этой сборке.

То же самое работает и для Microsoft Angle project.

Возможно, вы найдете этот пост полезным.

И последнее: возможно, вам стоит избегать использования запрещенных API, иначе ваше приложение UWP не пройдет сертификацию Windows Store.

Ответ №2:

Согласно https://msdn.microsoft.com/library/windows/desktop/jj714080.aspx существует возможность использовать DirectX и некоторые собственные функции API, включая функции LoadLibrary и GetProcAddress https://msdn.microsoft.com/library/windows/desktop/jj714080.aspx Это должно дать вам возможность использовать любую родную библиотеку dll. Вы можете попробовать создать RuntimeComponent project и поместить его туда. Также вы можете попробовать опцию clr oldsyntax, чтобы использовать машинный код как есть.