Opengl архитектурасы. Компьютерлік графика


Мазмұны

Мазмұн

Кіріспе

  1. Компьютерлікграфика . . . 3

а) Растрлық графика . . . 4

б) Векторлық графика

в) Фрактальды графика

2. OpenGL кітапханасы . . . 4

3. OpenGL интерфейс . . . 5

4. OpenGL архитектурасы . . . 5

5. Геометриялық объектілерді салу . . . 8

6. Растрлық графика ерекшелігі. Photoshop бағдарламасының интерфейсі . . . 11

7. Corel Draw программасының интерфейсі. Фигураларды салу, оларды өзгерту . . . 14

8. AutoCad программасы . . . 21

9. 3D Max программасы . . . 22

10. Қорытынды . . . 27

Есеп . . . 28

Қолданылған әдебиеттер . . . 29

Компьютерлік графика

Бұл компьютерге графикалық бейнелермен (суреттермен, сызумен, видеокадрлармен және т. б. ) жұмыс істеу мүмкіндігін беретін информатиканың бір бөлімі. Сонымен бірге компьютер көмегімен графикалық бейнелер алу әдістері құрылып қолданылады.

Компьютерлік графиканың даму этаптары:

  • белгілік баспа құрылғысында символдан жасалған мозаика түріндегі псевдографиялық баспа;
  • плоттер көмегімен қағазға графикалық бейнелерді (графиктер, диаграмма, сызбалар) шығару;
  • түрлі-түсті баспа құрылғыларға графикалық баспа, көпшілікке арналған графикалық пакеттерге графикалық дисплейлерді пайдалану.

Компьютерлік графиканың қолданылу облысы:

  1. Ғылыми графика
  2. Іскерлік графика
  3. Конструкторлық графика
  4. Безендірмелік графика
  5. Көркемдік және жарнамалық графика: үш өлшемді шынайы бейнелер, компьютерлік жасанды қозғалыс, мультимедиа.

Компьютерлік графика кескіндерін қалыптастыру әдістеріне байланысты графика растрлық (bitmap немесе raster), векторлық (vector draw) және фрактальды (fractal) деп бөлінеді.

Растрлық кескіндер арасында ерекше маңызды орын алатын нүкте шешуі (разрешение) түсінігі. Шешу деп - ұзындық бірлігінде жататын нүктелер санын айтады. Экран бетіндегі нүктені көбінесе пиксел деп атайды. Шешу - растрдың маңызды сипаттамасы. Оның өсуі пикселдердің майда болуына әсер етеді, сондықтан біз пикселдерді бөлек тұрған нүктелер ретінде қабылдамай, ұсақталмаған бір объект ретінде көріп қабылдаймыз. Қазіргі заманғы мониторларда пиксел ұзындығы 0, 28 мм-0, 21 мм.

1 сурет. Растр 2 сурет. Растрмен құрылған кескін

Жылдан жылға қазіргі мониторлардың шешуші қабілеттілігі өсуде. Шешудің өлшем бірліктеріде әр түрлі болады. Олар шешу ұғымының ерекшеленуіне байланысты: 1. оригинал шешуі; 2. экрандағы кескінді шешуі; 3. баспаға жіберілетін кескін шешуі.

Оригиналдың шешуін dpi (dots per inch) - дюймдағы нүктелер санымен өлшейді (1дюйм ~25 мм 3 ) . Енді сол оригиналды экранда бейнелеу үшін пиксел қолданылады. Пиксел өлшемі экранның шешуіне, оригиналдың шешуіне және бейне масштабына байланысты.

Растрлық графика

