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

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

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

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

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

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

Рейтинг@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 кб