Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

КРУГОВОЙ ФРАКТАЛ -ОШИБОЧНАЯ ПРОГРАММА! ПАПА ЗибЕрт
Можешь обяснить подробно что как работает, и почему массу не задаем
Здравствуйте, Ильгиз. Математика - царица наук (Карл Гаусс). Изучение математики начинается с детского сада, когда нас учат считать и выполнять простые арифметические операции. Любой, даже самый простейший алгоритм будет связан с арифметическими...
Я хотел узнать математика это обязательно в программирование. Пять лет назад просто из любопытства я увлекся HTML потом изучил CSS и JvaScript потом изучил PHP и Java. Как то не задумывался и начал смотреть форумы и узнал что без математики не...
Все верно, но так же необходимо зайти в: Компоновщик -> Ввод -> Дополнительные зависимости Здесь необходимо нажать изменить и в Дополнительные зависимости прописать это: SDL2.lib SDL2main.lib SDL2test.lib Без этого не заработает. (MVS 2015)

Счетчики и рейтинг

Яндекс.Метрика Рейтинг@Mail.ru
Среда программирования: 
Microsoft C#

Для начала работы нам понадобится Microsoft Visual Studio 2010 или старше (я использую Visual Studio 2013) Советую скачивать английскую версию.
Ссылка на бесплатную редакцию: https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx

Создание WPF проекта
1.Выбираем FILE>NEW>PROJECT (или нажимаем CTRL+SHIFT+N)
2.Слева в пункте Installed разворачиваем пункт Templates выбираем пункт Visual C#
3.В списке нажимаем на WPF Application называем проект(мое название WPFOpenGl) и нажимаем Ок.

Дальнейшие подготовительные работы
После создание проекта у нас в Solution Explorer появляются вот такие файлы

Работать мы будем с MainWindow.xaml и MainWindow.xaml.cs, первый отвечает за то как наше приложение будет выглядеть после запуска, а второй за его функциональную часть.

Далее нам нужно установить SharpGL для работы с OpenGL:
1.Переходим в TOOLS>NuGet Package Manager>Package Manager Console
2.В появившейся консоли выбираем Package Source "nuget.org" и вводим Install-Package SharpGL.WPF

Теперь все готово для непосредственного подключения OpenGL.

Начало работы:
1. Работа с MainWindow.xaml
Добавляем ссылку на SharpGl, в свойствах элемента Window (Между "<Window" и ">" )
вставляем строку xmlns:wpf="clr-namespace:SharpGL.WPF;assembly=SharpGL.WPF"
Теперь когда у нас есть ссылка на библиотеку добавим область рендера.
Внутрь элемента Grid добавим строку

<wpf:OpenGLControl OpenGLDraw="OpenGLControl_OpenGLDraw"
                               OpenGLInitialized="OpenGLControl_OpenGLInitialized"
                               Resized="OpenGLControl_Resized"
                               DrawFPS="True"/>

Так чтоб в итоге у нас вышло вот такой текст в MainWindow.xaml
<Window x:Class="WPFOpenGl.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wpf="clr-namespace:SharpGL.WPF;assembly=SharpGL.WPF"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
      <wpf:OpenGLControl OpenGLDraw="OpenGLControl_OpenGLDraw"
                               OpenGLInitialized="OpenGLControl_OpenGLInitialized"
                               Resized="OpenGLControl_Resized"
                               DrawFPS="True"/>
   </Grid>
</Window>

Мы создали Control на котором будет происходить вывод нашей сцены, теперь нам осталось создать обработчики событий OpenGLDraw, OpenGLInitialized и Resized

2.Работа с MainWindow.xaml.cs
Добавляем функцию инициализации OpenGLControl_OpenGLInitialized

private void OpenGLControl_OpenGLInitialized(object sender, OpenGLEventArgs args)
{
   var gl = args.OpenGL;
   gl.ClearColor(0.3f, 0.3f, 0.3f, 0.3f);
}

она просто создает сцену с фоновым серым цветом
И добавляем функцию отрисовки OpenGLControl_OpenGLDraw
private void OpenGLControl_OpenGLDraw(object sender, OpenGLEventArgs args)
{
   var gl = args.OpenGL;
   gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
   gl.Begin(OpenGL.GL_TRIANGLES);
   gl.Color(0f, 1f, 0f);
   gl.Vertex(-1f, -1f);
   gl.Vertex(0f, 1f);
   gl.Vertex(1f, -1f);
   gl.End();
}

она очищает экран с каждым новым кадром и рисует треугольник.

И в завершение создаем OpenGLControl_Resized

private void OpenGLControl_Resized(object sender, OpenGLEventArgs args)
{
}

На этом все, можно запускать приложение нажатием кнопки F5.
Готовый проект приложен в прикрепленных файлах для сравнения.

Прикрепленный файлРазмер
WPFOpenGl.zip926.34 кб