#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, чтобы использовать машинный код как есть.