Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Графіки
Предмет:
Програмування
Група:
ЗІ-32

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра ЗІ / Звіт до лабораторної роботи № 1 з дисципліни “Програмування комп’ютерної графіки” Створення проекту і підключення бібліотеки TaoOPENGL в С# Львів – 2011 Порядок виконання роботи Мета роботи - cтворення програми-заготовки для роботи з бібліотекою OpenGL. Спочатку створіть новий проект, як шаблон встановивши додаток WindowsForms. Назвіть його TaoGl_<grupa>_<prizvyshe>. Дочекайтесь поки MSVisualStudioзакінчить генерацію кода шаблону. Тепер перейдіть до вікна SolutionExplorer. Перейдіть на вузол Links, який відображає зв'язки з бібліотеками, необхідними для роботи нашого застосування (рис. 1) / Рис. 1 Назвіть головне вікно «Графіка …… ». (Властивості вікна, параметр Text). Клацніть по цьому вузлу (Links) правою клавішею миші, після чого, в контекстному меню, що відкрилося, виберіть «Додати посилання» (“AddLink”), як показано на рис. 2. / Рис. 2 У вікні, що відкрилося, «Додати посилання», перейдіть до закладки огляд. Після цього перейдіть до директорії, в яку була встановлена бібліотека TaoFramework. (Позамовчанню - “C:\programFiles\taoFramework\”). Нам буде потрібно теку bin- в ній зберігаються необхідні нам бібліотеки. Перейдіть в теку binі виберіть 3 бібліотеки, як показано на малюнку 3: Tao.OpenGL.dll - відповідає за реалізація бібліотеки OPENGL Tao.FreeGlut.dll - відповідає за реалізацію функцій бібліоєкиGlut. Ми її використовуватимемо для ініціалізації рендера, а так само для різних інших цілей. Tao.Platform.Windows.dll - відповідає за підтримку елементів безпосередньо для візуалізації безпосередньо на платформі Windows (Рис. 2). / Рис. 3 Тепер перейдіть до початкового коду вікна. Для роботи з нашими бібліотеками, нам необхідно підключити відповідні простори імен: 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 (панель елементів). Клацніть правою кнопкою на вкладці «Загальні», і в контекстному меню, що розкрилося, виберіть пункт «Вибрати елементи» (Selectelements), як показано на Рис. 4. / Рис. 4 У вікні, що відкрилося, знайдіть елемент Simpleopenglcontrolі встановіть біля нього галочку, як показано на Рис. 5. Потім натисніть ОК. / Рис. 5 Тепер даний елемент стане доступним для розміщення на формі додатку. Перетягніть елемент на форму, і розмістіть так, як показано на малюнку 7. Праворуч від розміщеного елементу встановіть 3 кнопки - «Візуалізувати», «Візуалізувати»і «Вийти». Наступним кроком буде виділити елемент simpleopenglcontrol1, розташований на формі і перейти до його властивостей. Змініть параметр name на значення “AnT”. / Рис. 6 Тепер нам необхідно ініціалізувати роботу Opengl. Спочатку ми в конструкторі класу повинні ініціалізувати роботу елементу OnGl: public Form1() { InitializeComponent(); OnGl.InitializeContexts(); } Знову перейдіть до конструктора і зробіть подвійне клацання лівою клавішею миші на формі - утвориться функція обробник події завантаження форми. У ній ми помістимо код ініціалізації Opengl. Детальний опис того, що робить цей кодбуде розглянуто нижче, а зараз ми тільки протестуємо роботу бібліотек 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); // установкапортавиводуувідповідностізрозмірамиэлементаOnGl Gl.glViewport(0, 0, OnGl.Width, OnGl.Height); // настройкапроекції Gl.glMatrixMode(Gl.GL_PROJECTION); Gl.glLoadIdentity(); Glu.gluPerspective(45, (float)OnGl.Width / (float)OnGl.Height, 0.1, 200); Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glLoadIdentity(); // настройкапараметрів OpenGL длявізуалізації Gl.glEnable(Gl.GL_DEPTH_TEST);   } Увікні ми створили 3 кнопки. Обробник кнопки вийти буде виглядати наступним чином: // Обробник кнопки "вийти" private void button2_Click(object sender, EventArgs e) { Application.Exit(); } Обробник кнопки «Візуалізувати» буде міститикод, щореалізуєвізуалізацію сіткового каркаса сфери, або іншої фігури, (завідрисовку тривимірної сфери відповідатиме бібліотека FREEGLUT). Код, який буде розміщений в даній функції, відповідає за різні технічні аспекти візуалізація. Код функції: // обробник кнопки "візуалізувати" private void button1_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glColor3f(1.0f, 0, 0); Gl.glPushMatrix(); Gl.glTranslated(0,0,-6); Gl.glRotated(45, 1, 1, 0); // будуємосферуздопомогоюбібліотекиFreeGLUT //Glut.glutWireSphere(2, 32, 32); //будуєморомбододекаедрсдопомогоюбібліотекиFreeGLUT Glut.glutWireRhombicDodecahedron(); Gl.glPopMatrix(); Gl.glFlush(); OnGl.Invalidate(); } Обробник кнопки “Очистити” напишіть самостійно. Текст програми using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; // для роботи з бібліотекою OpenGL using Tao.OpenGl; // для роботи з бібліотекою FreeGLUT using Tao.FreeGlut; // для роботи з бібліотекою SimpleOpenGLControl using Tao.Platform.Windows; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); AnT.InitializeContexts(); } 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); } private void button1_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glColor3f(1.0f, 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(); } private void button2_Click(object sender, EventArgs e) { // обробник кнопки «Очищення» Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); AnT.Invalidate(); } private void button3_Click(object sender, EventArgs e) { Application.Exit(); } } } Результат роботи програми Коли натиснемо на кнопку «Візуалізація», то отримаємо зображення сфери: / Рис. 7 Коли натиснемо кнопку «Очищення», то зображення зникне: / Рис. 8 Висновок В данай лабораторній роботі я навчився використовувати елементи бібліотеки OpenGl для побудови зображення.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!