Растрлық графиканың негізгі элементі нүкте болып табылады. Принтердің паспортында жазылған 600 dpi деген сипаттама 1 дюйм кесіндісінде принтер 600 нүкте басып шығаратынын көрсетеді. Яғни баспадан шығару үшін бейне растрленуі керек. Растрлену процесі принтердің лазер сәулесін құрайтын нүктелерді растрлік нүктелерді құрайтын топтарға біріктіруден тұрады. Біріктіру кезінде оригинал үстінен растрлық тор орнатылады. Бұндай тордың жиілігі lpi (lines per inch) - дюймдағы сызықтар санымен өлшенеді де линиатура деп аталады. Сол тор ұяшықтары растр нүктелерін құрайды. Растрлық кескін линиатурасы әрқашан принтер шешуінен төмен, өйткені бір ғана растрлік нүктені принтерден шығару үшін оған бірнеше нүкте қатысады. Растрлік графиканың кемшілігі - кескінді үлкейту кезіндегі пикселизация. Кескін масштабын үлкейткен кезде оригиналдың нүктелері де үлкейіп көзге түсетіндей болып, кескінді бұрмалайды.

Векторлық графика

Векторлық графикадағы бейнелеуде негізгі элемент сызық болып табылады. Сызық - бұл векторлық графиканың негізгі объектісі және математикалық түрде бір объект сияқты қабылданады, сондықтан векторлық графикада объектіні кескіндеу үшін растрлық графикаға қарағанда берілгендер көлемі аздау болады. Кез келген объект сияқты сызық та өзінің қасиеттерімен ерекшеленеді: формасы (түзу, қисық), қалындығы, түсі, сызықтарымен (біртұтас, үздікті) . Тұйық сызықтар толықтыру қасиетке ие болады. Толықтыру растрлық және векторлық болып бөлінеді. Қарапайым сызық екі жағынан нүктелермен шектеледі, оларды түйін деп атайды. Векторлық графиканың барлық объектілері сызық арқылы құрастырылады. Векторлық графиканың объектілерінің негізі - математикалық аппарат.

Нүкте - бұл объект жазықтықта екі (х, у) сандармен (координаталармен) ұсынылады, олар сол нүктенің координаталар ортасына қарай орналасуын білдіреді.

Түзу сызық - оның теңдеуі y=kx+b, мұнда k мен b коэффициенттер.

Түзу кесіндісі - оны көрсету үшін басы мен аяғын сипаттайтын екі параметр (нүктелер) қажет.

Екінші деңгейдегі қисықтар - бұларға парабола, гипербола, эллипс және т. б. жатады.

Фрактальды графика

Фрактальды графика векторлық графика сияқты математикалық есептеулерге негізделген. Фрактальды графикада негізгі элемент болып математикалық формула табылады, яғни компьютердің жадында ешқандай объект сақталмайды және кескіндер тек теңдеулер арқылы құрылады. Фрактал деп бүтінге тән бөліктерден тұратын структураны атайды. Осындай әдіспен қарапайым регулярлық құрылымдар, күрделі иллюстрациялар, табиғи ландшафтар және үш өлшемді обьектілер салынады.

OpenGL кітапханасы

OpenGL - Open Graphics Library, ашық графикалық кітапхана болып саналады. «Ашық» термині өндірішулерге бағынбайды деген ұғымды білдіреді. Бұл кітапхананы Microsoft, Silicon Graphics сияқты ірі корпорациялар шығарады.

OpenGL кітапханасы үш мөлшерлі графиканы программалайтын интерфейс негізінде қарастырылады. Бағдарламаны құрушы белгілі бір биіктікті таңдап, оны қалайша қосу керектігін көрсетеді. Камералардың және шамдардың параметрлерін құрайды. Ал OpenGL кітапханасы бұл параметрлерді қолдана отырып, экранға қажетті суретті бейнелеп шығарады. Бұл кітапханаға графикалық қосымшаларды программалауға қажетті 120-ға жуық командалар кіреді. OpenGL графикалық жүйені қазіргі заманғы программалық және аппараттық платформаларды шығарушылардың көбісі қолдайды. OpenGL стандартының негізгі ерекшеліктері:

  • тұрақтылық. Алғаш шыққан программалардың версиялары кейін шыққан өзгерістерде есепке алынады
  • сенімділік. OpenGL пайдаланған қосымшалар барлық операциялық жүйелерінде бірдей графикалық нәтиже (көрініс) береді.
  • қарапайымдылық. OpenGL стандартының түсінікті интерфейсі эффективті қосымшаларды құруға мүмкіндік береді

