ĐỀ TÀI TÌM HIỂU OPENGL ES 2.0

45 1.1K 5
ĐỀ TÀI TÌM HIỂU OPENGL ES 2.0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ BÁO CÁO MÔN: CÁC VẤN ĐỀ HIỆN ĐẠI CÔNG NGHỆ PHẦN MỀM NGÀNH: CÔNG NGHỆ THÔNG TIN ĐỀ TÀI: TÌM HIỂU OPENGL ES 2.0 GV đánh giá: TS.Võ Đình Hiếu Sinh viên: Lê Thái Hòa Nhóm: Hà Nội, tháng 12 năm 2013 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 1 Mục Lục I. GIỚI THIỆU ĐỀ TÀI 3 1. Nội dung đề tài 3 2. Lý do chọn đề tài 3 II.PHÂN TÍCH ĐỀ TÀI 5 Phần 1 - Các khái niệm cơ bản của thế giới 3D và OpenGL 5 1. Đối thủ lớn nhất của OpenGL 6 2. OpenGL làm việc như thế nào? 6 3. Logic của OpenGL 7 3.1 Primitives 7 3.2 Bộ đệm (Buffers) 8 3.3 Rasterize 8 4. Đường ống dẫn của OpenGL 9 4.1 Vertex Shader 9 4.2 Fragment Shader 9 Phần 2: Đi xâu vào OpenGL ES 2.0 10 1. Các kiểu dữ liệu OpenGL và đường ống dẫn lập trình 10 2. Primitives 12 3. Bộ đệm (Buffers) 14 3.1 Khung đệm (Frame Buffers) 14 3.2 Làm đệm (Render Buffers) 15 4. Kết cấu (Texture) 19 5. Rasterize 24 6. Shaders 28 7. Rendering 38 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 2 7.1. Pre-Render 38 7.2. Bản vẽ (Drawing) 39 7.3. Render 41 Phần 3: Đồ họa 2D với OpenGL ES 2.0 41 TÀI LIỆU THAM KHẢO 43 Books 43 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 3 I. GIỚI THIỆU ĐỀ TÀI 1. Nội dung đề tài Tên đề tài: Nghiên cứu về OpenGL ES 2. Đề tài được triển khai qua 3 phần  Phần 1: Các khái niệm cơ bản của thế giới 3D và OpenGL  Phần 2: Đi xâu vào OpenGL ES 2.0  Phần 3: Đồ họa 2D với OpenGL ES 2.0 2. Lý do chọn đề tài Game là một lĩnh vực giải trí hiện đang được coi là HOT cho tất cả các nền tảng hiện nay, đặc biệt nói đến là smartphone. Khi nói tới giải trí, chúng ta thường nghĩ tới game. Đôi khi game cũng được sử dụng như một công cụ giáo dục. Game được phát triển cho nhiều thiết bị như PC, smartphone, các thiết bị cầm tay hoặc chạy ngay trên chính trình duyệt web. Các nền tảng cho phép phát triển game có thể kể đến là các hệ điều hành cho máy tính: Windows, Linux, Mac, ,hệ điều hành smartphone: iOS, Android, WindowsPhone, Symbian, Bada, Game được phát triển bởi hầu hết các ngôn ngữ lập trình tùy thuộc độ mềm dẻo và yêu cầu của game. Ngoài ra trong cuộc sống cần sử dụng tới rất nhiều ứng dụng như CAD, thực tế ảo, mô phỏng khoa học, mô phỏng thông tin Khi nhắc tới game và các ứng dụng kể trên chúng ta nghĩ ngay tới đồ họa của nó như thế nào? Vậy tại sao lại cần đồ họa và cái gì làm nên đồ họa? OpenGL sẽ trả lời câu hỏi này cho chúng ta. OpenGL (tên tiếng anh Open Graphics Library) là một tiêu chuẩn kỹ thuật đồ họa có mục đích định ra một giao diện lập trình ứng dụng(tiếng anh: API) đồ họa 3 chiều hoặc 2 chiều. OpenGL còn có đối thủ cạnh tranh là DirectX của Microsoft. OpenGL ES là một sản phẩm miễn phí bao gồm các hàm API cho phép tạo các ứng dụng 2D, 3D trên các ứng dụng nhúng – bao gồm các thiết bị cầm tay. Nó được định nghĩa như là một tập con của OpenGL, tạo ra tính linh hoạt, mạnh mẽ trên giao diện cấp thấp giữa phần mềm và đồ họa. OpenGL ES được phát triển Các vấn đề hiện đại CNPM – OpenGL ES 2.0 4 nhằm mục đích tạo đồ họa cho nền tảng smartphone vì một số hàm trong OpenGL gốc không còn thích hợp với cấu hình phần cứng của các dòng smartphone. OpenGL ES2.0 là phiên bản 2.0 của OpenGL ES. Được cải tiến so hơn so với phiên bản trước là OpenGL ES1.0 và OpenGL ES1.1. Smartphone hiện đang là xu thế công nghệ hiện nay về tính tiện dụng. Vì vậy việc phát triển đồ họa trên smartphone là rất cần thiết. Nói tới đây chúng ta cũng dễ hiểu được tầm quan trọng của OpenGL ES trong công nghiệp đồ họa hiện nay. Các vấn đề hiện đại CNPM – OpenGL ES 2.0 5 II.PHÂN TÍCH ĐỀ TÀI Phần 1 - Các khái niệm cơ bản của thế giới 3D và OpenGL OpenGL có nghĩa là mở cửa thư viện đồ họa và nó được sử dụng rất nhiều hiện nay trong ngôn ngữ máy tính. OpenGL là điểm gần nhất giữa CPU (mà các nhà phát triển chạy các ứng dụng dựa trên một ngôn ngữ) và GPU (bộ xử lý đồ họa của tồn tại trong tất cả các card đồ họa). Vì vậy, OpenGL cần phải được hỗ trợ bởi các nhà cung cấp của card đồ họa (như NVIDIA) và được thực hiện bởi các nhà cung cấp của hệ điều hành (như Apple trong hệ điều hành MacOS và iOS) và cuối cùng là cung cấp cho OpenGL, các nhà phát triển, một API thống nhất để làm việc. API này là "ngôn ngữ miễn phí" (hoặc gần như miễn phí). Điều này là tuyệt vời, bởi vì nếu bạn sử dụng C, C++, hoặc Objective-C, hoặc Perl, hoặc C #, hoặc JavaScript, bất cứ nơi nào sử dụng, API sẽ luôn luôn được hỗ trợ tương đương, sẽ trình bày các hành vi tương tự, các chức năng tương tự, với cùng lệnh! Để đối phó với API OpenGL của các nhà phát triển. Trước khi bắt đầu nói về OpenGL API tôi xin trình bày một chút kiến thức về thế giới 3D, lịch sử 3D. Khoảng 20 năm trước có 1 người tên là Silicon Graphics (SGI) đã làm 1 loạt các thiết bị. Các thiết bị đó có thể thể hiện 1 ảnh ảo của thực tế trong thế giới hình ảnh 2D. Thiết bị này còn thể hiện hình ảnh 3D, mô phỏng các nhìn và chiều sâu của mắt người. Thiết bị này gọi là IrisGL (Có lẽ thiết bị này bởi vì nó sẽ cố gắng để mô phỏng mống mắt của mắt). Vâng thiết bị trên là thư viện đồ họa vĩ đại đầu tiên. Nhưng nó biến mất rất nhanh, bởi vì để thực hiện những gì mà nó làm thì cần phải điều khiển nhiều thứ trong CPU như card đồ họa, hệ thống Windows, ngôn ngữ Nó là quá nhiều để 1 công ty quản lý. Vì vậy SGI để lại một số thứ như "Tạo ra card đồ họa", "Quản lý windows." cho các công ty khác và SGI tập chung vào phần quan trọng nhất của thư viện đồ họa. Trong năm 1992 khởi chạy lần đầu tiên. Các vấn đề hiện đại CNPM – OpenGL ES 2.0 6 Trong năm 1995 Microsoft phát hành Direct3D, đối thủ cạnh tranh của OpenGL. Và năm 1997 Opengl 1.1 ra đời. Nhưng thực sự thú vì là năm 2004 với sự ra đời của OpengL 2.0 với nhiều thay đổi lớn, Shaders, Programable Pipeline. Vào năm 2007 chúng ta gặp được Opengl es2.0 nó mang đến cho chúng ta sức mạnh thực sự của Shaders, Programable pipeline và hệ thống nhúng (Embedded Systems). Chúng ta có thể nhìn thấy logo của OpenGL (hoặc OpenGL ES) trong nhiều trò chơi, các ứng dụng 3D, các ứng dụng 2D và rất nhiều phần mềm đồ họa (đặc biệt trong các phần mềm 3D). OpenGL ES được sử dụng bởi PlayStation, Android, Nintendo 3DS, Nokia, Samsung, Symbian và dĩ nhiên bởi Apple với hệ điều hành MacOS và iOS. 1. Đối thủ lớn nhất của OpenGL Opengl ra đời 1992, tại thời điểm đó Microsoft (MS) có window 3.1. MS tin rằng không có gì được tạo ra, mọi thứ được sao chép. MS cố gắng sao chép tất cả của Opengl và họ có Direct3D và giới thiệt nó vào năm 1995 trên Windows 95. Một năm sau đó 1996. MS giới thiệu Direct3D là 1 bản sao đen của Opengl, ưu điểm lại là MS thống trị thị trường thông tin trong nhiều năm liền, và Direct3D đã có được lợi thế và nó lây lan như là bệnh dịch của máy tính. và sau đố MS cung cấp các hệ điều hành cho Mobile và các trò chơi, tất nhiên là đi cùng với Direct3D. Ngày nay Direct3D tương tự như Opengl. Có HLSL, cũng có programable pipeline, và fixed pipeline, và thậm chí các tên Hàm cũng tương tự. Nhưng sự khác biệt rất lớn là OpengL là mã nguồn mở, còn Direct3D thì không. Opengl dành cho mọi hệ điều hành, trong khi Direct chỉ WinDows. 2. OpenGL làm việc như thế nào? Sâu vào cốt lõi của OpenGL các tính toán được thực hiện trực tiếp trong các GPU sử dụng tăng tốc phần cứng đến các điểm nổi. CPU (Central Processing Unit) là bộ xử lý của một máy tính hoặc thiết bị. GPU (Graphics Processing Unit) là card đồ họa của một máy tính hoặc thiết bị. Card đồ họa đi kèm để giảm bớt cuộc sống của bộ xử lý vì nó có thể làm cho rất nhiều tính toán để đối phó với hình ảnh trước khi mặt nội dung ra màn hình. Các vấn đề hiện đại CNPM – OpenGL ES 2.0 7 Vì vậy, trong sâu thẳm, những gì OpenGL làm là để cho tất cả các tính toán khối lượng cho GPU, thay vì để tính toán tất cả trong CPU. GPU nhanh hơn nhiều để đối phó với số point nổi hơn CPU. Đây là lý do cơ bản để một trò chơi 3D chạy nhanh hơn với card đồ họa tốt hơn. Điều này thậm chí còn có lý do vì phần mềm chuyên nghiệp 3D cung cấp cho bạn một tùy chọn để làm việc với "phần mềm của Render" (xử lý CPU) hoặc "Card đồ họa của Render" (xử lý của CPU). Một số phần mềm cũng cung cấp một tùy chọn "OpenGL". Lựa chọn đó là xử lý của GPU! Nhưng OpenGL không hoàn toàn làm việc trong GPU Chỉ cần một xử lý hình ảnh cứng và vài thứ khác. OpenGL cho chúng ta rất nhiều tính năng để lưu trữ hình ảnh, dữ liệu và thông tin trong một định dạng được tối ưu hóa. Những dữ liệu được tối ưu hóa sẽ được xử lý sau trực tiếp bởi GPU. Nếu phần cứng (card đồ họa) không hỗ trợ OpenGL, chúng ta không thể sử dụng nó. Phiên bản mới OpenGL thường cần các tính năng GPU mới. Trong thực tế, tất cả các chip card đồ họa ngày nay có thực hiện với OpenGL. Vì vậy, bạn có thể sử dụng OpenGL trong nhiều ngôn ngữ và các thiết bị. Ngay cả trong Microsoft Windows. 3. Logic của OpenGL OpenGL là một thư viện đồ họa rất ngắn gọn và tập trung. Logic OpenGL gồm:  Primitives  Buffers  Rasterize 3.1 Primitives Primitives của OpenGL được giới hạn trong 3 loại đối tượng:  Về một điểm trong không gian 3D (x, y, z)  Về Dòng 3D trong không gian (tạo bởi hai điểm 3D)  Về một Tam giác 3D trong không gian (tạo bởi ba điểm 3D) Một điểm 3D có thể được sử dụng như một hạt trong không gian. Một dòng 3D luôn luôn là một dòng đơn và có thể được sử dụng như một vector 3D. Một Tam giác 3D có thể là một khuôn mặt của một lưới trong đó có hàng ngàn, có lẽ hàng triệu mặt. Một số phiên bản OpenGL cũng hỗ trợ Quads (tứ). Nhưng như OpenGL ES đã được thực hiện để đạt được hiệu suất tối đa, Quads không được hỗ trợ, tất cả được quy về tam giác. Các vấn đề hiện đại CNPM – OpenGL ES 2.0 8 3.2 Bộ đệm (Buffers) Bây giờ hãy nói về bộ đệm. Nói cách đơn giản, bộ đệm là một tối ưu hóa lưu trữ tạm thời đối với rất nhiều chất liệu OpenGL làm việc với 3 loại bộ đệm:  Khung đệm  Làm đệm  Đệm đối tượng Khung đệm là trừu tượng nhất của ba yếu tố. Khi bạn thực hiện một của OpenGL làm cho bạn có thể gửi hình ảnh cuối cùng trực tiếp đến màn hình của thiết bị hoặc đến một khung đệm. OpenGL vẽ lại các hình ảnh về các đối tượng 3D, về độ sâu của các đối tượng trong không gian, giao điểm của các đối tượng và về phần nhìn thấy được của các đối tượng. Vì vậy, khung đệm giống như một bộ sưu tập các hình ảnh. Tất cả các lưu trữ như là một mảng nhị phân của thông tin của điểm ảnh. Làm đệm là một lưu trữ tạm thời của một hình ảnh duy nhất. Có thể thấy rõ hơn rằng một khung đệm là một bộ sưu tập của Render đệm. Tồn tại vài loại Render đệm: Màu sắc, độ sâu và Stencil. Đệm đối tượng (Object Buffers) là một lưu trữ mà OpenGL gọi là "server- side" (hoặc không gian địa chỉ của máy chủ). Các đệm đối tượng cũng là một lưu trữ tạm thời, nhưng không vì thế tạm thời như những người khác. Một đối tượng đệm có thể kéo dài suốt việc thực hiện ứng dụng. Đệm đối tượng có thể chứa thông tin về các đối tượng 3D của bạn trong một định dạng được tối ưu hóa. Những thông tin có thể được của hai loại: cấu trúc hoặc chỉ số. Cấu trúc là mảng mô tả đối tượng 3D của bạn, giống như một mảng của đỉnh, một loạt các tọa độ kết cấu hoặc một mảng của bất cứ điều gì bạn muốn. Các chỉ số có nhiều chi tiết cụ thể. Mảng của các chỉ số được sử dụng để cho biết bao khuôn mặt của lưới của bạn sẽ được xây dựng dựa trên một mảng của cấu trúc. 3.3 Rasterize Các rasterize là quá trình mà OpenGL có tất cả các thông tin về các đối tượng 3D (tất cả những tọa độ, đỉnh, toán học, ) để tạo ra một hình ảnh 2D. Hình ảnh này sẽ bị một số thay đổi và sau đó nó sẽ được trình bày trên màn hình của thiết bị (thường). Nhưng bước cuối cùng này, là cầu nối giữa thông tin pixel và màn hình của thiết bị, đó là trách nhiệm của nhà cung cấp. Các vấn đề hiện đại CNPM – OpenGL ES 2.0 9 4. Đường ống dẫn của OpenGL Các đường ống dẫn lập trình là thư viện đồ họa ủy thác cho các nhà phát triển, trách nhiệm của tất cả mọi thứ liên quan đến máy ảnh, ánh sáng, vật liệu và các hiệu ứng. Và có thể làm việc với Shaders. Vì vậy, mỗi khi bạn nghe về "đường ống dẫn lập trình" thì nghĩ tới Shaders! Shaders là những mảnh nhỏ của mã, giống như các chương trình nhỏ, làm việc trực tiếp trong các GPU để thực hiện tính toán phức tạp. Điều này có nghĩa bất cứ điều gì, nó rất phức tạp được xử lý bởi CPU và quá nhiều phức tạp để thư viện đồ họa tiếp tục quan tâm. Vì vậy, các đường ống dẫn lập trình chỉ là chúng ta quản lý các làm việc của GPU. Đường ống cố định là thư viện đồ họa quan tâm đến tất cả các loại của sự vật và đưa cho chúng tôi một API để thiết lập Máy ảnh, vật liệu, ánh sáng và các hiệu ứng. Để tạo các bóng đổ, có thể sử dụng một ngôn ngữ tương tự như C, sử dụng OpenGL ngôn ngữ Shader (GLSL). OpenGL ES sử dụng một phiên bản ít nghiêm ngặt hơn được gọi là OpenGL ES Shader Ngôn ngữ (còn gọi là GLSL ES hoặc Essl). Sự khác biệt là bạn có nhiều chức năng cố định và có thể viết các biến hơn trong GLSL hơn trong GLSL ES, nhưng sintax là như nhau. Các shaders làm việc theo cặp: Vertex Shader và Fragment Shader. Đường ống dẫn lập trình OpenGL của sử dụng một Shader Vertex và một Fragment Shader. 4.1 Vertex Shader Vertex Shader, còn được gọi là VS hay VSH là một chương trình nhỏ mà sẽ được thực hiện tại mỗi Vertex của một lưới. Những gì Vertex Shader sẽ làm là xác định vị trí cuối cùng của một Vertex. Vị trí và ống kính của một máy ảnh có thể can thiệp vào vị trí cuối cùng của một đỉnh. Vertex Shader cũng chịu trách nhiệm chuẩn bị và đầu ra một số biến vào Fragment Shader. Trong OpenGL chúng ta có thể định nghĩa biến cho Vertex Shader, nhưng chưa tính đến Fragment Shader. Bởi vì đó, các biến Fragment phải đi qua Vertex Shader. 4.2 Fragment Shader Bên trong Fragment Shader làm việc với tất cả mọi thứ liên quan đến "bề mặt lưới, như nguyên vật liệu, hiệu ứng, bóng và hiệu ứng ánh sáng, phản xạ, khúc xạ, [...]... vấn đề hiện đại CNPM – OpenGL ES 2.0 kết cấu và các loại khác của hiệu ứng Kết quả cuối cùng để các Fragment Shader là một màu của điểm ảnh trong các định dạng RGBA Về cách VSH và FSH làm việc với nhau Nó bắt buộc một Vertex Shader để làm việc với một Fragment Shader, không nhiều thì ít, phải được chính xác 1-1 Phần 2: Đi xâu vào OpenGL ES 2.0 1 Các kiểu dữ liệu OpenGL và đường ống dẫn lập trình OpenGL. .. OpenGL của bạn từ C ++ JavaScript với những thay đổi ít hơn Đây là một minh họa trực quan về các đường ống dẫn trong OpenGL: 11 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 OpenGL đường ống dẫn lập trình 2 Primitives Khi nói rằng Primitives tức là nhắc tới điểm, đường và tam giác Tất cả đều sử dụng một hoặc nhiều điểm trong không gian được xây dựng, còn được gọi là đỉnh Một đỉnh có 3 thông tin, vị trí... OpenGL thứ tự này là lộn ngược Các kết cấu trong OpenGL đọc các điểm ảnh bắt đầu từ góc dưới bên trái và đi vào góc trên bên phải OpenGL đọc các điểm ảnh từ góc dưới bên trái vào góc trên bên phải 20 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 Dữ liệu hình ảnh phải được lộn theo chiều dọc để phù hợp với quyền vào OpenGL Bây giờ, về logic, các kết cấu trong OpenGL làm việc tại theo cách này: có một tập tin... trình Rasterize 5.1 Face Culling (Tiêu hủy) OpenGL làm việc với các phương pháp để tìm và loại bỏ những mặt không nhìn thấy được Dựa trên thứ tự của đỉnh OpenGL có thể xác định đó là mặt trước 24 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 và mặt sau lưới của bạn (chính xác hơn, nó tính toán trước và mặt sau của mỗi tam giác) và sử dụng chọn lọc bạn có thể hướng dẫn OpenGL để bỏ qua một trong những bên ( hoặc... loại trừ cả hai bên, thậm chí hiểu biết mà điều này sẽ sản xuất không làm  25 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 cho tôi vẫn đang cố gắng tìm ra lý do ngớ ngẩn của thiết lập này cho đến khi hôm nay) GLvoid glFrontFace (chế độ GLenum) mode : Chỉ ra bao OpenGL sẽ xác định các mặt trước (và rõ ràng cũng là mặt sau) Tham số này có thể là: o GL_CCW : Điều này sẽ hướng dẫn OpenGL để điều trị các tam... gl_FrontFacing mediump vec4 gl_FragCoord mediump vec2 gl_PointCoord 6.4 Setting the Attributes and Uniforms Để thiết lập một Uniforms, OpenGL chỉ có một cách: sau khi liên kết, lấy một vị trí để thống nhất mong muốn dựa vào tên của nó trong shader Để thiết lập các 33 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 Attributes, OpenGL có hai cách: có thể lấy lại vị trí sau khi chương trình được liên kết hoặc có thể... xử lý nội bộ OpenGL trong GPU Một điều quan trọng cần biết về kết cấu trong OpenGL là để đọc pixel Thường các định dạng tập tin ảnh lưu trữ các thông tin điểm ảnh bắt đầu từ góc trên bên trái và di chuyển qua từng dòng để góc dưới bên phải Định dạng tập tin như JPG, PNG, BMP, GIF, TIFF và để những người khác sử dụng điểm ảnh này Nhưng 19 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 trong OpenGL thứ tự... rất giống với những người khác trên: Tạo ra một đối tượng kết 22 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 cấu, kết cấu Ràng buộc này và thiết lập thuộc tính của nó Dưới đây là các chức năng: GLvoid glGenTextures (GLsizei n, GLuint * textures) n : Số lượng đại diện cho bao nhiêu tên / id kết cấu 'sẽ được tạo ra cùng một lúc  textures : Một con trỏ tới một biến để lưu trữ các tạo ra tên / id Nếu có nhiều... của hình ảnh theo pixel  Border : Thông số này được bỏ qua trong OpenGL ES Luôn luôn sử dụng giá trị 0 Đây chỉ là một liên tục nội bộ để bảo tồn compatibly  23 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 với các phiên bản máy tính để bàn  format : Các định dạng phải có cùng giá trị của internalformat Một lần nữa, đây chỉ là một ước OpenGL nội bộ  type : Đây đại diện cho các định dạng dữ liệu của... framebuffer)  target: Mục tiêu sẽ luôn luôn được GL_FRAMEBUFFER, đây chỉ là một ước nội bộ cho OpenGL  framebuffers : Tên / id của bộ đệm khung hình bị ràng buộc  14 Các vấn đề hiện đại CNPM – OpenGL ES 2.0 3.2 Làm đệm (Render Buffers) Render Buffers là một lưu trữ tạm thời cho hình ảnh đến từ một của OpenGL render Đây là cặp chức năng liên quan để làm cho bộ đệm: GLvoid glGenRenderbuffers (GLsizei . { 0. 50, -0. 50, -0. 50, / / đỉnh 1 0. 00, 0.33, / / kết cấu phối hợp 1 1 .00 ,0. 00, 0 .00 / / bình thường 1 0. 50, -0. 50, 0. 50, / / đỉnh 2 0. 33 ,0. 66, / / kết cấu phối hợp 2 0. 00, 1 .00 ,0. 00 /. -0. 50, -0. 50, -0. 50, / / đỉnh 4 0. 50, 0. 50, -0. 50, / / đỉnh 5 -0. 50, 0. 50, -0. 50, / / đỉnh 6 0. 50, 0. 50, 0. 50, / / đỉnh 7 Các vấn đề hiện đại CNPM – OpenGL ES 2. 0 14 11 12 -0. 50, 0. 50, 0. 50. {1 .0, 0 .0, 0.5}; Các vấn đề hiện đại CNPM – OpenGL ES 2. 0 13 2 3 GLfloat line3D = {} 0. 5 ,0. 5 ,0. 5,1 .0, 1 .0, 1 .0; GLfloat triangle3D = {} 0. 0 ,0. 0 ,0. 0 ,0. 5,1 .0, 0 .0, 1 .0, 0 .0, 0 .0; Các mảng float để OpenGL theo

Ngày đăng: 12/04/2015, 14:13

Tài liệu cùng người dùng

Tài liệu liên quan