Функции и элементы OpenGL, используемые для построения основных форм в C#

OpenGL functions and elements used to build basic forms in C #
Цитировать:
Хаятов Х.У., Атаева Г.И., Хайдаров О.Р. Функции и элементы OpenGL, используемые для построения основных форм в C# // Universum: технические науки : электрон. научн. журн. 2020. 11(80). URL: https://7universum.com/ru/tech/archive/item/10915 (дата обращения: 05.05.2024).
Прочитать статью:

 

АННОТАЦИЯ

В статье показаны функции и элементы, используемые для построения основных форм и реализации их преобразований в C#.

ABSTRACT

The article shows the functions and elements used to build basic forms and implement their transformations.

 

Ключевые слова: OpenGL, рисование, линия, вершины, элемент управления.

Keywords: OpenGL, drawing, line, vertices, control.

 

Рисование линии в OpenGL основано на использовании вершин, т.е. если вы хотите нарисовать линию, вы должны определить две вершины (начало и конец), линия будет нарисована в соответствии с выбранным вами режимом соединения с учетом каждой из определены вершины (GL_LINESGL_POLYGON и т. д.), то, если мы определим четыре вершины и выберем в качестве режима соединения «GL_LINES», это может привести к двухстрочной обводке, но, если вы выберете «GL_QUADS», это приведет к квадрату (рис.1.) [1].

 

Рисунок 1. Рисование линии

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

El SimpleOpenGlControl принадлежит Tao Framework, и если мы хотим его использовать, мы должны добавить ссылку на Tao.Platform.Windows (рис.2).

 

Рисунок 2. Установка ссылки на Tao.Platform.Windows

 

SimpleOpenGlControl

Шаг 1:

общедоступная форма Form1 ()

        {

            InitializeComponent ();

            int height = simpleOpenGlControl1.Height;

            int width = simpleOpenGlControl1.Width;

            simpleOpenGlControl1.InitializeContexts ();

            Gl .glViewport (0, 0, ширина, высота);

            Gl .glMatrixMode ( Gl .GL_PROJECTION);

            Gl .glLoadIdentity ();

            Glu .gluPerspective (45.0f, ( двойная ) ширина / ( двойная ) высота, 0,01f, 5000.0f);

        }

двойной xrot, yrot, zrot = 0;

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

SimpleOpenGlControl1.InitializeContexts () Инициализируйте контекст управления или рабочую область.

Gl .glViewport () .- Рабочая область.

Gl .glMatrixMode () .- Укажите, какая матрица является текущей матрицей Gl  

.GL_PROJECTION .- Определяет свойства камеры, которая просматривает объекты 
Gl .GL_MODELVIEW .- Матрица определяет, как ваши объекты преобразуются Glu .gluPerspective .- настраиваем матрицу перспективной проекции 

Шаг 2:

Теперь мы готовы приступить к рисованию. Для этого воспользуемся событием «Paint» элемента управления.