OpenGL мүмкіндіктерін оның функциялары арқылы көрсетейік. Кітапхананың функциялары 5 категорияға бөлінеді:

  • қарапайым кесіндіні ұсыну функциялары. OpenGL-да примитив ретінде нүкте, сызық, көпбұрыш т. б. қарастырады.
  • жарық көзін ұсыну функциялары
  • атрибуттарын ұсыну функциялары. Атрибуттар программистке бейненің экрандағы көрінісін анықтауға көмектеседі. OpenGL жүйесі түсті, текстураны, жарықтандыру параметрлерін орнатуға мүмкіндік береді.
  • визуализация функцияларывиртуальды кеңістікте камера объективін орнатады, соған қарай жүйе кесіндіні дұрыс құруға мүмкіндік береді
  • геометриялық түрлендіну кері бұру, көшіру, масштабтау амалдарын орындауға көмек береді

Одан басқа OpenGL қисықтар мен беттерді құру кезінде сплайндарды пайдаланатын, көрінбейтін жақтарды өшіретін, кесінділермен пиксель деңгейінде жұмыс атқаратын қосымша операцияларды орындайды.

OpenGL интерфейсі

OpenGL кітапханалар жиынынан тұрады. Барлық базалық функциялар негізгі GL кітапханада орналасқан. Қосымша кітапханалардың тізімі:

1. GL Utility - GLU утилиталар кітапханасында куб, шар, цилиндр, диск фигуралар жиыны, сплайн құру функциялары, матрицалармен орындалатын операциялар жинақталған.

2. GL Utility Toolkit - GLUT қосымшасында ақпаратты терезелік жүйеде ұсынуға керекті функциялар орналасқан.

Төмендегі суретте Windows жүйесінің басқаруымен жұмыс істейтін кітапханалар жүйесі келтірілген.

OpenGL кітапхананың ұйымдастырылуы

OpenGL архитектурасы

OpenGL функциялары клиент-сервер моделінде таратылған. Қоымша командаларды тудырып клиент ролін атқарады, ал OpenGL сервері сол командаларды орындайды. Сервер мен клиент бір компьютерде орналасса, онда динамикалық түрінде қосылатын DLL кітапханасы сервер ретінде болады. Егер сервер бөлек компьютерде орналасса, онда берілгендерді алмастырушы арнайы протокол қолданылады.

OpenGL графикалық жүйесі графикалық берілгендерді өңдейтін бірнеше тізбектелген этаптардан тұратын конвейер деп саналады. OpenGL командалары беру ретімен орындалады, ал объектіні анықтау үшін оның визуализациясы кітапханадағы кадрлар буферіннен алынады.

OpenGL жүйесін графикалық аппаратураны басқаратын командалар тізімі деп те айтуға болады. Егер ұсынылып отырған аппаратура кадрлар буферінде анықталса, онда OpenGL орталық процессордың барлық ресурстарын пайдаланды. Көбінесе графикалық аппаратура әр түрлі деңгейлі сызбалар, көпбұрыштар, олардың үстінен орындалатын операцияларды ұсынады.


1 сурет. OpenGL конвейерінің жұмысы

OpenGL қолданушы мен аппаратура арасындағы қабат болып саналады. Сондықтан ол аппараттық қолдаудың мүмкіндіктерін пайдаланатын әр түрлі платформаларға бірлік интерфейс ұсынады.

OpenGL кадрлар буферіндегі графикалық примитивтерді (нүкте, кескін, көпбұрыш т. б. ) бір немесе одан көп төбе (vertex) арқылы анықтайды. Төбе нүкте, көпбұрыштың бұрышы бола алады. Әр төбенің координаталары, нормалі, текстуралық кординаталары және т. б. атрибуттары деп саналады. Осының бәрін өңдейтін OpenGL командалары қосымша кітапханадағы функцияларды шақыруымен іске асырылады.

Командалар синтаксисі

GL командаларының анықтамалары gl. h файлында орналасқан. Оны шақыру үшін #include <gl/gl. h> жолын теру керек. GLU кітапханасын қосу үшін glu. h файлы қосылады. Бұл кітапханалардың версиялары Microsoft Visual C++ немесе Borland C++ 5. 02 программалау тілдерінің дистрибутивтеріне енгізілген. GL кітапхананың барлық командалары (процедуралар мен функциялары) gl, ал константалар GL_ префикстерінен басталады.

