Нүктелерді, сызықтарды және көпбұрыштарды салу
Нүктенің көлемін анықтау үшін: glPointSize(GLfloat size) процедурасы қолданылады.Нүктенің көлемі пиксельде көрсетіледі. Үнсіз келісім бойынша 1-ге тең. Сызықтың қалыңдығын анықтау үшін: gflineWidth(GLfloatwidth) процедурасы қолданылады. Сызық салынатын шаблонды анықтау үшін glLineStipple(Glint factor, GLushort pattern) процедурасы қолданылады. Процедураның 2 параметрі бар, шаблон 2 параметрмен анықталады және 1 параметрге көрсетілген санға созылады. Шаблонды қолдану үшін қолдануға рұхсат glEnable(GL_UNE_STIPPLE) процедура көмегімен беріледі. Шаблонды қолдануға тиым салу glDisable(GL_LINE_ST1PPLE) командасы арқылы орындалады.
Көпбұрыштарды салу.
Көпбұрыштың 2 жағы бар:
Беттік (лицевая);
Беттік емес (нелицевая);
Көпбұрыштың беттік немесе беттік емес жағын қалай салуын анықтау үшін: glPolygonMode(GLenum face, GLenum mode) процедурасы қолданылады. Оның екі параметрі бар:
Келесі мәндерді қабылдай алады:
GL_FRONT_AND_BACK (обе стороны) – екі жағы,
GL_FRONT (лицевая сторона) - беттік жағы,
GL_BACK (нелицевая сторона) – беттік емес жағы.
Келесі мәндердің біреуін қабылдай алады.
GL_POINT – шекаралық нүктелер жиыны,
GL_LINE – шекаралық сынық сызық,
GL_FILL – толтырылған аймақ.
Үнсіз келісім бойынша экранда сағат бағытына қарсы экранда пайда болатын көпбұрыштың төбелері беттік деп аталады. Бұны glFrontFace(GLenum mode) процедура көмегімен өзгертуге болады. Үнсіз келісім бойынша GL_CCW болады. GL_CW – процедураны осымен қолданса беттік деп сағат бағыты бойынша салынатын көпбұрыштар аталады.
Беттік, беттік емес беттерді салуға тиым салуға болады. Ол үшін: glCullFace(GLenum mode) процедурасы қолданылады. Процедура аргументінің мәндері GL_FRONT тек алдынғы беттер ғана көрінеді. GL_BACK (оставить нелицевые) артқы беттері, GL_FRONT_AND_BACK (оставить все грани) артқы және алдынғы беттері салынады. Бетті толтыру шаблоны GL_POLYGON_STIPPLE роцедура көмегімен орындалады. Сәйкесінше шаблонды қолдануға рұхсат беру үшін: glEnable процедурасы қолданылады.
Әрбір төбе үшін өз нормаль векторын келесі процедураның біреуі мен анықтауға болады.
glNormal3{b s i d f}(TYPE nx, TYPE ny, TYPE nz);
glNormal3{b s I d f}v(const TYPE * v).
b, s ,i - аргументтерінің мәндері [-1, 1] кесіндісіне масштабталады.
OpenGL – де бірнеше көзден шығатын әрқайсысы қосылған немесе өшірілген болатын жарық моделі қолданылады. Сонымен қатар жалпы фондық жарық бар. Обьектілерді дұрыс жарықтандыру үшін обьектінің әрбір беті үшін материалды анықтау қажет. Материал өз жарығын шығару мүмкін. Түскен жарықты барлық бағытта шашырату мүмкін немесе айна сияқты жарықты белгілі уақытта бейнелеуі мүмкін.
Қолданушы 8-ге дейін жарық көздерін, олардың қасиеттерін анықтай алады. Жарық көздерінің қасиеттері. Олар: түс, орналасуы және бағыты. Бұл қасиетті орнату үшін:
gllight{i f}[v](GLenum light, GLenum pname, TYPE param) процедурасы қолданылады. Мұндағы light қабылдайтын мәндері.
GL_LIGHT0, GL_LIGHT1, ..., GL_LIGHT7.
pname параметрі жарық көзінің сипаттамасын анықтайды. Жарық көзін қолдану үшін есептеулер жүргізуге рұхсат glEnable(GL_LGHTING) командасымен беріледі, ал сәйкес жарық көзін қосуға рұхсат glEnable командасымен беріледі. Жалпы фондық жарықты gtLightModel{i f} [v] (GL_LIGHT_MODEL_AMBIENT, ambientColor) командасымен анықталады. Бақылаушының орналасуын обьектідегі биіктерге әсер етеді. Үнсіз келісім бойынша жарық есептеулерінде бақылаушы шексіз алыс нүктеде орналасады деп саналады. Әрбір төбе үшін есептеулерді жеке жүргізу үшін: glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE) бұл шынайы бейне алу үшін қолданылады. Обьектінің алдыңғы және артқы беттерін жарықтандыру үшін: glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE) командасы қолданылады.
|
3.DELPHI немесе С++ тілі бойынша нүктеде координатаның паралельді жылжыту мен созу-қысуы
object Form1: TForm1 Left = 98 Top = 174 Width = 898 Height = 627 Caption = #1043#1086#1083#1086#1074#1072' '#1087#1072#1088#1072#1084#1077#1090#1088#1080#1079#1080#1088#1086#1074#1072#1085#1085#1072#1103'. '#1042#1077#1088#1089#1080#1103' 1.0' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] KeyPreview = True OldCreateOrder = False OnCreate = FormCreate OnDestroy = FormDestroy OnKeyDown = FormKeyDown OnMouseMove = FormMouseMove OnResize = FormResize PixelsPerInch = 96 TextHeight = 13 object Panel1: TPanel Left = 601 Top = 0 Width = 289 Height = 600 Align = alRight TabOrder = 0 object Label1: TLabel Left = 24 Top = 168 Width = 205 Height = 13 Caption = #1055#1088#1072#1074#1072#1103' '#1082#1085#1086#1087#1082#1072' '#1084#1099#1096#1080'- '#1074#1088#1072#1097#1077#1085#1080#1077' '#1089#1094#1077#1085#1099 end object Label2: TLabel Left = 24 Top = 184 Width = 183 Height = 13 Caption = #1051#1077#1074#1072#1103' '#1082#1085#1086#1087#1082#1072' '#1084#1099#1096#1080'- '#1074#1099#1073#1086#1088' '#1074#1077#1088#1096#1080#1085 end object TrackBar1: TTrackBar Left = 16 Top = 16 Width = 252 Height = 45 Max = 15 Min = -15 TabOrder = 0 OnChange = TrackBar1Change end object TrackBar2: TTrackBar Left = 16 Top = 48 Width = 252 Height = 45 Max = 15 Min = -15 TabOrder = 1 OnChange = TrackBar1Change end object TrackBar3: TTrackBar Left = 16 Top = 80 Width = 252 Height = 45 Max = 15 Min = -15 TabOrder = 2 OnChange = TrackBar1Change end object Button1: TButton Left = 40 Top = 352 Width = 201 Height = 25 Caption = #1057#1073#1088#1086#1089 TabOrder = 3 OnClick = Button1Click end end object Panel4: TPanel Left = 0 Top = 0 Width = 601 Height = 600 Align = alClient Caption = 'Panel4' TabOrder = 1 OnMouseDown = Panel4MouseDown OnMouseMove = Panel4MouseMove OnMouseUp = Panel4MouseUp end object Timer3: TTimer Interval = 10 OnTimer = Timer3Timer Left = 24 Top = 24 end end
|
