Ứng dụng chụp ảnh kĩ thuật số thực tại ảo là một ứng dụng cho phép người dùng luyện tập chụp ảnh kĩ thuật số với các điều chỉnh thiết lập DSLR và nhiều địa điểm chụp.. Ứng dụng chụp ảnh
Trang 1BO THONG TIN VA TRUYEN THONG
HỌC VIEN CONG NGHỆ BUU CHÍNH
VIEN THONG
KHOA LUAN
TOT NGHIEP DAI HOC
XAY DUNG UNG DUNG
MO PHONG CHUP ANH
KY THUAT SO VR BANG
OPENGL
Người hướng dan: ThS.
Nguyễn Thị Thanh Tâm
Sinh viên thực hiện:
Trang 2Hà Nội - 2023
Trang 3HỌC VIEN CÔNG NGHỆ BƯU CHÍNH VIỄN THONG
KHOA ĐA PHƯƠNG TIỆN
C1
ĐỎ ÁN
TÓT NGHIỆP ĐẠI HỌC
Người hướng dan: ThS Nguyễn Thị Thanh Tâm
Sinh viên thực hiện: Nguyễn Thành Đô
Lớp: DI9PTDPT
Hệ đào tạo: Đại học chính quy
Hà Nội, 11/2023
Trang 4HỌC VIEN CÔNG NGHỆ BƯU CHÍNH VIÊN CONG HOA XÃ HỘI CHỦ NGHĨA VIET
THÔNG NAM
KHOA ĐA PHƯƠNG TIEN Độc lập — Tự do - Hanh phúc
DE TÀI DO ÁN TOT NGHIỆP ĐẠI HỌC
Họ và tên sinh viên: Nguyễn Thành Đô
Lớp: DI9PTĐPT Khoá: 2019-2023
Ngành đào tạo: Công nghệ Da phương tiện
Hệ đào tạo: Đại học chính quy
1 Tên đồ án/khoá luận tốt nghiệp: Xây dựng ứng dụng mô phỏng chụp ảnh ki
thuật số VR bằng OpenGL
2 Lý do chọn dé tài:
Do sự bùng nỗ về sức mạnh của các thiết bị phần cứng mới cũng như các thuậttoán và khả năng truyền tin tương đối mạnh mẽ hiện nay đã thúc day sự phát triển của
các thiết bị thực tại ảo Hiện nay công nghệ thực tại ảo xuất hiện trong rất nhiều lĩnh
vực trong cuộc sống như: Du lịch, Giải trí, Marketing, Y tế, Quốc phòng, và quantrọng nhất đó là Giáo dục Nhờ có thực tại ảo mà một số các công việc phức tạp đòi
hỏi tiền bạc và an toàn cho người học được cải thiện rất nhiều giúp giảm chi phí và
nâng cao hiệu quả học tập Ứng dụng chụp ảnh kĩ thuật số thực tại ảo là một ứng dụng
cho phép người dùng luyện tập chụp ảnh kĩ thuật số với các điều chỉnh thiết lập DSLR
và nhiều địa điểm chụp Người dùng ứng dụng có thể tập sử dụng các loại máy anhDSLR đến nhiều nơi với các địa điểm đa dạng giúp người dùng dễ dàng lựa chọn máyanh DSLR ngoài thực tế mình muốn mua giúp tiết kiệm chi phí và không phải matcông sức di chuyền trong khi ta chi cần phải sử dung một bộ VR và thời gian tùy ý,không bị giới hạn bởi các yếu tố đời thực
Ngoài ra ứng dụng chụp ảnh kĩ thuật số VR này sẽ giúp người phát triển hiểu sâu
về các thuật toán xử lí đồ họa sao cho tối ưu và hién thị hình ảnh tốt, các thuật toán về
sinh địa hình, xử lí chúng và trên hêt có thê nghiên cứu vê câu tạo mat người và may
Trang 5anh kĩ thuật sô đê qua đó có thê hiéu sâu về các đặc tính của kính VR, có thê có các giải pháp khăc phục các nhược diém cô hữu của kính VR đôi với người sử dụng (chóng mặt, buôn nôn, ).
Chính vì vậy, Em đã lựa chọn dé tài “ Xây dựng ứng dụng mô phỏng chụp ảnh kĩ
thuật số VR băng OpenGL” Chương trình sẽ có các chức năng như thay đổi các phụ
kiện của máy anh DSLR, thay đổi thời tiết, sinh địa hình, giúp người dung có thé
tập sử dụng các thiết lập của máy ảnh DSLR.
Nội dung chính của đồ an:
Đô án được chia làm các chương như sau:
Chương 1: Tổng quan về dé tài Chương này miêu ta bài toán và các chức năng của hệ
thống.
Chương 2: Cơ sở lí thuyết Chương này miêu tả các giải pháp, công nghệ sử dụng cho
các bài toàn đã nêu ở chương I.
Chương 3: Phân tích và thiết kế hệ thống Chương này sẽ đưa ra phương pháp xây
dựng hệ thống, biểu đồ Usecase, biểu đồ lớp và biểu đồ tuần tự cho từng chức năng
của hệ thống.
Chương 4: Xây dựng ứng dụng mô phỏng chụp ảnh kỹ thuật số VR băng OpenGL
Chương này xây dung các tính năng của hệ thống va đưa ra kết quả của việc xây dựng
hệ thống
Kết luận
Cơ sở dữ liệu ban dau:
Ngày giao đề tài: ⁄ /2023
Ngày nộp quyễn: /2023
GIẢNG VIÊN HƯỚNG DẪN SINH VIÊN THỰC HIỆN
Trang 6(Ky, ghi rõ họ tên) (Ky, ghi rõ họ tên)
TRƯỞNG KHOA
(Ky, ghi rõ họ tên)
Trang 7LỜI MỞ ĐẦU
Do sự bùng nỗ về sức mạnh của các thiết bị phần cứng mới cũng như các thuậttoán và khả năng truyền tin tương đối mạnh mẽ hiện nay đã thúc day sự phát triển của cácthiết bị thực tại ảo Hiện nay công nghệ thực tại ảo xuất hiện trong rất nhiều lĩnh vựctrong cuộc sống như: Du lịch, Giải trí, Marketing, Y tế, Quốc phòng, và quan trọngnhất đó là Giáo dục Nhờ có thực tại ảo mà một số các công việc phức tạp đòi hỏi tiền bạc
và an toàn cho người học được cải thiện rất nhiều giúp giảm chi phi và nâng cao hiệu quahọc tập Ứng dụng chụp ảnh kĩ thuật số thực tại ảo là một ứng dụng cho phép người dùng
luyện tập chụp ảnh kĩ thuật số với các điều chỉnh thiết lập DSLR và nhiều địa điểm chụp Người dùng ứng dụng có thể tập sử dụng các loại máy ảnh DSLR đến nhiều nơi với các địa điểm da dạng giúp người dùng dé dàng lựa chọn máy ảnh DSLR ngoài thực tế mình
muốn mua giúp tiết kiệm chi phí và không phải mat công sức di chuyên trong khi ta chỉcần phải sử dụng một bộ VR và thời gian tùy ý, không bị giới hạn bởi các yếu tố đời thực
Ngoài ra ứng dụng chụp ảnh kĩ thuật số VR này sẽ giúp người phát triển hiểu sâu
về các thuật toán xử lí đồ họa sao cho tối ưu và hiển thị hình ảnh tốt, các thuật toán vềsinh địa hình, xử lí chúng và trên hết có thé nghiên cứu về cấu tạo mắt người và máy ảnh
kĩ thuật số dé qua đó có thể hiểu sâu về các đặc tinh của kính VR, có thé có các giải phápkhắc phục các nhược điểm cố hữu của kính VR đối với người sử dụng (chóng mặt, buồn
nôn, ).
Chính vì vậy, Em đã lựa chọn dé tài “ Xây dựng ứng dụng mô phỏng chụp ảnh ki
thuật số VR bang OpenGL” Chương trình sẽ có các chức năng như thay đồi các phụ kiện
của máy ảnh DSLR, thay đổi thời tiết, sinh địa hình, giúp người dùng có thé tập sửdụng các thiết lập của máy ảnh DSLR
Nguyễn Thành Đô i
Trang 8LỜI CÁM ƠN
Trước tiên, em xin gửi lời cảm ơn chân thành đến giảng viên hướng dẫn của em, côNguyễn Thị Thanh Tâm, người đã luôn tạo điều kiện và hỗ trợ em trong suốt quá trìnhthực hiện dự án Những kiến thức, hướng dẫn và góp ý của cô đã giúp em hoàn thành
được sản phẩm một cách hoàn chỉnh nhất.
Đồng thời, xin cảm ơn các anh chi, bạn bè, người than đã chia sẻ những kinh nghiệm
quý giá và cung cấp những hình ảnh, tài nguyên, tư liệu quan trọng đã hỗ trợ em rất nhiều
trong quá trình xây dung sản phẩm
Cuối cùng, em xin được gửi lời cảm ơn tới toàn thé thầy cô giáo đã và đang công táctại Học viện Công nghệ Bưu Chính Viễn thông nói chung và các thầy cô trong khoa Da
Phương Tiện nói riêng đã tận tình chỉ bảo và truyền đạt lại cho em và các bạn sinh viên
những kiến thức quý báu làm hành trang dé có thé phát triển trên con đường tri thức trong
tương lai.
Nguyễn Thành Đô ii
Trang 9LỜI MỞ ĐẦU - 2 2 SE 1211212212112112112111 11211211111 211.11 1121221111221 1211 re.
MỤC LỤC - 2-55-2122 2222212212212212112112112112111111121121121111111111211.11.11 0111112122111 re
DANH MỤC CAC BẢNG - 2-52 52 21221521571121211211211211211211111211211 1111111111121 21111011DANH MỤC CÁC HÌNH VE\.uu.cecesssscsscececscsesecscsvscececsvsveucscsvsvsucacsvavsucecscavsucecevavsrcasavavsreacaravavsucasavaveneecenCHƯƠNG 1: TONG QUAN VE DE TẢI 5 SE SE2SE2E2EEEEEEE2E1217111511211211111211211111111111 11 11 te
1.1 Đặt vấn đề s- 2s 2t 22t 2112712211211 11211211 111121111 111111111.
0ã 08 a5
1.3 BG cuc 46 ẽ Ă
2.1 Giới thiệu về máy ảnh kỹ thuật số Digital Single lens Reflex 5 S25 ssssskrsserseersske
2.1.1 Giới thiệu về máy ảnh kỹ thuật SỐ 2 51952 S£+E£EE£EEEEE2EE2EEEEE21221211717127171 211.1 xe2.1.2 Giới thiệu về máy ảnh Digital Single-Lens Reflex 2- 2: ©52S£+E£2EE2EEeEEerEerxrrzrxrr
2.2.1 Tổng quan về OpenL 2- ¿+2£+S<9EE9EE9EEEEE2E12215212712112112112112111111711211 211211111 cư2.2.2 Các thành phần chính của Open(LL ¿- + + ++E+E2EE2EE£EE£EEEEEEEEEEEEEE12212212717121.22 xe
2.2.3 Ly do lựa chon OpeniL - - c + 32 1121131111111 11111911191 1111 11011 11110111111 HH ng Hy
2.3 Giới thiệu về ngôn ngữ lập trình C-+-E + s2S22E%2E5EEEEEEE121121715712112112111111121111 21111 ree
2.3.1 Tổng quan VỀ C-+-E -¿- 2 + +s9Ek9E1211212157151121121111121111111111111111111111211 111111111 cee2.3.2 Lịch sử và phát triỀn của C-++ ¿- ¿5s 2k 2x 2122112112712211111121121121121111111112211211 212 ce
2.3.3 Cac dic 000 T8 Đ
2.4 Giới thiệu về Visual Sfuđi ¿- + + 2x 2x21 2112212212712121121121121121111111111121121111 11112 re
2.8.1 Tổng quan về Kết xuất dura trên vật lý -+- + 2+ +E9EEEEE2E121521571271211211111211 2111 1E xe
2.8.2 Mô hình bề mặt Microfacet c.ccccccccccscsssssscssescsesesecsesesecscsesueecscsvevsucacavevsusacsvavsueacseavevevavavaeeeee
2.8.3 Bao toan i30) 110
Nguyễn Thành Đô iv
Trang 102.8.4 Phương trình phản Xạ c2 221112111211 1211 1911101111111 111 119111 HH HH HH ng TH HH
2.8.5 BRIDF - 2-22 212 127112112711211211211211211211 1111111011101 eerrde
2.8.6 Các loại Texture trong Kết xuất dựa trên vật 2=.CHƯƠNG 3: PHAN TÍCH VA THIET K 2 2 £+SE+SE+EE9EEEEEE2EE2E122122171711211211211211 2121 2e
3.2 Biểu đồ thiết kế các lỚp +52 2 SSE9EEEE12E12121571211211211111112111111112112111112111 11111 xe
3.3 Biểu đồ hoạt GONG GHdỶÝẢÝẳẢẢ
3.3.1 Chức năng điều khiển nhân vật - ¿2 2+2 +E£EE9EE2EE2EEEEEEE2E12112171112112112171 111 y6
3.4 Biểu đỗ tuần tự ¿- ¿2222k 2x 211211211211211211211271211211 2112111 1111112121211 21112211 reg
3.4.2 Chức năng Thay đổi thông số €aImera - 2-2: £2S£2S££SE£EE£EEEEE2EE2E122122171211222221221 227k.3.4.3 Chức năng thiết lập vật thỂ - - 5-52 +SE221 E1 E21921211211211211271111121121121121111 11112111 Xe
CHƯƠNG 4: TRIÊN KHAI VÀ XÂY DUNG UNG DỤNG 2-©22+2E22E2E2E2EE22EE2212EEeEEerkee
4.1 Cài đặt triển khai hệ thống, -¿- 2-2 +S+E2E22E12E19E1E711711211211211211711112112112112111111111 21 1g rrờn
4.1.1 Cấu hình phần cứng + +52 £+S+E£EE9EE2E12E2157121211211211111211211111111111 1111111 rre4.1.2 Chuan bị tài nguyên - - 2-5252 2E EEE12112112111211211211111121121111111112111 11 1rre
4.2 Một số van đề khó khăn và cách giải QUYẾT - +- 2 2S +EÊEEEEE2E2EEEEEEEEE1217121712112121 11 Xe
KET LUAN i oceccsccssscsscssesscsssssssvsssscsussucsessssussussvssvsscsussussvssssussussussssissussussessesissessessessssussssessesississeeseeseeeeen
Nguyễn Thành Đô iv
Trang 11DANH MỤC CAC BANG
Bảng 1 Giá trị màu các ánh sáng phản xạ (FO) của bỀ mặt ¿- 2 2+2s+SE9EEt2E2E122122122121 7122222 rxe
Bảng 2 Mô tả các chức năng và nhiệm vụ của chÚng - -‹- - + 3111311131119 11 91118 11111811181 81 ng rời
Bảng 3 Thống kê về dự án - 2 5£ +SSE9SE2E£2E£EEEEE2E12E7152121121121711111211111111112111111111111 112121
Nguyễn Thành Đô v
Trang 12DANH MỤC CÁC HÌNH VE
Hình 1 May anh Digital Single-lens R€fÏ€X - - c2 22 121112111911 1911 5111911 91119 HH KH kg kh
Hinh 2 M6 hinh mot hé may anh 808530 0n da A
Hinh 2 Logo OpenGL ce eeceeceeseeeseesseesecseeseeeeceseceeceecsaeceseceseceeeeeeeeceneeeneeeneeeneeseeesneeseeeeenaeeeenaeeeeea
Hình 3 Chu trình kết xuất trong OpenGL ceccccccsccsscsssessessessessessssssessessessessessusssessessessessessessnsssessessesseeseeeeHình 4 Chu trình kết xuất từ các dữ liệu trong OpenGL - 2 2 s+x+EE£+EtEEE2EE2EE2EEE2E2EE2EExzxerrree
Hình 6 Biểu thị ánh xạ của VAO với VBO và EBO cccccccsscsecescsesesecscsesusececsvsucececsvsrsusecsvsvsusacevaveusaceveves
Hình 7 Giá tri stride va offset trong vertex DUIÍẨGT - - - +2 19119111911 911 111911
Hình 8 Mô tả luồng nhận và xử lí dữ liệu và kết xuất hình ảnh trong OpenGL 2-2: s2 25+:
Hình 10 Mô tả một cube texture được tạo bởi 6 ảnh - 2 11112221111 12231 11119211 1111021111 khen ngư
Hình 11 Mô tả kết quả lay mẫu của phương pháp Nearest -2- 2-52 2 +EeEE9EE2EE2E£EEEEEEEEEErEerkerkrrredHình 12 Mô tả kết quả lấy mẫu của phương pháp Lin€ar - 2-2 2c £+S£2E£+E££EE£EE£EEEEEE2EEEEESExerkerxeeHình 13 So sánh kết quả kết xuất của phương pháp Nearest và Linear 2-2 2+ +2x+£++£++EezxerxzxecezHình 14 Mô tả kết quả các thiết lập wrapping cho †€XẦUTE - 2 2 s+SE‡EE2E22EE2E122127171712121 22 crxe
Hinh 15 Logo ng6n ngtt C+t 1
Hình 16 Các tinh chat của hướng đối tuQng e.ccecceccccsessessesssssessessessessessesssssssssessessessessssssssessetsessesseeaseeeHình 17 Mô tả bề mặt gồ ghé VA DE ii PP ằ (1lHình 18 Mô tả các vector pháp tuyến của bề mặt 2-2 + +sSE+EE2EE2E£EEEEEEE12E12171712112117171 211 ce.Hình 19 Hình kết xuất bởi các giá trị rouglhiness - - ¿ ¿52+SE+EE£EE9EEEEE2112112112212717171211211 211 tre.Hình 20 Mô tả năng lượng phản xa và suy giảm trong bề mặt gỗ ghỀ - 2-2: 252 2+E+E+£E£EEzEzEeredHình 21 Minh họa các giá trị trong phương trình kết Xuất - 2 2 2 s+SE+2E2E2EE2EE2EEEEEEEErErrrrrrrred
Hình 22 Thông lượng bức xạ của các bước SÓNE - 2c 2 3211911211911 119111111 11111111 nh nh Hiệp Hình 23 Mô ta góc œ trong không g1an - c2 1911121131111911 91119111911 011 01110111111 HH HT ven
Hình 24 Mô tả các đại lượng œ và 0 trong không Ø14H c6 0632113511351 351111 1111111111111 11 ke
Hình 25 Mô tả các đại lượng trong công thức tinh lượng DUC Xạ - 5c 22c SE +* E+svEssersreererrexrs
Nguyễn Thành Đô vỉ
Trang 13Hình 26 Mô tả vector pháp tuyến (n) tại vị trí p trong bán cầu © - + s+2s+S++E£2ESEEEEE2EE2EEEeEkerkrreeHình 27 Các giá trị kết xuất của độ nhám - 2-2 2 +SE+SE£EEEEE2E1221571E7171211211211221271712121 21.2 tre.
Hình 28 Mô tả vector nhìn và vector phản Xạ - - c1 1121112111911 1911 111111111111 1111 1 H1 ng ng ngư
Hình 29 Mô tả hình kết xuất bởi các giá trị rouglhiness - 2 2 2 s2x+2E£2Et2E2EE2E12212712121121221 22 xe2
Hình 34 Mô tả họat động điều khiển nhân vật - 2-2 2 2 +E£SE9EE2EE2EEEEEEEEEE2E12171712212112171 211.21 cxe
Hình 37 Biéu đồ tuần tự chức năng điều khiển nhân vật 2-2 2 +E+SE+EE+EE£E£EEEEE2EEEEEEEEErEkrrkrrreeHình 38 Biểu đồ tuần tự chức năng thay đổi thông số camera 2-2: 2+ 2E2+E++EE2EE£EEEEEEeErzrerrrree
Hình 43 Cửa số tạo địa hình và camera xuất hình ¿- + k9 x‡EEk£EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEErkrkrkrrree
Nguyễn Thành Đô vỉ
Trang 14DANH MỤC CAC TU VIET TAT
Cấu trúc dit liệu hiển thi của bối cảnh
Nguyễn Thành Đô vi
Trang 15CHƯƠNG 1: TONG QUAN VE DE TÀI
1.1 Dat van dé
Do sự bung nỗ về sức mạnh của các thiết bi phần cứng mới cũng như các thuậttoán và khả năng truyền tin tương đối mạnh mẽ hiện nay đã thúc đây sự phát triển của cácthiết bị thực tại ảo Hiện nay công nghệ thực tại ảo xuất hiện trong rất nhiều lĩnh vựctrong cuộc sông như: Du lịch, Giải tri, Marketing, Y tế, Quốc phòng, và quan trọngnhất đó là Giáo đục Nhờ có thực tại ảo mà một số các công việc phức tạp đòi hỏi tiền bạc
và an toàn cho người học được cải thiện rất nhiều giúp giảm chi phí và nâng cao hiệu qua
học tập.
Với những yếu tố đã nêu cùng với mong muốn nghiên cứu và phát triển một sản
phẩm thực tại ảo hoan chỉnh phục vụ đồ án tốt nghiệp này đã đặt ra một van dé: Làm thénào dé tao ra một sản pham thực tại ảo chất lượng, hấp dẫn và thu hút, tối ưu và được sựquan tâm của nhiều người
1.2 Mục tiêu đề tài
Trong phần này, em sẽ trình bày về mục tiêu và phạm vi của đề tài với gameengine và ứng dụng thực tại ảo, nhằm có một cái nhìn tổng quan về các engine gamecũng như các sản pham thực tại ảo hiện nay, đánh giá các ưu điểm và hạn chế của chúng
Hiện nay, đối với ngành công nghiệp đồ họa, dé phát triển các sản phẩm game hay
thực tại ảo, chúng ta dé dang có thé tạo được sản phẩm thông qua các game Engine Ta
có thé không cần bận tâm đến các phan lõi như kết xuất, vật lí, quản lí tài nguyên cơ bản
như texture, vật liệu, , mà chỉ cần tạo đến các chức năng, tương tác mà chúng ta muốn,
qua đó tạo đến sản phẩm cuối cùng.
Nhưng do họ là các game engine lớn, họ phục vụ nhiều nhu cầu như làm game cả2D lẫn 3D, nhiều loại trình đồ bỏng trong | chương trình khi tao ra sản phẩm cuối, một
số thao tác với các tài nguyên có san sẽ khó hoặc rất khó, thậm chí ta phải viết lại từ đầu
và theo khuôn mẫu của họ Do vậy dé phù hợp với việt giả lập máy ảnh Digital
single-lens reflect, sử dụng rất nhiều về xử lí khung hình hậu kì nên em tạo ra một engine mới
chỉ phục vụ 1 loại đỗ bóng chính là Physically based rendering
Không chỉ vậy đề tài không chỉ giúp em xây dựng các hệ thống như kết xuất hìnhảnh, xử lí logic, quản lí tài nguyên, cài đặt những thuật toán tối ưu cho việc kết xuất
Nguyễn Thành Đô |
Trang 16hình ảnh, và hiéu rd một phần nguyên lý của máy ảnh kỹ thuật số, mô phỏng chúng ra sao
trong máy tính.
1.3 BO cục đồ án
Đồ án gồm tất cả 4 chương, mỗi chương có các phần nhỏ hơn tập trung trình bày một nộidung cụ thể liên quan đến sản phẩm cuối cùng Các phần tiếp theo của báo cáo đồ án tốtnghiệp này được tổ chức như sau
Chương 1: Tổng quan về đề tài Chương này miêu tả bài toán và các chức năng của hệ
thống
Chương 2: Cơ sở lí thuyết Chương này miêu tả các giải pháp, công nghệ sử dụng chocác bai toàn đã nêu ở chương I Cụ thể em sẽ giới thiệu sơ lược về OpenGL, các dữliệu trong OpenGL, cách cấu hình và sử dụng chúng, cách sử dụng các thư việnOpenVR, GL Math và đóng góp của chúng trong chương trình, Sơ bộ về phương pháp
đồ bóng Dựa trên vật ly và cách cài đặt trong OpenGL, Perlin Noise và ứng dụng
trong xây dựng, mô phỏng địa hình.
Chương 3: Phân tích và thiết kế hệ thống Chương này sẽ đưa ra phương pháp xây
dựng hệ thống, biểu đồ Usecase, biểu đồ lớp và biểu đồ tuần tự, biểu đồ hoạt động
cho từng chức năng của hệ thông
Chương 4: Xây dựng ứng dụng mô phỏng chụp ảnh kỹ thuật số VR bằng OpenGL.Chương nay xây dựng các tinh năng của hệ thống va đưa ra kết qua của việc xây dựng
hệ thống
Nguyễn Thành Đô 2
Trang 17Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
CHƯƠNG 2: CƠ SỞ LÝ THUYET
2.1 Giới thiệu về máy ảnh kỹ thuật số Digital Single lens Reflex
2.1.1 Giới thiệu về máy ảnh kỹ thuật số
Máy ảnh kỹ thuật số (hay còn gọi là máy ảnh số) là máy ảnh điện tử, có dùng pin
và linh kiện điện dé hoat dong dé tạo ra bức anh, tự động trong việc thu nhận hình ảnh
cũng như xử lý.
Thay vì dùng phim, máy ảnh số sẽ dùng cảm biến hình ảnh, nhiệm vụ của cảmbiến là thu nhận ánh sáng và chuyền đổi tín hiệu hình ảnh thu thập được thành một bứcảnh, chất lượng ảnh đẹp hay xấu phụ thuộc nhiều vào cảm biến ảnh bên cạnh những yếu
tô khác.
2.1.2 Giới thiệu về máy ảnh Digital Single-Lens
Reflex
Hình I Máy anh Digital Single-lens Reflex
May ảnh kỹ thuật số Digital Single-Lens Reflex (DSLR) là một loại máy anh kỹthuật số sử dụng một gương phan xa dé hiên thị hình anh từ ống kính lên kính ngắm, chophép người dùng xem chính xác cảnh mà họ sắp chụp
Máy ảnh DSLR thường được coi là loại máy ảnh kỹ thuật số cao cấp hơn so vớicác loại máy ảnh khác, chăng hạn như máy ảnh compact và máy ảnh mirrorless Chúng
Nguyễn Thành Đô 3
Trang 18Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
cung cấp khả năng kiểm soát sáng tạo nhiều hơn, chất lượng hình ảnh cao hơn và khảnăng tương thích với nhiều loại ống kính và thiết bị khác
Các thành phần của máy ảnh Digital Single-Lens Reflex:
Trang 19Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
2.2 Giới thiệu về OpenGL
OpenGL được phát triển bởi Khronos Group, một t6 chức phi lợi nhuận tập hợp các công
ty công nghệ lớn OpenGL là một tiêu chuẩn kỹ thuật được sử dụng trong nhiều ứng dụng
đồ họa, bao gồm trò chơi điện tử, phần mềm hỗ trợ thiết kế, mô phỏng khoa học, và thực
té ảo.
2.2.2 Các thành phần chính của OpenGL
OpenGL cung cấp một cách tiêu chuẩn để truy cập vào phần cứng đồ họa của máy
tính OpenGL bao gồm một số thành phần quan trọng, bao gồm:
@ Primitive: Primitive là các đôi tượng cơ bản được sử dung dé tạo ra các hình dạng
trong OpenGL Các primitive phô biến bao gồm điểm, đường, hình đa giác và cáchình khối
Nguyễn Thành Đô 5
Trang 20Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
Vertex Arrays/
Buffer Objects
Per-Fragment Framebuffer
Operations
@ Buffer: Buffer là vùng lưu trữ dữ liệu được sử dung dé lưu trữ dữ liệu cho các
primitive Các buffer phổ biến bao gồm vertex buffer, index buffer và texture
Trang 21Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
@ Shader: Shader là các chương trình máy tính được sử dụng dé tính toán các thuộc
tính của các primitive, chăng hạn như mau sac, độ sang và bóng đô Shaders có thê
được sử dụng đê tạo ra các hiệu ứng đô họa nâng cao
Attribute 2 Attribute 3
Attribute 4
Attribute 5 Attribute 6
Attribute 7
au
Hình 5 Truyền dữ liệu vào shader trong OpenGL
@ Ngoài ra còn các thành phần khác như Texture, Sampling, RenderBuffer,
2.2.2.1 Tổng quan các đối tượng trong OpenGL
OpenGL quản lí các tài nguyên là các thực thé có id
Trong OpenGL các đối tượng được khai báo qua câu lệnh:
glGen<name>(n, id) Trong đó
name: có thê là VertexArrays, Buffers, FramBuffer, Textures,
n: là số lượng đối tượng khai báo.
id: là con trỏ trỏ đên vi trí lưu id của đôi tượng.
Trang 22Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
1 Đối tượng Vertex Arrays, Vertex Buffer và Element Buffer
Vertex Arrays là một đối tượng co bản liên kết đến các Vertex Buffer.
Vertex Buffer là đối tượng dùng dé lưu trữ thông tin của của các cạnh như vị trí, màu sắc, vector pháp tuyến hay bat cứ thông tin tùy biến nào.
Khi vẽ một hình ta có thể sử dụng một đỉnh nhiều lần cũng tức là đỉnh đó được lưu lặp lại nhiều lần trong Vertex Buffer, điều đó không tối ưu về mặt bộ nhớ Element Buffer là một đối tượng như Vertex Buffer được gắn vào Vertex
Array, lưu trữ thứ tự kết xuất của các đỉnh trong Vertex Buffer điều này giúp giảm
dữ liệu phải xử lí ở cả CPU lẫn GPU.
VAO 1 VBO 1
attribute pointer 0 pos[0] pos[1] pos[2] pos[3] _, pos[n]
attribute pointer 1
attribute pointer 2 element buffer object
VAO 2
attribute pointer 0 attribute pointer 1
attribute pointer 2 index data
attribute pointer 15
EBO 2
element buffer object index data
Hình 6 Biểu thi ánh xạ của VAO với VBO và EBO
Dưới đây là minh họa khai báo một Vertex Arrays (Ta có thé loại bỏ các dòng khai báo và cau hình của Element Buffer nếu không can):
vertices[] = { };
Nguyễn Thành Đô 8
Trang 23Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
rays Object glGenVertexArrays(1, &
// Khởi tao Ve x Buffer Object
Ta khai báo các thuộc tinh của một đỉnh khi truyền dữ liệu từ CPU sang
GPU qua câu lệnh:
glVertexAttribPointer(index, size, type, normalized, stride, pointer) Trong do:
index: vi trí của thuộc tính.
size: là số lượng gia tri thé hiện thuộc tinh đó (gia sử như thuộc tính vi trí đôi với game 2D thì là 2, còn đối với game 2.5D hay 3D, hay có thể là màu sắc
thì là 3).
Nguyễn Thành Đô 9
Trang 24Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
type: là kiểu d& liệu đầu vào (có thể là GL_INT,GL_UNSIGNED_INT, GL_FLOAT, GL DOUBLE, ).
stride: là số bước, có thé hiểu đơn giản là kế tiếp bao nhiêu giá trị
trong Vertex Buffer thì là giá trị của một Đỉnh mới.
pointer: hay còn gọi là Offset là phan bù dé đến giá trị cần lấy.
VERTEX 1 VERTEX 2 VERTEX 3
POSITION: STRIDE: 12 ————>
= OFFSET: 0
Hinh 7 Gia tri stride va offset trong vertex buffer
Ta truyền dit liệu vào các buffer thông qua ham:
glBufferData(target, size, data, usage)
Trong đó:
target: chi dinh dén GL_ARRAY BUFFER hay
GL_ELEMENT ARRAY BUFFER tương ứng với VBO hay EBO.
size: là kích cỡ của mang đữ liệu đầu vao.
data: là con trỏ trỏ đến vị trí di liệu
Trang 25Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
2.2.2.2 Shader va OpenGL Shading Language
2.2.2.2.1 Shader
Shader trong OpenGL là một chương trình nhỏ được chạy trên GPU dé xử lý các
đỉnh và điểm ảnh của một đối tượng 3D Shader được sử dụng để kiểm soát hình dang,
mau sắc, ánh sáng va các hiệu ứng khác của đối tượng 3D
Các chương trình này được chạy cho từng phan cụ thé của đường ống dé họa Về
cơ ban, shader giống như là các chương trình chuyển đổi đầu vào thành đầu ra Nó là các
chương trình rất biệt lập ở chỗ chúng không được phép giao tiếp với nhau, chỉ giao tiếp
Vertex processing
Trang 26Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
Như hình 8, trong các quy trình màu xanh lá cây, ta có thể tác động, xử lí đến các
gia tri của chúng, còn các quy trình màu xanh dương là việc tính toán của máy tính.
2.2.2.2.2 OpenGL Shading Language
OpenGL Shading Language (viér tat GLSL) là một ngôn ngữ có cấu trúc gần giống
C, tương tác với phần cứng đồ họa của máy tinh dé có thé xử lý, tính toán đữ liệu của cácpha xử lí đỉnh (vertex), miếng (fragment) được mô tả ở Hình 2.9
Có hai loại shader chính: vertex shader va fragment shader.
Vertex shader được chạy trên mỗi đỉnh của đôi tượng 3D va được su dụng dé tính toán vi trí, màu sắc và các thuộc tính khác của điêm anh.
Fragment shader được chạy trên mỗi diém anh của đôi tượng 3D và được sử dụng
dé tính toán màu sắc cuôi cùng của diém ảnh.
Ngoài ra còn có geometry shader là một loại shader được sử dụng trong OpenGL
dé tạo ra các đối tượng 3D phức tạp hơn những gì có thé được tao ra bằng vertex shader
va fragment shader GS được chạy sau vertex shader và trước fragment shader.
Đối với phiên bản OpenGL 4.5 trở lên ta có thể sử dụng Tessellation shader, đượcthực hiện ngay sau Vertex Shader, dé tạo ra nhiều đỉnh từ dữ liệu gốc qua các phép nội
suy và ngoại suy dé có thé tạo ra các đối tượng 3D phức tạp hiệu quả hơn như địa hình.
2.2.2.3 Texture
Texture cũng là một đối tượng trong OpenGL như Vertex Arrays và Buffer Array.
Texture là một hình ảnh 2D (cũng có thể là 1D hay 3D, thông thường là 2D) được
sử dụng đề thêm chỉ tiết cho một đối tượng Texture thường chứa thông tin về màu sắc
(RGB hoặc RGBA), độ trong suốt, hoặc các dạng dữ liệu khác như độ sâu (depth) hoặc
normal vectors Texture có thể được áp dụng lên bề mặt của các đối tượng để tạo ra các
hiệu ứng như gỗ, kim loại, da, v.v.
Các cạnh của Texture nằm trong phạm vi từ 0 đến 1 theo trục x và y ( thêm trục z
nếu thông tin dữ liệu ảnh là mảng 3 chiều hay chỉ mỗi trục x nếu thông tin dữ liệu ảnh là
1 chiều) Việc truy xuất màu sắc texture qua các cạnh gọi là lấy mẫu Cạnh bắt đầu từ (0,0) tức là vị trí góc trái đưới và kết thúc tại (1,1) tức vị trí góc phải trên.
Nguyễn Thành Đô 12
Trang 27Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
Hình 9 Mô tả tọa độ các gốc cua texture
2.2.2.3.1 Các loại Texture
2.2.2.3.1.1 Texture 2d
Texture 2d là dang phổ biến cua texture, texture này lưu dữ liệu như các bức anh
ta thường thấy hàng ngày.
2.2.2.3.1.2 Texture Cube
Texture cube thường được tạo bởi 6 bức ảnh khác nhau và chúng liên kết thành
một hình như dưới đây Texture cube là một hình lập phương, mỗi mặt của hình lập
phương thé hiện một anh 2D (hoặc cũng có thé là một texture 2d) Ta cũng có thé tạo môi
trường, không gian cho chương trình.
Nguyễn Thành Đô 13
Trang 28Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
2.2.2.3.1.3 Texture 3D
Texture 3D có dữ liệu màu sắc và thông tin khác được t6 chức theo chiều sâu,
thường được sử dụng trong các hiệu ứng 3D và khối tạo hình.
2.2.2.3.1.4 Render Texture:
Render Texture là một trường hop đặc biệt, texture nay có thể là một trong 3 loại
texture trên, dir liệu của nó không được tải từ cái file hình ảnh như jpeg, png, hdr,
mà nó được lay ứừ chính những khung hình kết xuất được ra màn hình Từ đó ta
có thê tạo nhiều các hiệu ứng trong quá trình xử lí hậu ky (Post processing)
2.2.2.3.2 Thiết lập hiển thị cho Texture
2.2.2.3.2.1 Texture Filtering
Kích cỡ của bức ảnh khi tải vào là cố định, vay trong thế giới 3 chiều của chúng tanhiều khi dé kết xuất hiển thị bức ảnh đó ở nhiều độ phân giải khác nhau, không thể luôntrùng khớp với độ phân giải đầu vào, điển hình trong các trường hợp ảnh cần hiên thị lớn
hơn so với ảnh gốc Trong trường hợp nay, máy tinh sẽ tính toán lay ra màu hién thị của texture, điểm này gọi là texel (cách gọi tắt của Texture element).
Dé hiển thị các điểm này (Texel) OpenGL cung cấp 2 phương pháp:
Nguyễn Thành Đô 14
Trang 29Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
Nearest (láng giéng gần nhất hay lọc điểm): là phương pháp mặc định nếu không
cầu hình cho texture, OpenGL sẽ lựa chọn ra texel có tâm gần nhất với tọa độ của texture.
Hình 11 Mô tả kết quả lấy mẫu của phương pháp Nearest.
Linear (lọc tuyến tính hay còn gọi là Bilinear): là nhận một giá trị nội suy từ các
texel lân cận của tọa độ texture, tính xấp xỉ màu giữa các texel màu khác xung quanh nó.
Khoảng cách từ tọa độ texture đến tâm của texel càng nhỏ thì texel đó càng đóng góp
nhiều vào màu được lẫy mẫu.
Hình 12 Mô tả kết quả lấy mẫu của phương pháp Linear.
GL_NEAREST GL_LINEAR
Hình 13 So sánh kết quả kết xuất của phương pháp Nearest va Linear.
Phương pháp lấy láng giềng (Nearest) tạo ra các răng cưa do nó lấy 1 pixel xác
định, ngăn bão hòa với các màu gần đó, ngược lại lọc tuyến tính (Linear hay Bilinear) lại
cho kết quả màu mượt, mịn hơn do nó tính độ đóng góp của các màu lân cận Trong các
ứng dụng 3D người ta thường sử dụng lọc tuyến tính giúp hình ảnh mượt, không có các
Nguyễn Thành Đô 15
Trang 30Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
răng cưa, ngược lại với các ứng dụng sử dụng đồ hoa Pixel thì phương pháp lay lánggiéng lại là lựa chọn chủ yếu
2.2.2.3.2.2 Texture Wrapping
Các cạnh cua texture thông thường nằm trong khoảng (0,0) đến (1,1) vậy khi mà
các cạnh này vượt quá các ngưỡng đó ta sẽ có các thiết lập thuật toán hién thị texture choriêng các điểm đó theo các kiểu mà OpenGL hỗ trợ: lặp lại (repeat), lặp gương (mirrorrepeat), hiển thị theo cạnh của texture (Clamp to edge), hiển thị theo viền của texture
(Clamp to border).
GL_REPEAT GL_MIRRORED_REPEAT GL_CLAMP_TO_EDGE GL_CLAMP_TO_BORDER
Hình 14 Mô ta kết quả các thiết lập wrapping cho texture
Ta có thé thiết lập riêng các cài đặt theo từng trục (s,t đối với ảnh mang 2 chiều và
s, t, r nếu là ảnh mảng 3 chiều) Dưới đây là ví dụ cho thiết lập lặp gương theo 2 trục s va
t (kết quả thu được như hình thứ 2 của ảnh trên)
glTexParameteri(GL TEXTURE 2D,GL TEXTURE_WRAP_S,GL MIRRORED_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_ REPEAT);
Ngoài ra trong trường hop sử dung Clamp to Border ta có thé mong muốn đổi màu
đường biên sang màu khác ta có thể sử dụng lệnh sau:
float borderColor[] = { 1.0f, 1.0f, 0.0f, 1.0f };
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor);
2.2.3 Ly do lua chon OpenGL
OpenGL là một thư viện phat triển game, các ứng dung đồ họa đa nền tang vàđược sử dụng rộng rãi trong ngành công nghiệp game và các ứng dụng đỗ hao Nó có khanăng hỗ trợ phát triển game 2D và 3D với các tính năng như đồ họa tuyệt vời với nhiều
Nguyễn Thành Đô 16
Trang 31Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
tùy biến cho người phát triển đặc biệt trong cả các phần tiền, hậu kì và ngay khi kết xuất
Bjarne Stroustrup đã bat đầu làm việc với khái niệm lớp trong 1979 Y tưởng tao
ra một ngôn ngữ mới bắt nguồn từ kinh nghiệm lập trình khi mà ông viết luận án tiến sĩ.Stroustrup nhận ra rằng Simula có nhiều tinh năng hữu dụng cho việc phát triển một phan
mềm lớn nhưng nó đã quá chậm trong ứng dụng thực tẾ, trong khi đó, BCPL lại nhanh
nhưng ở cấp quá thấp và không tiện cho việc phát trién phần mềm lớn Đến khi làm việc
ở Bell Labs, thì ông gặp phải vấn đề trong việc phân tích nhân Unix với việc tính toánphân tán Dùng lại kinh nghiệm lúc làm luận án tiến sĩ, Stroustrup cài thêm các tính nănggiống như Simula vào trong C dé nâng cao C được chọn là vì đó là ngôn ngữ tông quát,nhanh và năng động Lan đầu tiên, các chức năng như là lớp, lớp dẫn xuất, kiểm tra kiểu
mạnh, nội tuyến, và đối số mặc định đã được thêm vao trong C Lần xuất bản đầu tiên
vào thị trường xảy ra trong tháng 11/1985 Được ISO công nhận vào năm 1998,
Nguyễn Thành Đô 17
Trang 32Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
2.3.3 Các đặc điểm nổi bật
Hình 16 Các tính chất của hướng đối tượng
® Lập trình hướng đối tượng (OOP) và Lập trình hướng cấu trúc: Cho phép cấu trúc
ứng dụng theo mô hình cấu trúc vă theo mô hình lớp và đối tượng, tạo ra mã nguôn có cấu trúc theo các quy định của lập trình hướng đối tượng từ đó giúp dự
án linh hoạt va dé bảo tri.
@ C++ có thể chạy trên nhiều nền tang khác nhau như Windows, Mac OS, một số
biến thể của UNIX và các biến thé của hệ điều hành Linux.
e@ Tu quản lí tài nguyên: lập trình viên phải tự quản lí bộ nhớ một cách thủ công,
mặc dù có thể gặp khó khăn khi quản lý bộ nhớ nhưng nếu quản lý tốt ta sẽ có
được chương trình có hiệu năng tôt hơn rât nhiêu so với các ngôn ngữ bậc cao.
® Cộng đồng lớn: Do lịch sử phát triển lâu đời của nó nên đã tạo ra một cộng đồng
lớn với đa dạng các thư viện mở rộng/
2.4 Giới thiệu về Visual Studio
Visual Studio là một môi trường phát triển tích hợp (IDE) được phát triển bởiMicrosoft Được sử dụng để phát triển các ứng dụng máy tính cho nhiều nền tảng khác
nhau, bao gồm Windows, macOS và Linux.
Visual Studio cung cấp một bộ các công cụ và tính năng mạnh mẽ giúp các lập
trình viên tạo ra các ứng dụng chất lượng cao Với các tính năng chính:
Nguyễn Thành Đô 18
Trang 33Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
> Trình biên dich và trình gỡ lỗi: có các trình biên dịch và trình gỡ lỗi mạnh mẽ giúp
các lập trình viên phát triển và gỡ lỗi mã một cách dễ dàng hiệu quả
> Trình chỉnh sửa mã: Ta có thé tạo, chỉnh sửa mã với nhiều tinh năng nâng cao,
chăng hạn như hỗ trợ cho các siêu kết nối, tô sáng cú pháp và hoàn thành tự động
Giúp cho người phát triên dê dàng trong việc lập trình và quản lí mã nguôn
> Khả năng tích hợp: Visual Studio có thé tích hợp với các công cụ và dịch vụ khác
của Microsoft, chăng hạn như Azure và GitHub
> Hiệu suất tốt: IDE được tối ưu để hoạt động mượt ma và hiệu quả với các dự an
lớn, giúp tăng năng suất lập trình.
> Hỗ trợ C++ tốt: Visual studio cung cấp một số tính năng tuyệt vời cho ngôn ngữ
lập trình C++, bao gồm tính năng tự động chèn gợi ý, navigation thông minh, vànhiều công cụ refactoring code
2.5 Giới thiệu về thư viện OpenVR
OpenVR là một API phần mềm do Valve Corporation phát triển để truy cập vàocác thiết bị thực tế ảo (VR) và thực tế tăng cường (AR) OpenVR cung cấp một cách tiêuchuẩn dé các nhà phát triển ứng dụng VR va AR truy cập vào các chức năng của thiết bi
VR va AR, chang hạn như theo dõi đầu và tay, hiển thị hình ảnh và âm thanh, và tươngtác với các đối tượng trong thé giới VR
OpenVR là một API nguồn mở và miễn phí, có sẵn cho các nhà phát triển sử dụngtrong các ứng dụng của họ OpenVR được hỗ trợ bởi nhiều nhà sản xuất thiết bị VR và
AR, bao gồm HTC, Oculus, Valve và Sony
OpenVR cung cấp một số tính năng chính, bao gồm:
@ Theo dõi thiết bị kính HMD và tay cam: OpenVR cung cấp khả năng theo dõi vị
trí và hướng của đầu và tay người dùng Điều này cho phép các nhà phát triển tạo
ra các trải nghiệm VR và AR thực tế và nhập vai
Nguyễn Thành Đô 19
Trang 34Đồ án tốt nghiệp đại học Chương 2: Cơ sở lý thuyết
Hiển thị hình anh và âm thanh: OpenVR cung cấp khả năng hiển thị hình ảnh và
âm thanh từ thiết bị VR Cho phép các nhà phát triển tạo ra các trải nghiệm VR và
AR sống động và hấp dẫn
Tương tác với các đối tượng trong thế giới VR: OpenVR cung cấp khả năng tương
tác với các đối tượng trong thé giới VR, cho phép các nhà phát triển tao ra các trải
nghiệm VR và AR để tạo ra các tương tác của người dùng cuối với môi trường ảo
xung quanh họ.
2.6 Giới thiệu về thư viện GL Math
GL Math (GLM) là một thư viện mã nguồn mở cung cấp các hàm và cấu trúc dé
thực hiện các phép tính vector và ma trận trong lập trình máy tính GLM được sử dụng
rộng rãi trong các ứng dụng đồ họa 3D, bao gồm trò chơi video, phần mềm CAD và mô
phỏng.
GLM cung cấp một số tính năng như:
Hỗ trợ cho các loại dữ liệu vector và ma trận: GLM hỗ trợ các loại dữ liệu vector
và ma trận phô biến, chăng hạn như vec3, vec4, mat3 và mat4.
Các hàm và cấu trúc cho các phép tính vector và ma trận: GLM cung cấp các hàm
và cấu trúc cho các phép tính vector và ma trận phổ biến, chăng hạn như phép
cộng, phép trừ, phép nhân, phép chia, phép nhân ma trận và phép chuyên đôi.
Hỗ trợ cho các phép tính hình học: GLM cung cấp hỗ trợ cho các phép tính hìnhhọc phổ biến, chăng hạn như phép tính khoảng cách, phép tính góc và phép tính
diện tích.
Hỗ trợ cho các phép tính tọa độ: GLM cung cấp hỗ trợ cho các phép tính tọa độ
phô biến, chăng hạn như phép chuyền đôi giữa hệ tọa độ Descartes và hệ tọa độ
cực.
Kết hợp và được tối ưu khi sử dụng với OpenGL Shading Language (GLSL) của
OpenGL khi tính toán các dir liệu.
Nguyễn Thành Đô 20