OpenGL-де команданың толық аталуы төмендегідей сипатталады:

type glCommand_name[1 2 3 4] [b s i f d ub us ui] [v]

(type1 arg1, …, typeN argN)

Мұнда

gl: gl
берілген функция жататын кітапхананың аталуы, егер ол функция GLU, GLUT, GLAUX кітапханаларынан болса, онда бұл параметр glu, glut, glaux сәйкесінше: берілген функция жататын кітапхананың аталуы, егер ол функция GLU, GLUT, GLAUX кітапханаларынан болса, онда бұл параметр glu, glut, glaux сәйкесінше
gl: Command_name
берілген функция жататын кітапхананың аталуы, егер ол функция GLU, GLUT, GLAUX кітапханаларынан болса, онда бұл параметр glu, glut, glaux сәйкесінше: команда аталуы
gl: [1 2 3 4]
берілген функция жататын кітапхананың аталуы, егер ол функция GLU, GLUT, GLAUX кітапханаларынан болса, онда бұл параметр glu, glut, glaux сәйкесінше: командағы берілгендер саны
gl: [b s i f d ub us ui]
берілген функция жататын кітапхананың аталуы, егер ол функция GLU, GLUT, GLAUX кітапханаларынан болса, онда бұл параметр glu, glut, glaux сәйкесінше: аргумент типі: b символы Glbyte типін анықтайды (С\С++ тілдеріндегі char типі сияқты), f - Glfloat типі (float типтегідей), i - GLint типі (int) және т. с. с
gl: [v]
берілген функция жататын кітапхананың аталуы, егер ол функция GLU, GLUT, GLAUX кітапханаларынан болса, онда бұл параметр glu, glut, glaux сәйкесінше: бұл символдың бар болуы функция параметрлері ретінде мәндер массивіне сілтеу пайдаланатынын білдіреді.

Төменде GLUT кітапханасын қолданып жазылған кішігірім программаның мысалы келтірілген. Бұл программа “Hello, World!” сияқты мысалды жүзеге асырады. Программаны орындағаннан кейін терезенің ортасында қызыл түсті квадрат салынады.

#include <stdlib. h>/* GLUT кітапхананың қосылуы */#include <gl/glut. h>/* терезенің бастапқы ені мен биіктігі*/GLint Width = 512, Height = 512;/* куба өлшемдері */const int CubeSize = 200;/* бұл функция экранға шығаруды басқарады */void Display(void){int left, right, top, bottom;left = (Width - CubeSize) / 2;right = left + CubeSize;bottom = (Height - CubeSize) / 2;top = bottom + CubeSize;glClearColor(0, 0, 0, 1) ;glClear(GL_COLOR_BUFFER_BIT) ;glColor3ub(255, 0, 0) ;glBegin(GL_QUADS) ;glVertex2f(left, bottom) ;glVertex2f(left, top) ;glVertex2f(right, top) ;glVertex2f(right, bottom) ;glEnd() ;glFinish() ;}/* терезенің өлшемдерін өзгерту функциясы */void Reshape(GLint w, GLint h){Width = w;Height = h;/* бейнелеу аймағының өлшемдерін орнату */glViewport(0, 0, w, h) ;/* ортографиялық проекция */glMatrixMode(GL_PROJECTION) ;glLoadIdentity() ;glOrtho(0, w, 0, h, -1. 0, 1. 0) ;glMatrixMode(GL_MODELVIEW) ;glLoadIdentity() ;}/* пернетақтадан түскен хабарламаны өңдейтін функция */void Keyboard(unsigned char key, int x, int y){#define ESCAPE '\033'if( key == ESCAPE )exit(0) ;}/* қосымшаның бас циклі */main(int argc, char *argv[] ){glutInit(&argc, argv) ;glutInitDisplayMode(GLUT_RGB) ;glutInitWindowSize(Width, Height) ;glutCreateWindow("Red square example") ;glutDisplayFunc(Display) ;glutReshapeFunc(Reshape) ;glutKeyboardFunc(Keyboard) ;glutMainLoop() ;}:

