Как добавить тривиальную функциональность OpenGL в приложение Xamarin forms

#xamarin #opentk

#xamarin #opentk

Вопрос:

Кто-нибудь может помочь со следующим?

У меня работает тривиальное приложение Xamarin forms, и я хочу добавить представление OpenTK.

Следующее работает нормально:

В моем MainPage.xaml.cs у меня есть следующий обработчик событий для кнопки, который порождает пустое представление OpenTK при каждом нажатии:

 private void OnXAMLButtonClicked(object sender, EventArgs e)
        {
            var view = new OpenGLView { HasRenderLoop = true };

            view.HeightRequest = 300;
            view.WidthRequest = 300;

            view.OnDisplay = r =>
            {
                //GL.ClearColor(red, green, blue, 1.0f);
            };

            m_SL.Children.Add(view);
        }
  

(где m_SL — это имя моего стекового описания).

При каждом нажатии я получаю новое черное окно. Отлично.

Теперь посмотрите на эту закомментированную строку, это потому, что значение GL не определено.

Этот код взят из простого примера здесь:

https://learn.microsoft.com/en-us/dotnet/api/xamarin.forms.openglview?view=xamarin-forms

Я вижу в верхней части этого примера следующее:

использование OpenTK.Graphics.ES30;

Но я не могу включить это, OpenTK не распознается как пространство имен. Я ожидал, что мне придется добавить его в качестве ссылки, но как?

Я могу добавить ссылку на него в моем .Проект Android, чтобы я мог добавить вышеупомянутый оператор using на мою страницу MainActivity.cs, но это не то место, где ему место (хотя я вижу, что затем у меня определен GL, так что это доказывает, что мне нужно добавить эти операторы using в мой MainPage.xaml.cs, чтобы определить GL)но, как я уже сказал, как мне добавить ссылку на OpenTK для проекта, который содержит MainPage.xaml.cs.

Спасибо за любую помощь, Митч.

—— РЕДАКТИРОВАТЬ ——

Спасибо the poster за помощь мне до сих пор, новая проблема — это ссылка на System.Частное.Ядро, которое не может быть разрешено. Вот мой полный рабочий процесс для создания этой ошибки:

1. Создайте новый проект.

введите описание изображения здесь

введите описание изображения здесь

Это дает мне три проекта:

введите описание изображения здесь

2. Перейдите на .NET standard 2.1 в проекте OGLMobile:

введите описание изображения здесь

The .В проектах Android и .iOS нет опции выбора .NET.

3. Добавьте ссылку на OpenTK в проект OGLMobile:

введите описание изображения здесь

4: Проект OGLMobile строится нормально, но.Проект Android дает:

введите описание изображения здесь

Если я удалю ссылку на OpenTK, все будет построено заново. Не имеет значения, добавлю ли я пакет OpenTK Nuget в .Проект Android, я все еще получаю ту же ошибку.

Так близко, спасибо за любой совет.

Ответ №1:

Вам необходимо установить пакет Nuget OpenTK.Графика, затем можно использовать это.

введите описание изображения здесь

Теперь можно сослаться на это:

введите описание изображения здесь

Примечание: 4.0.1 из OpenTK.Для графики требуется стандарт 2.1 .NET.

введите описание изображения здесь

Комментарии:

1. Спасибо за ваш привет. Все почти работает, но после добавления пакета Nuget OpenTK. Графика моя. Android project выдает следующую ошибку компиляции: не удается разрешить ссылку: «Система. Частное. На ядро » ссылается «OpenTK. Графика». Пожалуйста, посмотрите мои правки в исходном сообщении, где я добавил картинки.

2. @user3738290 Привет, OpenTK.Graphics пакет Nuget используется только для Xamarin, вы не смогли установить его в Android / iOS. Ваш общий документ — это способ использования OpenGL в Xamarin Froms, нужно только установить его в Xamarin Forms, который будет работать в iOS / Android. Если ответ полезен, пожалуйста, не забудьте принять его в качестве ответа (нажмите ✔ в верхнем левом углу этого ответа), это поможет другим, у кого есть подобная проблема.

3. Спасибо за помощь. Наконец-то у меня это работает. Я создал новый проект, добавил ссылку на OpenTK через Ссылки-> добавить ссылку в . Проект Android, а затем просто набрал GL.clearColor (1.0, 1.0, 1.0, 1.0f); в проекте OGLMobile, а затем intellisense предложил добавить ссылку на OpenTK-1.0.dll . Это заставило все работать.

4. Здравствуйте, я столкнулся с точно такой же проблемой, но я не могу избавиться от сообщения «ошибка XA2002: не удается разрешить ссылку: System.Private.CoreLib , на которую ссылается OpenTK.Graphics » после добавления ссылки на OpenTK-1.0. Обратите внимание, что отсутствующая ссылка — «CoreLib», поскольку она «Основная» в исходном сообщении. Я дважды безуспешно пытался перестроить новый проект; можно ли что-нибудь еще сделать, кроме как добавить пакет OpenTK.Graphics nuget и ссылаться на OpenTK, которого я здесь не вижу. Спасибо

5. @PhM75 Привет, ссылочная версия OpenTK кажется слишком старой, вы можете обновить ее до последней версии для проверки. Если есть другие проблемы, вы можете задать новый вопрос в SO.