Opengl with c sharp

Уроки по созданию игр и работе с 3d графикой

На сайте наших друзей dg-home.ru вы найдете большое количество 3d моделей мебели, которые можно бесплатно скачать (но нужно будет зарегистрироваться).

Разные 3d модели мебели, декора и другого окружения можно будет бесплатно использовать для построения 3d сцен.

Выполняя главы последовательно, вы ознакомитесь с основами синтаксиса C#, увидите, как просто создавать оконные приложения с помощью .net, познакомитесь с библиотекой Tao, которая обеспечивает поддержку OpenGl в среде .NET, изучите основы 2D визуализации, работу как с примитивами, так и принцип загрузки и построения сложных 3D моделей , экспортированных из 3D редакторов.

Microsoft .NET Framework – это, предложенная компанией Microsoft, программная технология, основной задачей которой является предоставление разработчику набора очень удобных средств для разработки как простых программ, так и web приложений. В этом уроке вы немного подробнее може узнать о технологии .NET от Microsoft.

Для того, чтобы перейти к разработке собственных приложений с помощью языка C# и платформы .NET, необходимо получить базовые сведения о синтаксисе языка.
В этом уроке мы познакомимся с ним. Минимальный достаточный уровень, от которого вы сможете оттолкнуться для дальнейшего прохождения уроков и самостоятельного глубокого изучения C#.

Чтобы стоить более гибкие и качественные приложения, вам потребуются базовые знания о классах в C#. В этом уроке мы разработает простейшее приложение, которое пояснит вам самые основные принципы работы с классами и позволит параллельно с последующими уроками закреплять полученные знания на практике.

В этой части главы («Работаем с оконными элементами») вы узнаете об основах и достоинствах Windows.Forms в .NET Framework. Теоретическое введение предшествует дальнейшим ознакомительным урокам, посвященным Windows.Forms, которые мы в дальнейшем будем активно использовать у уроках программирования 2D и 3D графики.

В этом уроке мы получим практические навыки работы с оконными приложениями в .NET. Благодаря выполнению урока вы получите минимальное необходимое понимание в работе Windows.Forms, а именно:
как создать новое оконное приложение в C# .NET,
как добавить новые элементы на форму,
как отследить перемещение мыши по форме, а так же некоторые общие принципы. Это станет базисом для вашего дальнейшего активного изучения Windows.Forms

В этом уроке мы разберем еще несколько популярных задач в Windows.Forms: создание меню приложения, добавление в него элементов, создание панели управления, вызов диалогового окна выбора файла, загрузка изображения в приложение, создание и вызов дополнительной формы.

В данной главе мы рассмотрим вопрос многопоточности и того, как она реализована в среде .NET Framework. Понимание задач и методов многопоточного программирования является очень важной темой, нуждающейся в подробном изучении для создания современных высококачественных и производительных программ.
Изучив теоретическое введение, мы перейдем к простейшему приложению, которое продемонстрирует принципы работы многопоточного приложения.

Читайте также:  Горизонтальная прокрутка изображений html

В этом уроке создается простейшее многопоточное консольное приложение, которое позволит вам познакомиться с принципом построения таких приложений. На основе полученных знаний вы сможете самостоятельно изучать тему, а также понять и разобраться в принципах работы более сложных многопоточных приложений.

OpenGL — это некая спецификация включающая в себя несколько сотен функций. Она определяет независимый от языка программирования кросс-платформенный программный интерфейс. В этом уроке вы ознакомитесь с базовой информацией об OpenGL, которая позволит вам лучше понимать принципы эволюции OpenGL от версии к версии, его историю и другую полезную информацию для программиста 2D/3D графики.

Tao Framework – это свободно распространяемая библиотека с открытым исходным кодом, предназначенная для быстрой и удобной разработки кросс-платформенного мультимедийного программного обеспечения в среде .NET Framewrok и Mono. В этой части главы мы рассмотрим, что такое библиотека Tao Framework и почему она является таким необходимым инструментом в руках современного разработчика мультимедийного программного обеспечения.