#include <stdlib. h>

/* GLUT кітапхананың қосылуы */

#include <gl/glut. h>

/* терезенің бастапқы ені мен биіктігі*/

GLint Width = 512, Height = 512;

/* куба өлшемдері */

const int CubeSize = 200;

/* бұл функция экранға шығаруды басқарады */

void Display(void)

{

int left, right, top, bottom;

left = (Width - CubeSize) / 2;

right = left + CubeSize;

bottom = (Height - CubeSize) / 2;

top = bottom + CubeSize;

glClearColor(0, 0, 0, 1) ;

glClear(GL_COLOR_BUFFER_BIT) ;

glColor3ub(255, 0, 0) ;

glBegin(GL_QUADS) ;

glVertex2f(left, bottom) ;

glVertex2f(left, top) ;

glVertex2f(right, top) ;

glVertex2f(right, bottom) ;

glEnd() ;

glFinish() ;

}

/* терезенің өлшемдерін өзгерту функциясы */

void Reshape(GLint w, GLint h)

{

Width = w;

Height = h;

/* бейнелеу аймағының өлшемдерін орнату */

glViewport(0, 0, w, h) ;

/* ортографиялық проекция */

glMatrixMode(GL_PROJECTION) ;

glLoadIdentity() ;

glOrtho(0, w, 0, h, -1. 0, 1. 0) ;

glMatrixMode(GL_MODELVIEW) ;

glLoadIdentity() ;

}

/* пернетақтадан түскен хабарламаны өңдейтін функция */

void Keyboard(unsigned char key, int x, int y)

{

#define ESCAPE '\033'

if( key == ESCAPE )

exit(0) ;

}

/* қосымшаның бас циклі */

main(int argc, char *argv[] )

{

glutInit(&argc, argv) ;

glutInitDisplayMode(GLUT_RGB) ;

glutInitWindowSize(Width, Height) ;

glutCreateWindow("Red square example") ;

glutDisplayFunc(Display) ;

glutReshapeFunc(Reshape) ;

glutKeyboardFunc(Keyboard) ;

glutMainLoop() ;

}

Геометриялық объектілерді салу

OpenGL қолданатын программаның мәселесі үш өлшемді көріністі өңдеуде және кадр буферінде интерактивті бейнелеуде. Үш өлшемді көрініс үш өлшемді объектілерден, жарық көзінен және абстрактты бақылаушыдан (виртуальды камера) тұрады. Сондықтан кесінді әр уақытта өзгеріліп тұрады. OpenGL оны өзгертетін функцияны шақырады. Ол функция үш қадамнан тұрады:

1. OpenGL буферін тазалау;

2. Бақылаушының орнын анықтау;

3. Геометриялық объектілерді салу және өңдеу

1. Буферді тазалау командасы:

void glClearColor (clampf r, clampf g, clampf b, clampf a)

void glClear (bitfield buf)

Мұнда glClearColor команда кадр буферін толтыратын түсті орнатады. Алғашқы үш параметр [0, 1] интервалында жататын R, G, B түс компоненталарын орнатады. Төртінші параметр бірге тең (0, 0, 0, 1) қара түсті альфа компонентаны ұсынады. glClear буферді тазалайды. Buf параметрі қай буферлерді тазалайтын тұрақты сандар комбинациясын білдіреді. Түс пен оның тереңділігі буферін тазартатын команда:

glClear(GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT)

2. Бақылаушының орнын анықтау көп параметрлерге байланысты . Олардың ішінде жарықтандыру моделі, объект қай материалдан жасалғанын талдау, жарық көзін анықтау функциялары жатады.

Жарықтандыру моделі

OpenGL кітапханасында нүктенің түсін анықтайтын текстура және материал қасиеттері, сол нүктенің нормаль өлшемі, бақылаушы мен жарық көзінің орны атты факторлар қамтамасыз етеді.

Жарықтандырудың глобальды параметрлерін енгізетін команда

void glLightModel[i f] (GLenum pname , GLenum param )

void glLightModel[i f] v (GLenum pname , const GLtype * params )

