Для начала работы нам понадобится 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.zip | 926.34 кб |