Эта часть главы имеет скорее символический характер и может пригодиться лишь в том случае, если в процессе установки Tao Framework у вас возникли проблемы, так как установка крайне проста и сводится к нажатию кнопки «Далее» определенного количества раз, а затем — завершения установки.
В уроке подробно расписан процесс установки, а также разобраны возможные проблемы, которые часто возникали у посетителей сайта.

В этом уроке на основе тестового приложения мы проверим работоспособность библиотеки Tao: сначала мы подключим ее к проекту, затем проведем инициализацию библиотеки и инициализацию OpenGL, а в качестве проверки визуализируем сферу с помощью библиотеки FreeGlut.
Мы не будем вдаваться в подробности настройки и инициализации OpenGL в C# — мы лишь проверим работоспособность и научимся размещать специальный элемент управления, предназначенный для визуализации сцены в окне программы. На выходе мы получим простейшее приложение с визуализацией трехмерной сферы.

В этой главе мы углубимся в вопросы первоначальной инициализации OpenGL, которая предшествует визуализации любой трехмерной сцены. В предыдущей главе мы рассмотрели пример программы, визуализировавшей каркас трехмерной сферы, но не углублялись в процесс настройки нашего приложения. Теперь мы полностью проанализируем код этого приложения и объясним, каким образом происходит инициализация OpenGL и реализуется визуализация объектов.

В этой уроке мы познакомимся с визуализацией простейших примитивов (2D примитивов). Вы узнаете подробнее о работе команд glVertex, а также на практике используете их для визуализации двухмерного рисунка из линий.

В данной части главы мы более подробно познакомимся с методами визуализации 2D примитивов. Пример, рассматриваемый в данной главе, будет немного более сложным, но при этом динамичным и более интересным: мы реализуем оконное приложение, на котором будет визуализирован треугольник, на котором будет разложен цветовой спектр. Спектр будет меняться с помощью элементов управления, расположенных на форме.

Читайте также:  ',a)+length('')-1); Delete(a,pos('

В данной главе мы рассмотрим процесс создания программы, задачей которой будет визуализация графика заданной функции.
Особенностью программы будет то, что в ней будет анимированно демонстрироваться то, как меняются значения функции на графике. Вы получите возможность попрактиковаться в реализации анимации при визуализации 2D изображений.

Целью данной главы будет создание простого растрового редактора в OpenGL с использованием C# .NET. Небольшое приложение, по своей функциональности напоминающее Windows Paint. В процессе реализации этой главы вы закрепите навыки 2D визуализации, а также построения приложения, включающего большое количество инструментов и методов платформы .NET. В первой части главы будет обозначена цель и шаги ее реализации в ходе урока. После рассмотрения общего принципа функционирования программы, мы создадим основу оконного приложения, необходимые меню, панели инструментов и другие элементы. Создав основу оболочки программы, мы сначала добьемся минимального уровня работы программы – рисование лишь одной тестовой кистью, слой будет работать только один, цвет рисования нельзя будет изменять.

Целью данной главы будет создание простого растрового редактора в OpenGL с использованием C# .NET. Небольшое приложение, по своей функциональности напоминающее Windows Paint. В процессе реализации этой главы вы закрепите навыки 2D визуализации, а также построения приложения, включающего большое количество инструментов и методов платформы .NET.

Во второй части главы мы доведем до ума оболочку программы, а именно добавим несколько инструментов рисования, функцию выбора цвета.

Источник

Использование OpenGL в среде .NET с помощью C#

Сначала необходимо установить одну из библиотек для работы с OpenGl, так как работать из c# с WinAPI не очень удобно, особенно если дело касается импорта структур. Для примера я использую библиотеку Tao www.taoframework.com

Создание проекта и подключение библиотеки Tao OpenGL в С#.

Сначала создайте новый проект, в качестве шаблона установив приложение Windows Forms. Назовите его «Tao-OpenGL».
Дождитесь пока MS Visual Studio закончит генерацию кода шаблона. Теперь перейдите к окну Solution Explorer (Обозреватель решений). Здесь, нас интересует узел Links, который отображает связи с библиотеками, необходимыми для работы нашего приложения (рисунок).

image

Щелкните по этому узлу правой клавишей мыши, после чего, в открывшемся контекстном меню выберите «Добавить ссылку» (“Add Link”), как показано на следующем рисунке.