Мұнда pname аргументі жарықтандыру моделінің қай параметрі бапталатынын анықтайды, оның қабылай алатын мәндері төмендегі кестеде көрсетілген.

:
мәні бульдік типті, сондықтан оның мәні FALSE болса, онда көрініс бағыты -z осіне параллель болып саналады, ал TRUE мәні бақылаушының координаталар жүйесінің ортасында орналасуын білдіреді.: мәні бульдік типті, сондықтан оның мәні FALSE болса, онда көрініс бағыты -z осіне параллель болып саналады, ал TRUE мәні бақылаушының координаталар жүйесінің ортасында орналасуын білдіреді.
:
мәні бульдік типті, сондықтан оның мәні FALSE болса, онда көрініс бағыты -z осіне параллель болып саналады, ал TRUE мәні бақылаушының координаталар жүйесінің ортасында орналасуын білдіреді.: бұл параметрдің де мәні бульдік типті, ол көрінетін және көрінбейтін жақтардың жарықтануын есептеу процесін басқарады. Егер мәні FALSE, онда жарықтандыру көрінетін жақ үшін есептеледі, ал TRUE - көрінбейтін жақтар үшін
:
мәні бульдік типті, сондықтан оның мәні FALSE болса, онда көрініс бағыты -z осіне параллель болып саналады, ал TRUE мәні бақылаушының координаталар жүйесінің ортасында орналасуын білдіреді.: бастапқы мәні (0. 2, 0. 2, 0. 2, 1. 0) . Бұл параметр фондық жарықтандырудың түсін анықтайды.

Объект қай материалдан жасалғанын талдау мына командамен сипатталады

void glMaterial[i f] (GLenum face , GLenum pname ,

GLtype param )

void glMaterial[i f] v (GLenum face , GLenum pname ,

GLtype * params )

Бұл команда диффузиялық, айналық және шашыратылған шағылуды анықтайды, param мәні pname мәніне тәуелді

GL_AMBIENT: GL_AMBIENT
рarams параметрі RGBA моделін құрайтын төрт нақты немес бүтін сандардан тұруы қажет, олар шашыратқыш түсін анықтайды, бастапқы мәні (0. 2, 0. 2, 0. 2, 1. 0) .: рarams параметрі RGBA моделін құрайтын төрт нақты немес бүтін сандардан тұруы қажет, олар шашыратқыш түсін анықтайды, бастапқы мәні (0. 2, 0. 2, 0. 2, 1. 0) .
GL_AMBIENT: GL_DIFFUSE
рarams параметрі RGBA моделін құрайтын төрт нақты немес бүтін сандардан тұруы қажет, олар шашыратқыш түсін анықтайды, бастапқы мәні (0. 2, 0. 2, 0. 2, 1. 0) .: бұл параметр диффузиялық шағылудың түсін анықтайды, бастапқы мәні (0. 8, 0. 8, 0. 8, 1. 0) .
GL_AMBIENT: GL_SPECULAR
рarams параметрі RGBA моделін құрайтын төрт нақты немес бүтін сандардан тұруы қажет, олар шашыратқыш түсін анықтайды, бастапқы мәні (0. 2, 0. 2, 0. 2, 1. 0) .: бұл параметр айналық шағылу түсін анықтайды, бастапқы мәні (0. 0, 0. 0, 0. 0, 1. 0) .
GL_AMBIENT: GL_SHININESS
рarams параметрі RGBA моделін құрайтын төрт нақты немес бүтін сандардан тұруы қажет, олар шашыратқыш түсін анықтайды, бастапқы мәні (0. 2, 0. 2, 0. 2, 1. 0) .: бұл параметр params 0-ден 128 дейінгі бір бүтін немесе нақты саннан тұруы керек, ол айналық шағылудың дәрежесін анықтайды, бастапқы мәні 0.
GL_AMBIENT: GL_EMISSION
рarams параметрі RGBA моделін құрайтын төрт нақты немес бүтін сандардан тұруы қажет, олар шашыратқыш түсін анықтайды, бастапқы мәні (0. 2, 0. 2, 0. 2, 1. 0) .: params жарықтың интенсивтілігін анықтайды, бастапқы мәні: (0. 0, 0. 0, 0. 0, 1. 0) .

