Bài Giảng Lập Trình Đồ Hoạ Máy Tính Với Opengl Tài Liệu, Nội Dung Của Quyển Sách Này Là Gì
Download miễn phí PDFView PDF
Download không tính tiền PDFView PDF
FAIR - NGHIÊN CỨU CƠ BẢN VÀ ỨNG DỤNG CÔNG NGHỆ THÔNG TIN - 2016
Download miễn phí PDFView PDF
Dong Thap University Journal of Science
Nghiên cứu vớt đã hỗ trợ quy trình năm cách xây dựng sơ đồ tư duy cho ngôn từ Sinh học lớp 12 bằng phần mềm i
Mindmap 9. Sơ đồ bốn duy có phong cách thiết kế dưới dạng bài tập điền khuyết nhằm kích thích lòng tin học tập của học sinh. Câu hỏi ôn tập được kèm theo sau từng sơ đồ tứ duy bài bác học nhằm giúp cho học sinh khắc sâu hơn kiến thức. Công dụng dạy thực nghiệm cùng khảo sát học viên ở 4 lớp 12 trên Trường Trung học phổ thông thực hành thực tế Sư phạm và Trường Trung học thêm An Khánh cho biết thêm cả cô giáo và học sinh đánh giá cao cực hiếm việc thực hiện sơ đồ tư duy trong dạy và học. Sơ đồ tư duy này là bốn liệu quý giúp học sinh sẵn sàng cho các kỳ thi sắp tới.
Bạn đang xem: Opengl tài liệu
Download không lấy phí PDFView PDF
SCIENTIFIC JOURNAL OF rã TRAO UNIVERSITY
Ngày nay vấn đề dạy ngữ pháp không chỉ theo lối so sánh từ một số loại và so với câu, mà lại việc đào tạo ngữ pháp còn được trải qua những bài xích tập kết phù hợp với việc dạy nhiều kỹ năng ngôn ngữ, kỹ năng học, cách thức học, năng lực vận dụng,... Để dạy dỗ ngữ pháp có hiệu quả, thầy giáo cần linh động chọn lọc cách thức và kinh nghiệm dạy sao để cho đạt mục tiêu yêu ước của bài xích học. Trong bài báo này tác giả đã đưa ra thực trạng của vấn đề và một trong những kỹ thuật dạy học phần Language Focus trong sách tiếng Anh lớp 9 một phương pháp hiệu quả. Ngoài ra, giáo viên cũng phải lý giải cho học sinh hiểu tầm đặc biệt quan trọng của việc học ngữ pháp. Trường đoản cú đó các em rất có thể sử dụng ngôn từ một cách có ý nghĩa và mô tả được đúng điều mà mình thích giao tiếp. đặc biệt nhất là học sinh hiểu được hình hài và ý nghĩa sâu sắc của đông đảo điểm ngữ pháp vẫn học để hoàn toàn có thể sử dụng ngôn ngữ kết quả nhất
Download free PDFView PDF
Các công trình nghiên cứu, cải tiến và phát triển và ứng dụng công nghệ Thông tin cùng Truyền thông
Hệ thống ghi nhận hoạt động của con người sử dụng cảm ứng giúp cung ứng đánh giá triệu chứng sức khỏe. Yêucầu đưa ra là hiệu suất chuyển động cao, chi tiêu rẻ và chuyển động theo thời hạn thực ngay lập tức trên các vi điều khiển có tính năng thấp. Từ dữ liệu thu thập của các hành động cần trích xuất đặc thù đặc trưng điển hình. Những đặc thù này được huấn luyện và đào tạo để phân các loại hành động. Một thiết bị gắn thêm trên eo bạn được xây dựng kết nối khối hệ thống thông qua Wi
Fi và được cho phép phân loại hành vi người theo thời gian thực, đồng thời fan dùng rất có thể giám sát vận động và làm chủ dữ liệu trên máy vi tính hoặc smartphone thông minh.
Rất vui vì nhiều người đang đọc loạt bài hướng dẫn này. Đây là loạt bài bác về quả đât 3D. Ví dụ là Open
GL. Tôi sẽ tập trung toàn thể thời gian trong khoảng thời gian nửa năm vừa rồi để mày mò về công nghệ 3D, Tôi đang xong xuôi Engine 3d của tôi (dường như là 1 trong dự án lớn nhất mà tôi đã có lần làm) và bây chừ là thời hạn tôi share với bạn về phần lớn gì nhưng mà tôi đã thu lặt được - toàn bộ tài liệu, tất cả sách, hướng dẫn, và tất nhiên bao hàm cả những ý kiến phản hồi của những bạn.
Loạt bài bác này tất cả 3 phần:
Phần 1 - khái niệm cơ bản về 3d và OpenGLPhần 2 - Đi sâu vào Openg
GL ES 2.0Phần 3 - năng lực Jedi vào Open
GL ES 2.0 và bối cảnh 2D
Nếu mình thích xem code luôn luôn thì hãy ngó qua phần 2/3 trước vì trong phần đầu tôi chỉ trình diễn về các khái niệm thôi.
Nào, bước đầu thôi.
Tổng quan
Có ai chưa từng nghe về Open
GL không? Open
GL là viết tắt cho "Open Graphics Library" với nó được dùng không ít trong ngôn ngữ máy tính. Open
GL là nơi gần nhất giữa CPU (cái mà bọn họ - phần đông developer - chạy các ứng dụng trên các ngôn ngữ lập trình) cùng GPU (chip cách xử lý đồ họa). Vị vậy Open
GL cần phải được cung cấp bởi các nhà chế tạo card đồ họa (vd: NVidia) với được thiết đặt bởi những công ty đối tác phát triển hệ điều hành (giống như hãng apple hay Microsoft) và sau cuối Open
GL cho chúng ta một API thống nhất để làm việc. API này là các "Ngôn ngữ miễn phí" (hoặc phần đông miễn phí). Câu hỏi này quá tiện lợi vì nếu như khách hàng sử dụng C hoặc C++ hay thậm chí là Objective-C, Perl, C# xuất xắc Javascript hay ngẫu nhiên ngôn ngữ nào bạn muốn, API của Open
GL luôn giống nhau, giải pháp xử lý giống nhau, bình thường chức năng, cái lệnh với là vị trí mà loạt bài xích hướng dẫn này bắt đầu!
Trước khi nói về Open
GL API bọn họ cần đề nghị có kiến thức về 3D. Lịch sử vẻ vang của 3d trong ngôn ngữ máy vi tính được gói trong lịch sử dân tộc của Open
GL. Vày vậy hãy cùng mày mò qua một ít về lịch sử hào hùng của nó.
Một mẩu truyện nhỏ
Khoảng 20 năm ngoái có một fan tên là Silicon Graphics (SGI) tạo nên một nhiều loại thiết bị nhỏ. Trang bị này rất có thể hiện ra các ảo ảnh rất thực tế. Với hình ảnh 2D, đồ vật đó dám hiện tại được các hình ảnh kiểu 3D, mô rộp cái nhìn và chiều sâu theo đôi mắt của bé người. Thiết bị này được gọi là Iris
GL (có lẽ do nó cố kỉnh thử mô bỏng theo đôi mắt của bé người).
Ghê chưa, thiết bị chính là thư viện hình ảnh đầu tiên. Nhưng nó chết quá cấp tốc vì để triển khai được như thế, anh ta đề nghị điều khiển quá nhiều thứ trong máy vi tính như card đồ họa, khối hệ thống windows, những ngôn ngữ lập trình với giao diện địa chỉ với người tiêu dùng cuối. Vô số thứ thậm chí để cho 1 công ty quản ngại lý, chưa kể tới 1 người. Bởi vì vậy SGI bắt đầu chuyển sang một thứ giống như "thẻ chế tạo ra đồ họa", "hệ thống thống trị cửa sổ", "tạo giao diện người dùng" cho những công ty khác và tập trung vào phần đặc trưng nhất của thư viện vật họa. Năm 1992 đã ra đời Open
GL cố hệ đầu tiên.
Vào năm 1995 Microsoft ra mắt Direct3D, đối thủ tuyên chiến đối đầu và cạnh tranh đáng ghờm cùng với Open
GL.Và chỉ cho tới năm 1997 Open
GL 1.1 đã có được tung ra. Tuy thế tới tận năm 2004, Open
GL mới hoàn toàn có thể thu hút được tôi, Open
GL 2.0 cùng với những thiên tài tuyệt vời. Tôi thực sự ưa thích Shaders, lập trình sẵn pipeline (programmable pipeline).
Cuối thuộc vào 2007 Open
GL ES 2.0 đã mang sức mạnh của Shader với Programmable pipeline cho tới các khối hệ thống nhúng.
Ngày nay, chúng ta cũng có thể thấy logo của Open
GL (hoặc Open
GL ES) trong không ít trò chơi, ứng dụng 3D, 2d và rất đa phần mềm không giống (đặc biệt là phần mềm 3D). Open
GL ES được dùng bởi Play
Station, Android, Nintendo 3DS, Nokia, Samsung, Symbian và tất nhiên cả hãng apple với Mac
OS cùng i
OS.
Đối thủ lớn số 1 của Open
GL
Vâng, họ đang nói đến hệ quản lý Windows.
Bạn gồm nhớ tôi sẽ nói rằng bản đầu tiên của Open
GL là 1992? cùng thời khắc đó, Microsoft đã có Windows 3. Như Microsoft luôn luôn tin rằng "không gì được chế tạo ra ra, hồ hết thứ được copy", Microsot đã tất cả gắng copy Open
GL giữa những gì họ hotline là Direct
X và được reviews lần đầu năm 1995 trong Windows 95 tương ứng.
Một năm sau, 1996, Microsoft reviews Direct3D, một phiên phiên bản copy của Open
GL. Điểm đáng nói là Microsoft đã sở hữu ưu vậy trên thị phần trong những năm liền, và Direct
X hoặc (Direct3D) đã lấn sâu vào các máy tính PCs và khi Microsoft bước đầu chuyển sang thị trường di rượu cồn và video Game, Direct
X cũng lấn sảnh sang.
Ngày ni Direct
X có cấu trúc rất giống như với Open
GL: dùng ngôn từ Shader, cũng có programmable pipeline, thậm chí còn cũng cung ứng cả fix pipeline, không chỉ có vậy là tên của những hàm trong API cũng như luôn. Sự khác nhau chỉ là Open
GL là miễn phí, luôn luôn luôn mở, tuy vậy Direct
X là đóng. Open
GL cho i
OS, Mac
OS, hệ thống Linux trong những lúc Direct
X chỉ dành riêng cho hệ điều hành và quản lý của Microsoft.
Giờ là lúc bạn cũng có thể bắt đầu tìm hiểu thế giới lập trình 3d được rồi!
3D - Con mắt nhìn thứ nhất
Từ lúc tôi mập lên, tôi đã đam mê technology 3D và những trò gameplay 3D. Tất cả các nhân vật dụng trong đó, bé người, biết về tế bào phỏng trái đất thực trong số hiệu ứng 3D đến từ một địa điểm duy nhất: nhỏ mắt.
Con đôi mắt là cơ phiên bản trong quả đât 3D. Tất cả những điều chúng ta làm là mô bỏng nó, làm sao thật đẹp, thật cuốn hút giống như những gì mắt con người rất có thể thấy. Gần như khái niệm tương quan tới đôi mắt như góc nhìn, khoảng nhìn, ống kính, thấu kính, những loại sự thứ là sẽ được nói đến nhiều khi chúng ta làm thân quen với 3D.
Mọi thứ họ làm là cố gắng tái tạo từ mắt tín đồ những thứ: góc nhìn, điểm mù, phát triển thành dạng, độ sâu ảnh, tiêu cự, góc nhìn...
Không gian 3 chiều
Nghe có vẻ ngớ ngẩn nhưng mà thực sự đề nghị nói rằng: thế giới 3D là 3d vì nó gồm 3 chiều. Tôi nói loại này vị nó rất đặc trưng để nói thêm rằng nó nhiều hơn thế nữa 2D một chiều và phức tạp hơn rất rất nhiều so cùng với 2D.
Hãy xem, trong nhân loại 2D khi bọn họ cần cù một hình vuông rất đối kháng giản: 45 độ luôn là 45 độ. Nhưng với 3D, để quay một hình vuông yêu cầu 3 trục X, Y, Z. Phụ thuộc trên sản phẩm tự của góc quay, kết quả cuối cùng rất có thể rất khác nhau. Những thứ thông thường sẽ trở lên tứ tung khi bọn họ thử cù với những trục khác nhau. Ví dụ: xoay x=25, y=20 là 1 kiểu, x=10, y=20 và sau đó x=10 lại tạo ra một tác dụng mới.
Như vậy nói cách khác khi thêm 1 chiều khác làm cho quá trình của họ phức tạp lên gấp nhiều lần.
Không phải 3d mà buộc phải là 4D
Hmmm, lại thêm 1 chiều nữa ư?
Chính xác, điểm sau cuối tôi mong nhắc đến đó là điều này. Họ không chỉ thao tác trong nhân loại 3D, họ còn có chiều thứ 4: thời gian. đầy đủ sự thứ trong nhân loại 3D cần tương tác lẫn nhau, rất cần được di chuyển, va chạm, nỗ lực đổi. Cùng như tôi đã nói làm việc trên, việc biến đổi đó trong trái đất 3D tạo ra nhiều công dụng khác nhau.
Vậy đến lúc này chúng ta đã khái niệm được 3 chiều là: "việc mô bỏng mắt của con người và mô rộp sự chuyển động của những sự vật".
Áp dụng Open
GL vào quả đât 3D
Bây giờ mới là lúc nói tới cái độc đáo của bài xích blog này: Hãy nói về Open
GL. Đầu tiên bọn họ cần cảm ơn các nhà toán học tập như Ơ-le, Hamilton, Pythago và rất nhiều nhà khoa học khác. Nhờ tất cả họ nhưng ngày nay họ có không ít công thức và công cụ để làm việc với không khí 3 chiều. Open
GL đã sử dụng tất cả kiến thức đó để tạo ra một trái đất 3D ngay lập tức trước mặt bọn chúng ta. Tất cả hàng nghìn, thậm chí là hàng triệu phép thống kê giám sát trên một giây sử dụng những công thức toán học nhằm mô phỏng lại vẻ đẹp mà lại mắt bạn trông thấy.
Open
GL là 1 trong MÁY TRẠNG THÁI (state machine) - điều này có nghĩa là toàn bộ Open
GL làm việc trên mô hình xây dựng theo trạng thái. Để minh họa mang đến Open
GL, hãy tưởng tượng một máy cần Trục cảng tp. Hải phòng chẳng hạn. Ở đó có không ít các thùng mặt hàng (container) với không hề ít các khiếu nại hàng nhỏ dại bên trong. Open
GL như thể như toàn thể khu cảng đó bao gồm:
GL (Textures, Shaders, Meshes, và những thứ tương tự)Các kiện hàng bên trong mỗi container là gần như gì chúng ta tạo ra vào ứng dụng sử dụng Open
GL. Đó là đều thứ chúng ta nhìn thấy.Máy đề nghị trục là những Open
GL API, mẫu mà họ sẽ sử dụng.
Vậy khi chúng ta thực hiện nay một hàm vào Open
GL hệt như việc sử dụng cần trục. Chiếc buộc phải trục lấy những container vào cảng, nâng nó lên, xử lý đông đảo gì bên trong và ở đầu cuối thả xuống vào một trong những nơi đang định sẵn. Bạn chưa hẳn trực tiếp thực hiện cảng đó, ko thể thay đổi nội dung các thùng hàng, không thể thay thế chúng, các bạn cũng quan trọng trực tiếp đụng đụng vào các thùng sản phẩm trong cảng. Tất cả chỉ là chúng ta ra lệnh cho chiếc đề nghị trục thực hiện. Chỉ bao gồm chiếc nên trục đó mới rất có thể tác hễ lên các thùng hàng trong container. Hãy ghi nhớ điều này! Nó là cực kì quan trọng về Open
GL cho tới bây giờ. Chiếc nên trục chỉ là 1 trong những thứ có thể cai quản các thùng sản phẩm trong cảng.
Có vẻ Open
GL bị số lượng giới hạn bởi các API? dẫu vậy không, những cần trục của Open
GL là rất là mạnh mẽ. Nó hoàn toàn có thể lặp lại câu hỏi xử lý gắp-và-thả hàng nghìn tính đến hàng triệu những container trong một giây. Một sản phẩm công nghệ tuyệt với khác của Open
GL là sử dụng quy mô State Machine, đó là bọn họ không bắt buộc lưu giữ bất kỳ thể hiện nay nào, bọn họ không rất cần phải tạo các đối tượng người sử dụng trực tiếp, chúng ta chỉ bắt buộc giữ các id, hoặc trong ví dụ như trên: chúng ta chỉ cần biết về id của các container.
Vậy Open
GL làm việc như cố nào?
Đi sâu vào cỗ xử lý thống kê giám sát của Open
GL, ta thấy Open
GL sử dụng đo lường trực tiếp bên trên GPU - phần cứng xử lý hình ảnh cho laptop - và thực hiện dấu phảy đụng (floating points). CPU (Central Processing Unit) là cpu xử lý của máy tính. Còn GPU (Graphics Processing Unit) là cpu đồ họa. Chip xử lý đồ họa này hỗ trợ cho CPU bớt thiểu các các bước nặng nhọc: nó hoàn toàn có thể xử lý hình ảnh trước khi hiện ra màn hình. Giỏi sâu hơn, đều gì Open
GL thực hiện đó là trên GPU, vậy vì giám sát và đo lường trên CPU. GPU cấp tốc hơn rất rất nhiều với các số thực đối với CPU. Đây là tại sao cơ phiên bản để các trò chơi 3 chiều chạy cấp tốc hơn khi tất cả card vật dụng họa. Đây cũng đó là lý do cho các ứng dụng xử lý 3D chuyên nghiệp hóa giúp họ làm câu hỏi với "Software"s Render" (xử lý trên CPU) hoặc "Graphics Card"s Render" (xử lý trên GPU). Một vài ứng dụng cũng cho họ một tùy chọn: có dùng Open
GL hay không? với đó, giờ các bạn đã biết rồi. Tùy chọn đó đó là dành cho vấn đề xử lý đã ở bên trên GPU xuất xắc không. Vì chưng vậy, Open
GL sẽ trọn vẹn làm bài toán với GPU tốt không? câu trả lời là ko chắc. Chỉ những thao tác xử lý ảnh và vài sản phẩm khác thôi. Open
GL cho bọn họ rất nhiều tác dụng để tàng trữ ảnh, dữ liệu, thông tin trong một định dạng ráng thể. Phần nhiều định dạng này được xử lý trực tiếp do GPU. Vì chưng vậy Open
GL nhờ vào vào phần cứng. Trường hợp phần cứng không cung ứng Open
GL, họ không thể sử dụng nó. Vượt buồn! những phiên phiên bản mới của Open
GL thường xuyên cần những tính năng mới của GPU. Dẫu vậy cũng đừng lo lắng, Open
GL luôn cần những nhà chế tạo tích hòa hợp vào, họ (những developer - coder) sẽ làm việc trên những phiên bạn dạng Open
GL bắt đầu chỉ lúc thiết bị sẽ sẵn sàng. Vào thực tế, tât cả những chip thiết bị họa hiện tại đều cung cấp Open
GL. Vị vậy bạn cũng có thể sử dụng Open
GL với không ít ngôn ngữ cùng thiết bị. Thậm chí còn với Microsoft Windows.
Logic của Open
GL
Open
GL là thư viện đồ họa khá ngắn gọn cùng súc tích. Phần đông gì các bạn thấy trong các ứng dụng xử lý 3D chuyên nghiệp là cực kì phức tạp chuyển động trên Open
GL. Vì súc tích của Open
GL bao gồm thứ sau:
Open
GL vận động xoay quanh 3 tư tưởng này. Mỗi có mang ở trên độc lập nhau cùng làm cầm nào nhằm cả 3 có thể cùng nhau tạo nên các cảm giác 3D bắt mắt (hay bao gồm cả với các hình ảnh 2D vày nó chỉ là dạng 3 chiều với độ sâu Z=0, họ sẽ nói sự việc này sau).
Primitives
Bao gồm 3 loại đói tượng:
Các điểm vào hệ không gian 3 chiều (x, y cùng z)Các đường thẳng trong không khí (sự phối hợp của 2 điểm)về một tam giác trong không khí (sự phối kết hợp của 3 điểm)Một điểm 3D hoàn toàn có thể coi như một phân tử trong không gian.Một đường thẳng luôn hoàn toàn có thể coi như một vector.Một tam giác có thể coi là một mặt trong 1 cái lưới với hàng nghìn, triệu tam giác phối kết hợp lại.
Một vài phiên phiên bản Open
GL cung cấp quads (hình tứ diện cùng với 4 điểm), cũng là 1 trong những loại của tam giác, nhưng lại để Open
GL ES đạt hiệu quả tối đa thì cái này sẽ không được hỗ trợ.
Buffers
Nói một cách đơn giản, buffer là 1 vùng lưu trữ tạm thời giúp cho việc tối ưu. Bao gồm 3 nhiều loại Buffer:
Frame BufferRender Buffer
Buffer Object
Frame Buffer là trừu tượng và khó khăn hiểu nhất trong cả 3 loại. Khi chúng ta tạo một cảnh, bạn có thể gửi hình ảnh trực tiếp tới màn hình hiển thị của trang bị hoặc tới Frame Buffer. Về cơ phiên bản Frame Buffer là 1 trong vùng để lưu dữ liệu ảnh tạm. Cụ thể hơn, bạn cũng có thể tưởng tượng nó như một cổng output từ bộ render của Open
GL cùng gồm tương đối nhiều ảnh, chưa hẳn chỉ tất cả một. Những ảnh đó là gì? Đó là những hình ảnh về các đối tượng người tiêu dùng 3D, về độ gần/xa của các đối tượng người sử dụng trong không gian, các vùng giao nhau của các đối tượng người sử dụng và về những phần được hiện nay ra. Do vậy Frame Buffer y như một tập với nhiều ảnh. Toàn bộ đều được lưu trữ dưới dạng thông tin mảng những giá trị pixel.
Render Buffer là một trong vùng nhớ tạm bợ của một ảnh duy nhất. Giờ bạn cũng có thể rõ ràng hơn khi 1 Frame Buffer bao gồm là bao gồm nhiều Render Buffer. Tất cả vài loại Render Buffer: Màu, độ sâu, hình khối.
Màu: lưu trữ những màu cuối cùng được sinh vị OpenGL render với lưu bên dưới dạng hình ảnh màu (RGB).Độ sâu tàng trữ giá trị Z của đối tượng. Nếu khách hàng đã quen thuộc với các phần mềm 3D, bạn sẽ biết về độ sâu của hình ảnh là gì. Nó là tỉ lệ thành phần độ màu sắc xám của hình ảnh phụ thuộc theo địa chỉ so với màn hình. Vào trường hợp rất đầy đủ độ white khi đối tượng người tiêu dùng ở sớm nhất và màu sắc đen trọn vẹn khi nó ở xa nhất.Hình khối ám chỉ về thành phần hiển thị của đối tượng. Y như một lớp mask cho các vùng được quan sát thấy. Được lưu bên dưới dạn ảnh chỉ gồm 2 white color & đen.
Xem thêm: Ng U Ở Vùng Cổ Thường Gặp - Nguyên Nhân Gây Ra Khối U Ở Cổ
Buffer Object là một trong những vùng nhớ nhưng mà Open
GL điện thoại tư vấn là "server side" (hoặc ko gian địa chỉ cửa hàng lưu trữ). Buffer Object cũng là một vùng nhớ nhất thời thời, nhưng có vẻ lâu dài hơn nữa các một số loại trước. Một Buffer Object hoàn toàn có thể lưu trữ trong suốt quy trình sử dụng ứng dụng. Buffer Object có thể giữ các thông tin về đối tượng 3D dưới dạng vẫn được tối ưu. Những tin tức này rất có thể có 2 loại: Structure cùng Indice.
Structure là mảng bộc lộ các đối tượng người sử dụng 3D, vd: một mảng những đỉnh, mảng những tọa độ texture hoặc một mảng của rất nhiều gì chúng ta muốn. Indice thì cụ thể hơn, mảng này được dùng để xác định có bao nhiêu tam giác vào lưới sẽ được tạo ra dựa bên trên mảng structure.
Bạn vẫn khó khăn hiểu ư? Hãy xem ví dụ dưới đây:
Tưởng tượng một khối 3D. Khối này còn có 6 phương diện được sinh ra vì chưng 8 đỉnh?
Mỗi mặt là 1 trong những hình vuông, nhưng bạn có hãy nhờ rằng Open
GL chỉ biết về những tam giác đúng không? vày vậy chúng ta cần đưa những hình vuông đó thành những tam giác để gia công việc cùng với Open
GL. Như vậy họ có 12 tam giác vớ cả!Ảnh ngơi nghỉ trên được tạo ra bởi phần mềm Modo, hãy coi góc dưới mặt phải. Chúng là những thông tin về đồ vật thể của chúng ta. Chúng ta cũng có thể thấy tất cả 8 đỉnh cùng 12 phương diện (GL: 12).
Các tam giác trong Open
GL là sự kết hợp của những đỉnh 3D. Do vậy để sinh sản ra bề mặt của loại hộp, bọn họ cần Open
GL tạo theo cách như này: đỉnh 1, đỉnh 2, đỉnh 3, đỉnh 1, đỉnh 3, đỉnh 4.
Hay nói biện pháp khác, họ cần tái diễn 2 đỉnh tại 1 mặt của hình vuông. Nếu cố gắng hình hộp bởi một hình bao gồm 12 khía cạnh thì từng đỉnh phải lặp 4 lần, giả dụ thay bởi một hình 16 mặt, họ cần 6 lần lặp lại. Cùng cứ thế, câu hỏi tăng số lặp của các đỉnh lên cấp tốc chóng.
Vì vậy Open
GL mang đến phép bọn họ một giải pháp làm đơn giản và dễ dàng hơn: thực hiện một mảng các Indice. Ở ví dụ trên, chúng ta có thể có một mảng 8 đỉnh: đỉnh 1, đỉnh 2, đỉnh 3, đỉnh 4,... Với thay vày viết lại gần như thông tin cho từng mặt, bọn họ tạo một mảng những Indicate: 0,1,2,0,2,3,2,6,3,2,5,6,.... Từng sự phối kết hợp 3 bộ phận trong mảng 0,1,2-0,2,3-2,6,3 màn biểu diễn một mặt tam giác. Với đặc thù này, bạn cũng có thể viết thông tin các đỉnh 1 lần và tái áp dụng nhiều lần vào mảng các indicate.
Giờ quay trở lại với Buffer Object, loại trước tiên là một mảng các structure, như đỉnh 1, đỉnh 2, đỉnh 3, đỉnh 4,... Với loại thứ 2 là mảng các indice 0,1,2,0,2,3,2,6,3,2,5,6....
Lợi ích của Buffer Object là bọn chúng được tối ưu để làm việc trực tiếp với GPU và bạn không đề xuất giữ mảng kia trong ứng dụng của người sử dụng sau khi chế tạo một Buffer Object.
Rasterize
Rastersize là quy trình xử lý bởi Open
GL nhận toàn bộ thông tin về đối tượng người sử dụng 3D (bao bao gồm đỉnh, tọa độ, tính toán...) để tạo ra một hình ảnh 2D. Ảnh này có khả năng sẽ bị một vài đổi khác và kế tiếp hiển thị trên màn hình hiển thị của thiết bị.
Nhưng nghỉ ngơi bước sau cùng này, việc kết nối giữa thông tin các px và thiết bị màn hình thuộc về những nhà cung ứng thiết bị. đội Khronos hỗ trợ API khác gọi là EGL, nhưng lại đây chỉ cần api của các nhà sản xuất. Chúng ta, các developer vẫn không làm việc trực tiếp với Khronos EGL, mà với phiên bản đã được chuyển đổi của các nhà cung cấp.
Vì vậy khi bạn tạo một Open
GL render, bạn cũng có thể chọn quy trình render thẳng lên màn hình, thực hiện EGL, hoặc render tới các Frame Buffer. Việc render tới những Frame Buffer, chúng ta vẫn làm việc trong Open
GL API, tuy vậy nội dụng sẽ chưa được hiện ra bên trên màn hình. Câu hỏi hiển thị lên screen nằm quanh đó phạm vi của Open
GL API, nó là của EGL API. Vị vậy tại thời khắc render, chúng ta có thể chọn 1 trong 2 các loại để xuất ra.
Nhưng đừng thử ngay, bởi như tôi sẽ nói, mỗi nhà phân phối tạo riêng mang đến họ những EGL API riêng. Ví dụ táo apple không được cho phép bạn render thẳng tới màn hình hiển thị thiết bị, bạn luôn luôn yêu cầu render tới Frame Buffer và kế tiếp dùng EGL (bởi Appple) nhằm hiện ngôn từ lên màn hình.
Open
GL pipelines
Như tôi đã nói tới "Programmable pipeline" và "fixed pipeline", Programmable pipeline là thư viện đồ họa cho phép bọn họ làm đa số thứ tương quan tới Camera, Ánh sáng, cấu tạo từ chất và hiệu ứng. Và bạn cũng có thể làm vấn đề này cùng với Shader. Vày vậy mỗi khi bạn nghe về "programmable pipeline" hãy suy nghĩ về Shader!
Thử cùng tìm hiểu Shader là gì nhỉ.
Shader hệt như một đoạn code, giao diện như một chương trình nhỏ, thao tác làm việc trực tiếp trong GPU để thực hiện các phép tính phức tạp. Nếu mô tả một cách phức hợp thì như thế này: màu sắc cuối thuộc của mặt phẳng vật thể, mẫu mà có một texture là T, bị chuyển đổi khi đâm vào trong 1 vật gồm texture là TB, thực hiện màu SC với phản chiếu mức SL, dưới tia nắng L với độ mạnh LP theo góc LA từ khoảng cách Z cùng với độ rọi F và toàn bộ đang nhìn vì mắt của Camera C tại vị trí p. Với ống kính T.
Những điều này có nghĩa nó cực kì phức tạp để xử lý trên CPU và không ít thứ cần làm đẩy mang lại thư viện cách xử trí đồ họa. Do vậy programmable pipeline chỉ cần cách chúng ta quản lý đều thứ đó như vậy nào.
Còn fixed pipeline ngược với programmable pipeline! Fixed pipeline là thư viện giao diện xử lý về tất cả các các loại và cho họ api để setup Camera, Material, ánh sáng, hiệu ứng.
Để tạo Shader chúng ta dùng ngôn ngữ tựa như như C, sẽ là Open
GL Shader Language (GLSL). Open
GL ES sử dụng với một chút giới hạn được call là Open
GL ES Shader Language (GLSL ES hoặc ESSL). Sự không giống nhau là các bạn có thêm một trong những hàm và hoàn toàn có thể viết thêm các biến trong GLSL hơn với GLSL ES, mà lại cú pháp là như là nhau.
Điểm một chút về cơ chế thao tác làm việc của đầy đủ Shader này:
Bạn chế tạo chúng trong số file cá biệt hoặc viết trực tiếp trong code của bạn, miễn làm sao nội dung ở đầu cuối chứa Shader Language sẽ tiến hành gửi mang đến Open
GL với biên dịch Shader cho mình (bạn thậm chí có thể dùng tiền-biên-dịch dưới dạng mã nhị phân, tuy nhiên không nằm trong trong nội dung nội dung bài viết này).
Shader thao tác làm việc theo cặp: Vertex Shader với Fragment Shader. Chủ đề này nên rất quan liêu trọng, hãy xem chi tiết Vertex cùng Fragment như thế nào. Để hiểu đông đảo gì mỗi loại shader làm, hãy quay lại ví dụ hình vỏ hộp ở trên.
Vertex Shader
Vertex Shader cũng khá được biết đến như thể VS hoặc VSH là một chương trình bé dại sẽ được thực thi ở mỗi đỉnh của mesh (mỗi đồ dùng thể được khiến cho bằng một lưới các tọa độ, hotline là mesh). Hãy xem hình vỏ hộp ở trên, hộp này có 8 đỉnh (giờ trong ảnh chỉ tất cả 5 đỉnh đang rất được hiện ra thôi), bạn sẽ hiểu ngay tiếp sau đây thôi. Bởi vậy VSH sẽ tiến hành xử lý 8 lần vị CPU.
Những gì Vertex Shader sẽ làm là xác xác định trí cuối cùng của đỉnh. Chúng ta có nhớ là Programmable pipeline mang đến phép bọn họ điều khiển camera? chính là ở đây, vị trí với độ mở của ống kính camera bao gồm thể chuyển đổi vị trí ở đầu cuối của các đỉnh. Vertex Shader cũng có thể có trách nhiệm chuẩn bị và xuất ra vài variable (giá trị, biến) cho Fragment Shader. Trong Open
GL họ định nghĩa các biến ở Vertex Shader, nhưng không hẳn cho Fragment Shader trực tiếp. Bởi vì vậy, Vertex Shader cần gửi những biến tới Fragment Shader.
Nhưng trên sao chúng ta không thể trực tiếp truy vấn tới Fragment Shader?
Hãy coi FSH (Fragment Shader) và các bạn sẽ hiểu.
Fragment Shader
Giờ hãy xem lại hình lập phương một đợt nữa.
Bạn bao gồm thấy đỉnh số 5 bị ẩn tuyệt không? vày với vị trí thế thể, góc quay cố gắng thể, bọn họ chỉ có thể nhìn thấy 3 phương diện được hiện ra từ 7 đỉnh.
Đây là các thứ Fragment Shader thực hiện! FSH sẽ được xử lý nghỉ ngơi mỗi khía cạnh được hiện của ảnh cuối cùng (được hiện nay trên màn hình). Ở đây chúng ta cũng có thể hiểu một fragment như là một trong pixel. Tuy nhiên nói thông thường không hẳn chính xác như pixel, vì chưng giữa Open
GL render và việc hiện ra ảnh cuối thuộc trên màn hình thiết bị có khả năng sẽ bị giãn ra theo cả 2 chiều (ví dụ camera thu lại theo tỉ trọng 4:3 mà màn hình hiển thị là tỉ lệ thành phần 16:9 vậy). Vì vậy một fragment có thể có ít hơn hoặc nhiều hơn thế nữa số px thực tế, phụ thuộc trên trang bị và thông số kỹ thuật việc render. Vào hình lập phương sinh hoạt trên, Fragment Shader sẽ được xử lý nghỉ ngơi mỗi pixel của bố mặt đã hiện lên trường đoản cú 7 đỉnh đó.
Bên trong Fragment Shader, họ sẽ thao tác làm việc với gần như thứ tương quan tới mặt phẳng của trang bị thể, như hóa học liệu, cảm giác phản chiếu, đổ bóng, ánh sáng, tương phản, khúc xạ, tổ chức triển khai và bất kỳ các cảm giác khác mà các bạn muốn. Sản phẩm cuối cùng là color của các px dưới định hình RGBA.
Giờ thứ cuối cùng mà bạn nên biết đó là về VSH và FSH làm việc với nhau như thế nào. Đó là bắt buộc phải có 1 Vertex Shader và chỉ 1 Fragment Shader, không rộng không kém, phải chính xác là 1-1. Để bảo đảm an toàn chúng ta không phạm lỗi, Open
GL bao gồm một thứ call là Program. Một program vào Open
GL chỉ được biên dịch theo cặp 1 VSH và 1 FSH nhưng mà thôi.
Tổng kết
Đây là toàn bộ về khái niệm Open
GL. Hãy nhớ gần như điểm này:
GL lô ghích được khiến cho bởi 3 định nghĩa cơ bản: Primitive, Buffer cùng Rasterize.Primitives bao gồm điểm, đường, tam giác
Buffer rất có thể là Frame Buffer, Render Buffer hoặc Buffer Object.Rasterize là thừa trình thay đổi Open
GL đo lường ra các pixel
Open
GL có tác dụng việc đối với cả Fixed hoặc Programmable pipeline.Fixed pipeline vẫn cũ, chậm, cồng kềnh. Có tương đối nhiều hàm thao tác với Camera, ánh sáng, đồ vật liệu, hiệu ứng
Programmable pipeline dễ dùng hơn, nhanh và dễ hiểu hơn, bởi trong Programmable có thể chấp nhận được Open
GL lập trình được cùng với Camera, ánh sáng, vật tư và hiệu ứng.Programmable pipeline là y như Shader: Vertex Shader, mỗi đỉnh của mesh, cùng Fragment Shader - ở mỗi phần hiển thị của mesh. Mỗi cặp Vertex Shader cùng Fragment Shader được biên dịch trong một thứ hotline là Program.
Hãy xem cả 3 bài, Open
GL hình như rất đơn giản và dễ hiểu. Đúng! nó dễ dàng và đơn giản để hiểu dẫu vậy để học thì....haizzz3 điểm nghỉ ngơi trên liệt kê ra các nhánh của Open
GL cùng để học toàn bộ chúng bạn có lẽ rằng cần vài mon hoặc hơn.
Những gì tôi cố gắng đề cập ở 2 phần tiếp theo sau của loạt bài bác này đó là tất cả mọi gì tôi đã học được vào 6 tháng cực kì tập trung, đi sâu vào Open
GL. Trong phần tiếp theo sau tôi sẽ cho chính mình xem những hàm cơ bản và cấu tạo của một ứng dụng 3d sử dụng Open
GL. Độc lập với ngôn từ lập trình mà ai đang sử dụng hoặc với thiết bị nhiều người đang sử dụng.
Nhưng trước khi sang phần tiếp theo, tôi mong nói với các bạn thêm một sản phẩm nữa:
Open
GL Error API
Open
GL là một trong máy trạng thái tuyệt vời làm việc y hệt như một đề xuất trục nghỉ ngơi cảng tp. Hải phòng và bạn không cần thiết phải trực tiếp tiến hành những gì xảy ra bên trong. Vậy nếu gồm lỗi xảy ra thì sao? không tồn tại gì xảy ra với ứng dụng vì Open
GL hoàn toàn là ở mặt ngoài.
Nhưng làm cố gắng nào để tìm hiểu khi shader của bạn có lỗi? Làm cố kỉnh nào để tìm hiểu nếu quán trình render vào các buffer không hoạt động đúng như mong mỏi muốn?
Để bắt được các lỗi đó, Open
GL cho bọn họ Error API. Đây là API rất là đơn giản, nó có vài hàm cung cấp sẵn theo từng cặp. Một chiếc kiểm tra đối kháng giản, có/không, chỉ để hiểu nếu gồm thứ nào đó chạy đúng tuyệt không. Cặp không giống là để lấy ra được thông báo lỗi cố thể. Vị vậy cực kỳ đơn giản. Đầu tiên bạn kiểm tra, hết sức nhanh, nếu tất cả một lỗi, bạn lấy thông báo ra.
Nói chung chúng ta đặt vài điểm soát sổ ở các nơi rất có thể xảy ra lỗi, gioogns như vấn đề biên dịch Shader hoặc thông số kỹ thuật Buffer nhằm tránh những lỗi cơ bản.
Phần tiếp theo
Ở phần tiếp theo, bọn họ hãy xem chi tiết bên phía trong đoạn code thực tế, bạn sẽ đươc code khôn cùng nhiều.