private void simpleOpenGlControl1_Paint (отправитель объекта, PaintEventArgs e) // событие OnPaint    

          { 

Gl .glClear ( Gl .GL_COLOR_BUFFER_BIT |Gl .GL_DEPTH_BUFFER_BIT); // очищаем буферы до предустановленных значений

Gl .glMatrixMode ( Gl .GL_MODELVIEW);

Gl .glLoadIdentity ();  // загружаем единичную матрицу

Gl .glTranslated (0, 0, -4);   // перемещает нашу фигуру (x, y, z)
Gl .glRotated (xrot + = 0.5, 1, 0, 0); // вращаемся по x 

Gl .glRotated (yrot + = 0.3, 0, 1, 0); //  вращаемся по оси y

 Gl .glRotated (zrot + = 0.2, 0, 0, 1); // вращаемся по оси z

            // вид 1

Gl .glBegin ( Gl .GL_LINE_LOOP);    // начинаем рисовать GL_LINE_LOOP - это режим подключения

Gl .glColor3ub (255, 0, 255);

Gl .glVertex3d (1, 1, -1);

Gl .glVertex3d (1, -1, -1);

Gl .glVertex3d (-1, -1, -1);

Gl .glVertex3d (-1, 1, -1);

Gl .glEnd ();

            // вид 2

Gl .glBegin ( Gl .GL_LINE_LOOP);

Gl .glColor3ub (0, 255, 255);

Gl .glVertex3d (-1, -1, -1);

Gl .glVertex3d (1, -1, -1);

Gl .glVertex3d (1, -1, 1);

Gl .glVertex3d (-1, -1, 1);

Gl .glEnd ();

            // вид 3

Gl .glBegin ( Gl .GL_LINE_LOOP);

Gl .glColor3ub (255, 255, 0);

Gl .glVertex3d (-1, 1, -1);

Gl .glVertex3d (-1, -1, -1);

Gl .glVertex3d (-1, -1, 1);

Gl .glVertex3d (-1, 1, 1);

Gl .glEnd ();

            // вид 4

Gl .glBegin ( Gl .GL_LINE_LOOP);

Gl .glColor3ub (0, 0, 255);

Gl .glVertex3d (1, 1, 1);

Gl .glVertex3d (1, -1, 1);

Gl .glVertex3d (1, -1, -1);

Gl .glVertex3d (1, 1, -1);

Gl .glEnd ();

            // вид 5

Gl .glBegin ( Gl .GL_LINE_LOOP);

Gl .glColor3ub (0, 255, 0);

Gl .glVertex3d (-1, 1, -1);

Gl .glVertex3d (-1, 1, 1);

Gl .glVertex3d (1, 1, 1);

Gl .glVertex3d (1, 1, -1);

Gl .glEnd ();

            // вид 6

Gl .glBegin (Gl .GL_LINE_LOOP);

Gl .glColor4d (255, 0, 0, 100);

Gl .glVertex3d (-1, 1, 1);

Gl .glVertex3d (-1, -1, 1);

Gl .glVertex3d (1, -1, 1);

Gl .glVertex3d (1, 1, 1); Gl .glEnd ();

           }

Gl .glTranslated (0, 0, -4); // перемещает нашу фигуру (x, y, z)

Gl .glRotated (xrot + = 0.5, 1, 0, 0); // вращаемся по x

Gl .glRotated (yrot + = 0.3, 0, 1, 0); // вращаемся по оси y 

Gl .glRotated (zrot + = 0.2, 0, 0, 1); // вращаемся по оси z

Применяет матрицу вращения и перевода к нашей фигуре.

 

Список литературы:

  1. Атаева.Г.И. Технологический подход к образовательному процессу// Academy. № 6(33), 2018. С. 91-92.    
  2. Хаятов Х.У, Жалолова Н.Х. О нахождении нормы функционала погрешности интерполяционных формул типа эрмита в периодическом пространстве // Проблемы вычислительной и прикладной математики. — 2017.  — № 4 (10). — С. 98-103.
  3. Хаятов Х. У., Жураева Л. И., Жураев З. Ш. Основные понятия теории нечетких множеств // Молодой ученый.  — 2019. — № 25 (263). — С. 41-44.
  4. Хаятов Х. У., Хайдаров О. C # dasturlash tilida fayl va kataloglar bilan ishlash// «МАТЕМАТИКА, ФИЗИКА ВА АХБОРОТ ТЕХНОЛОГИЯЛАРИНИНГ ДОЛЗАРБ МУАММОЛАРИ» мавзусидаги Республика миқёсидаги онлайн илмий-амалий анжумани. ТЕЗИСЛАР ТЎПЛАМИ. Бухоро 2020, 15 апрель 319-321с.
Информация об авторах

старший преподаватель, Бухарский государственный университет, Республика Узбекистан, г. Бухара

Senior Lecturer, Bukhara state University, Republic of Uzbekistan, Bukhara

ст. преподаватель, Бухарский государственный университет, Республика Узбекистан, г. Бухара

Senior lecturer, Bukhara state University, Republic of Uzbekistan, Bukhara

магистрант, Бухарский государственный университет, Республика Узбекистан, г. Бухара

Master's student, Bukhara State University, Republic of Uzbekistan, Bukhara

Журнал зарегистрирован Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор), регистрационный номер ЭЛ №ФС77-54434 от 17.06.2013
Учредитель журнала - ООО «МЦНО»
Главный редактор - Ахметов Сайранбек Махсутович.
Top