Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

PRO-232B_Ikhsanova_Elina_LR1

.docx
Скачиваний:
0
Добавлен:
07.04.2025
Размер:
58.11 Кб
Скачать

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования

Уфимский университет науки и технологий

Факультет информатики и робототехники

Кафедра вычислительной математики и кибернетики

Отчет к лабораторной работе №1

По дисциплине «Инженерная и компьютерная графика»

Выполнил: студент группы ПРО-232Б

Ихсанова Э. А.

Проверил: доцент каф. ВМиК

Котельников В. А.

Уфа 2023

Цель работы:

Познакомиться с OpenGL.

Ход работы:

Установить необходимые библиотеки и пакеты, с их помощью создать окно с выведенным в нем треугольником.

Шаг 1:

На первом шаге необходимо вывести окно с чёрным дисплеем.

Рис. 1 Окно

Шаг 2:

В следующем шаге мы используем простейший вызов рисования и создаем вершину – точку.

Рис. 2 Окно с точкой

Шаг 3:

В последнем шаге мы просто расширяем предыдущий шаг, рисуем треугольник, создавая видимые вершины внутри поля.

Рис. 3 Окно с треугольником

Вывод

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

Ссылка на GitHub: https://github.com/eikhovna/IG-lab1

Приложение 1:

inzh1.cpp

#include <stdio.h>

#include <GL/glew.h>

#include <GL/freeglut.h>

#include "header.h"

GLuint VBO;

static void RenderSceneCB()

{

glClear(GL_COLOR_BUFFER_BIT);

glEnableVertexAttribArray(0);

glBindBuffer(GL_ARRAY_BUFFER, VBO);

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);

glDrawArrays(GL_TRIANGLES, 0, 3);

glDisableVertexAttribArray(0);

glutSwapBuffers();

}

static void InitializeGlutCallbacks()

{

glutDisplayFunc(RenderSceneCB);

}

static void CreateVertexBuffer()

{

Vector3f Vertices[3];

Vertices[0] = Vector3f(-1.0f, -1.0f, 0.0f);

Vertices[1] = Vector3f(1.0f, -1.0f, 0.0f);

Vertices[2] = Vector3f(0.0f, 1.0f, 0.0f);

glGenBuffers(1, &VBO);

glBindBuffer(GL_ARRAY_BUFFER, VBO);

glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW);

}

int main(int argc, char** argv)

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);

glutInitWindowSize(1024, 768);

glutInitWindowPosition(100, 100);

glutCreateWindow("Tutorial 03");

InitializeGlutCallbacks();

// Must be done after glut is initialized!

GLenum res = glewInit();

if (res != GLEW_OK) {

fprintf(stderr, "Error: '%s'\n", glewGetErrorString(res));

return 1;

}

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

CreateVertexBuffer();

glutMainLoop();

return 0;

}

Math_3d.h

#ifndef MATH_3D_H

#define MATH_3D_H

struct Vector3f

{

float x;

float y;

float z;

Vector3f()

{

}

Vector3f(float _x, float _y, float _z)

{

x = _x;

y = _y;

z = _z;

}

};

Соседние файлы в предмете Инженерная и компьютерная графика