Жарық көзін сипаттау

Көрініске жарық көзін енгізу үшін (әйтпесе көріністегі барлық объектілердің түсі қара болады) келесі команда қолданылады:

void glLight[i f] (GLenum light , GLenum pname , GLfloat param )

void glLight[i f] (GLenum light , GLenum pname , GLfloat * params )

light параметрі жарық көзін анықтайды, оны 0-ден 8-ге дейінгі GL_LIGHTi және GL_MAX_LIGHT арнайы символдардан таңдайды.

3. Геометриялық объектілердің салуын және өңдеуін матрицалар бақылайды.

OpenGL-де үш негізгі координаталар жүйесі қолданылады: солжақты, оңжақты және терезелік. Алғашқы екеуі үш өлшемді, екеуінің айырмашылығы z осінің бағытында: солжақты жүйеде - z осі экран ішіне бағытталған, оңжақтыда - бақылаушыға қарай. x осі бақылаушының оң жағына қараған, ал у осі - үстіне. Үш өлшемді ақпарат екі өлшемді терезелік координаталар жүйесіне шағылады. Оңжақты жүйе OpenGL кітапхананың негізгі жүйесі болып табылады.


OpenGL координаталар жүйесі

Әртүрлі түрлендірулерді жүргізу үшін OpenGL үш түрлі матрицаларды пайдаланады: модельно-видовая, проекциялар матрицасы және текстура матрицасы. Олардың барлығының өлшемі 4x4.

Модельно-видовая матрица параллельдік көшіру, масштабты өзгерту, бұрау амалдарын анықтайды. Проекциялар матрицасы үш өлшемді объектінің экран бетіне проекциялануын анықтайды. Текстура матрицасы объектіге текстураның орналасуын анықтайды. Қай матрица қосылатынын void glMatrixMode (GLenum mode ) командасы анықтайды. Мұнда mode параметрі GL_MODELVIEW, GL_PROJECTION, немесе GL_TEXTURE мәндерді қабылдайды.

Барлық түрлендірулер OpenGL-да вектор координаталарын матрицаға көбейтумен орындалады. Сонда керекті матрицаға glVertex* командасы анықтаған координата көбейтіледі.


2 сурет. OpenGL жүйесінде координаталарды түрлендіру

Түрлендіру алдында объектінің төбесі өзгертіледі (x’, y’, z’, 1) T = M * (x, y, z, 1) T

мұнда M - модельно-видовая матрица. Бұл матрицаны құру үшін мына командалар орындалады:

void glTranslate[f d] (GLtype x , GLtype y , GLtype z )

void glRotate[f d] (GLtype angle , GLtype x , GLtype y ,

GLtype z)

void glScale[f d] (GLtype x , GLtype y , GLtype z )

glTranlsate*() объектіні көшіреді, glRotate*( ) объектіні angle бұрышына тіл сағатына қарсы бұрайды, glScale*() объектінің масштабын (x, y, z) векторының бойымен орнатады (қысу немесе созу) .

... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Операциялық жүйелер тарихы
Android Studio ортасында Мобильді қосымшаларды әзірлеу
Растрлік графика форматтары
Модельдеу әдістері мен модельдеуге арналған бағдарламаларға шолу
Заманауи мобильді қосымшалар
OPENGL - ДІҢ НЕГІЗГІ ҚАСИЕТТЕРІ
«Қазақ тілі бойынша онлайн тестілеудің мобильді қосымшасын құру»
Астрофизикалық құбылыстарды моделдеу үшін cuda қолдану
Linux операциялық жүйе
WEB-порталдың мобильді қосымшасын құру
Пәндер



Реферат Курстық жұмыс Диплом Материал Диссертация Практика Презентация Сабақ жоспары Мақал-мәтелдер 1‑10 бет 11‑20 бет 21‑30 бет 31‑60 бет 61+ бет Негізгі Бет саны Қосымша Іздеу Ештеңе табылмады :( Соңғы қаралған жұмыстар Қаралған жұмыстар табылмады Тапсырыс Антиплагиат Қаралған жұмыстар kz