image

  1. Tao.OpenGL.dll — отвечает за реализация библиотеки OpenGL
  2. Tao.FreeGlut.dll — отвечает за реализацию функций библиоеки Glut. Мы будем ее использовать для инициализации рендера, а так же для различных других целей.
  3. Tao.Platform.Windows.dll — отвечает за поддержку элементов непосредственно для визуализации непосредственно на платформе Windows.
Читайте также:  Заголовок страницы

image

Процесс добавления библиотек Tao.OpenGL,Tao.FreeGLUT и Tao.Platform.Windows для последующей инициализации и работы с OpenGL в C#:

Теперь перейдите к исходному коду окна. Для работы с нашими библиотеками, нам необходимо подключить соответствующие пространства имен:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

// для работы с библиотекой OpenGL
using Tao.OpenGl;
// для работы с библиотекой FreeGLUT
using Tao.FreeGlut;
// для работы с элементом управления SimpleOpenGLControl
using Tao.Platform.Windows;

Теперь вернитесь к конструктору диалогового окна и перейдите к окну Toolbox (панель элементов). Щелкните правой кнопкой на вкладке «Общие», и в раскрывшемся контекстном меню выберите пункт «Выбрать элементы» (Select elements), как показано на рисунке.

image

Выбор опции добавления элемента:

image

В открывшемся окне найдите элемент SimpleOpenGLControl и установите возле него галочку, как показано на рисунке. Затем нажмите ОК.

image

Теперь данный элемент станет доступным для размещения на форме приложения. Перетащите элемент на форму, и разместите так, как показано на рисунке. Справа от размещенного элемента установите 2 кнопки – «Визуализировать» и «Выйти».

Теперь выделите элемент simpleOpenGlControl1, расположенный на форме и перейдите к его свойствам. Измените значение параметра name на «anT».

Инициализация OpenGL в C# .NET .

Теперь нам необходимо инициализировать работу OpenGl.
Сначала мы в конструкторе класса должны инициализировать работу элемента anT:
public Form1()

Снова перейдите к конструктору и сделайте двойной щелчок левой клавишей мыши на форме – создастся функция обработчик события загрузки формы. В ней мы поместим код инициализации OpenGl. Cейчас мы протестируем работу библиотек OpenGL и FreeGLUT.

private void Form1_Load(object sender, EventArgs e)

// инициализация Glut
Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);

// очитка окна
Gl.glClearColor(255, 255, 255, 1);

// установка порта вывода в соотвествии с размерами элемента anT
Gl.glViewport(0, 0, anT.Width, anT.Height);

// настройка проекции
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Glu.gluPerspective(45, (float)anT.Width / (float)anT.Height, 0.1, 200);
Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();

// настройка параметров OpenGL для визуализации
Gl.glEnable(Gl.GL_DEPTH_TEST);
Gl.glEnable(Gl.GL_LIGHTING);
Gl.glEnable(Gl.GL_LIGHT0);

На окне мы создали 2 кнопки. Обработчик кнопки выйти будет выглядеть следующим образом
//обработчик кнопки «выйти»
private void button2_Click(object sender, EventArgs e)

Обработчик кнопки «Визуализировать» будет содержать код, реализующий визуализацию сеточного каркаса сферы, (за отрисовки трехмерной сферы будет отвечать библиотека FreeGLUT). Код, который будет размещен в данной функции, отвечает за разные технические аспекты визуализации.

Код функции:
// обработчик кнопки «визуализировать»
private void button1_Click(object sender, EventArgs e)

Gl.glLoadIdentity();
Gl.glColor3i(255, 0, 0);

Gl.glPushMatrix();
Gl.glTranslated(0,0,-6);
Gl.glRotated(45, 1, 1, 0);

// рисуем сферу с помощью библиотеки FreeGLUT
Glut.glutWireSphere(2, 32, 32);

Gl.glPopMatrix();
Gl.glFlush();
anT.Invalidate();

Откомпилируйте и запустите приложение.
Результат работы приложения вы увидите после нажатия кнопки «визуализировать». Если вы правильно набрали все исходные коды и выполнили все описанные действия, то вы увидите визуализацию сферы.

Источник

Оцените статью