Tải bản đầy đủ (.pdf) (74 trang)

Nghiên cứu lập trình đồ họa và xây dựng game 3d cho mobile

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.51 MB, 74 trang )

TRƢỜNG ĐẠI HỌC SƢ PHẠM ĐÀ NẴNG
KHOA TIN HỌC


LUẬN VĂN TỐT NGHIỆP
CỬ NHÂN CƠNG NGHỆ THƠNG TIN
KHĨA 2009

NGHIÊN CỨU LẬP TRÌNH ĐỒ HỌA VÀ
XÂY DỰNG GAME 3D CHO MOBILE

Giáo viên hƣớng dẫn : Th.S TRẦN UYÊN TRANG
Sinh viên thực hiện : TRẦN ĐỨC HUY

ĐÀ NẴNG
THÁNG 5 NĂM 2013
1


NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................


.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................

Đà Nẵng, ngày …… tháng …… năm 201…
Giáo viên hƣớng dẫn

2


NHẬN XÉT CỦA HỘI ĐỒNG XÉT DUYỆT
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................

.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................
.....................................................................................................................................................................

Đà Nẵng, ngày …… tháng …… năm 201…
Hội đồng xét duyệt

3


Mục lục
NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN ............................................................................... 2
NHẬN XÉT CỦA HỘI ĐỒNG XÉT DUYỆT .................................................................................. 3
MỞ ĐẦU............................................................................................................................................ 6
Chƣơng 1: CƠ SỞ LÝ THUYẾT ....................................................................................................... 7
1.

Khái niệm đồ họa máy tính ................................................................................................. 7

2.

Sự phát triển của đồ họa di động ........................................................................................ 9

3.


Khái niệm cơ bản về 3D ..................................................................................................... 12
3.1.

Hệ tọa độ 3 chiều ........................................................................................................ 12

3.2.

Vertex (đỉnh) ............................................................................................................... 15

3.3.

Edge (cạnh) ................................................................................................................. 15

3.4.

Triangle & Quad (Tam giác và các hình đa giác) ................................................... 16

3.5.

Normal Vector (Vector pháp tuyến) ......................................................................... 16

3.6.

Pixel ............................................................................................................................. 17

3.7.

Texture & Texel.......................................................................................................... 17


3.8.

Fragment ..................................................................................................................... 17

3.9.

Phép chiếu song song và phép chiếu phối cảnh ....................................................... 18
Các kênh màu (Color channel) ............................................................................. 19

3.10.
4.

Các thƣ viện đồ họa DirectX, OpenGL và OpenGL ES 2 .............................................. 20

5.

Rendering Pipeline (quy trình trình chiếu hình ảnh) ..................................................... 30

6.

Shader ................................................................................................................................. 33

7.

Các khái niệm toán học 3D cơ bản ................................................................................... 35

8.

Ma trận MVP ..................................................................................................................... 40


9.

Texture ................................................................................................................................ 43

10.

Mô hình đối tƣợng (Model) ........................................................................................... 44

11.

Ngơn ngữ GLSL ............................................................................................................. 45

12.

Cấu trúc của một trò chơi (game) ................................................................................. 48

13.

Giới thiệu về Game Engine............................................................................................ 49

Chƣơng 2: PHÂN TÍCH VÀ XÂY DỰNG ĐỀ TÀI ....................................................................... 51
1.

Giới thiệu đề tài và nội dung game ................................................................................... 51

2.

Các thành phần gồm có trong game ................................................................................. 53

3.


Thiết kế các lớp đối tƣợng ................................................................................................. 55

4.

Chuyển game trên máy tính sang điện thoại ................................................................... 65

5.

Một vài hình ảnh demo game ............................................................................................ 69
4


KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ....................................................................................... 73
TÀI LIỆU THAM KHẢO................................................................................................................ 74

5


MỞ ĐẦU
Ngày nay, sự phát triển bùng nổ của các thiết bị di động đã có tác động khơng nhỏ
tới đời sống chúng ta. Có thể dễ dàng nhận thấy, các thiết bị số di động nhƣ
Smartphone (iPhone, Android,…), tablet (iPad, iPad mini, các loại máy tính bảng
khác,…) dần trở thành vật bất ly thân đối với mỗi ngƣời, chúng ta sử dụng chúng
hầu nhƣ khắp mọi nơi, và mọi lúc, khi đi học, tại công sở, khi đi chơi với bạn bè, ở
nhà,…
Chính vì sự phổ biến này, kèm theo sự phát triển vƣợt bậc về công nghệ phần cứng
lẫn phần mềm của các thiết bị di động đã biến những chiếc điện thoại chỉ có màn
hình trắng đen, nghe gọi nhắn tin ngày xƣa trở thành nhƣng cỗ máy mạnh mẽ với
cấu hình mạnh, hệ điều hành đa nhiệm, đa tác vụ, kết nối internet thƣờng trực 24/24

với các công nghệ 3G, wifi.
Nhờ vậy mà nhu cầu giải trí trên các thiết bị cũng ngày một tăng, đồng thời với sự
cạnh tranh của các hãng sản xuất thiết bị di động đã cung cấp cho giới lập trình rất
nhiều công cụ để hỗ trợ phát triển các sản phẩm cơng nghệ, giải trí trên các thiết bị
di động, rất nhiều chợ ứng dụng đƣợc đầu tƣ phát triển để đảm bảo đầu ra cho các
sản phẩm ứng dụng di động, giúp các lập trình viên dễ dàng kiếm đƣợc tiền từ
những sản phẩm của mình và dễ dàng đƣa sản phẩm của mình ra đến thị trƣờng
quốc tế một cách nhanh chóng, mà khơng cần phải lo nghĩ nhiều cho việc quảng bá
sản phẩm hay đau đầu các chiến lƣợc kinh doanh phức tạp.
Để nắm bắt xu thế công nghệ thế giới và tận dụng cơ hội lớn này, em cảm thấy cần
thiết phải nghiên cứu sâu vào lĩnh vực phát triển ứng dụng di động đầy hấp dẫn này,
vì thế nên em chọn đề tài Nghiên cứu lập trình đồ họa và xây dựng Game 3D
cho mobile với mục tiêu là có đƣợc cái nhìn tồn diện và hiểu rõ đƣợc thế nào là
lập trình đồ họa, game, các cơng nghệ đằng sau đó, và làm sao để xây dựng cho
mình một bộ cơng cụ mà từ đó có thể sử dụng để xây dựng bất cứ một game nào tùy
thích cho các thiết bị di động (iPhone, iPad, Android phone,…) và ứng dụng những
kiến thức này xây dựng một game 3D đơn giản lấy đề tài biển đảo Việt Nam với tên
gọi: Game Bảo vệ Hoàng Sa Trƣờng Sa.

6


Chƣơng 1: CƠ SỞ LÝ THUYẾT
1. Khái niệm đồ họa máy tính
Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về cơ sở tốn
học, các thuật toán cũng nhƣ các kĩ thuật để cho phép tạo, hiển thị và điều khiển
hình ảnh trên màn hình máy tính. Đồ họa máy tính có liên quan ít nhiều đến một số
lĩnh vực nhƣ đại số, hình học giải tích, hình học họa hình, quang học,... và kĩ thuật
máy tính, đặc biệt là chế tạo phần cứng (các loại màn hình, các thiết bị xuất, nhập,
các vỉ mạch đồ họa...).

Theo nghĩa rộng hơn, đồ họa máy tính là phƣơng pháp và công nghệ dùng trong
việc chuyển đổi qua lại giữa dữ liệu và hình ảnh trên màn hình bằng máy tính. Đồ
họa máy tính hay kĩ thuật đồ họa máy tính cịn đƣợc hiểu dƣới dạng phƣơng pháp
và kĩ thuật tạo hình ảnh từ các mơ hình tốn học mơ tả các đối tƣợng hay dữ liệu lấy
đƣợc từ các đối tƣợng trong thực tế. Thuật ngữ "đồ họa máy tính" (computer
graphics) đƣợc đề xuất bởi một chuyên gia ngƣời Mĩ tên là William Fetter vào năm
1960. Khi đó ơng đang nghiên cứu xây dựng mơ hình buồng lái máy bay cho hãng
Boeing. William Fetter đã dựa trên các hình ảnh 3 chiều của mơ hình ngƣời phi
cơng trong buồng lái để xây dựng nên mơ hình buồng lái tối ƣu cho máy bay
Boeing. Đây là phƣơng pháp nghiên cứu rất mới vào thời kì đó. Phƣơng pháp này
cho phép các nhà thiết kế quan sát một cách trực quan vị trí của ngƣời lái trong
khoang buồng lái. William Fetter đã đặt tên cho phƣơng pháp của mình là computer
graphics...
Lịch sử của đồ họa máy tính vào thập niên 1960 còn đƣợc đánh dấu bởi dự án
SketchPad đƣợc phát triển tại Học viện Công nghệ Massachusetts (MIT) bởi Ivan
Sutherland. Các thành tựu thu đƣợc đã đƣợc báo cáo tại hội nghị Fall Joint
Computer và đây cũng chính là sự kiện lần đầu tiên ngƣời ta có thể tạo mới, hiển thị
và thay đổi đƣợc dữ liệu hình ảnh trực tiếp trên màn hình máy tính trong thời gian
thực. Hệ thống Sketchpad này đƣợc dùng để thiết kế hệ thống mạch điện và bao
gồm những thành phần sau:
 Màn hình CRT
 Bút sáng và một bàn phím bao gồm các phím chức năng
 Máy tính chứa chƣơng trình xử lí các thơng tin
Với hệ thống này, ngƣời sử dụng có thể vẽ trực tiếp các sơ đồ mạch điện lên màn
hình thơng qua bút sáng, chƣơng trình sẽ phân tích và tính tốn các thơng số cần
thiết của mạch điện do ngƣời dùng vẽ nên.
Kỹ thuật đồ họa đƣợc liên tục hoàn thiện vào thập niên 1970 với sự xuất hiện của
các chuẩn đồ họa làm tăng cƣờng khả năng giao tiếp và tái sử dụng của phần mềm
cũng nhƣ các thƣ viện đồ họa.
7



Sự phát triển vƣợt bậc của công nghệ vi điện tử và phần cứng máy tính vào thập
niên 1980 làm xuất hiện hàng loạt các vỉ mạch hỗ trợ cho việc truy xuất đồ họa đi
cùng với sự giảm giá đáng kể của máy tính cá nhân làm đồ họa ngày càng đi sâu
vào cuộc sống thực tế.
Đồ họa máy tính có rất nhiều ứng dụng trong máy tính vì ƣớc tính đến 80% thơng
tin xử lí là hình ảnh. Một số ứng dụng tiêu biểu của đồ họa máy tính nhƣ là:





Tạo mơ hình, hoạt cảnh (game, giải trí,...)
Hỗ trợ thiết kế đồ họa
Mơ phỏng hình ảnh, chuẩn đốn hình ảnh (trong y tế)
Huấn luyện đào tạo ảo (quân sự, hành không,...)

8


2. Sự phát triển của đồ họa di động
Ngày nay, với sự phát triển của các thiết bị di động, sức mạnh đồ họa của các ứng
dụng trên di động ngày một phát triển.
Ngay từ thời kì đầu tiên, khi mà các thiết bị di động còn sử dụng màn hình trắng
đen thì các ứng dụng đồ họa cho điện thoại cũng đã bắt đầu đƣợc đầu tƣ phát triển,
từ mục đích ban đầu là tạo ra các trị chơi giải trí đơn giản nhƣ Snake trên các máy
di động của Nokia.
Dần dần về sau, khi công nghệ thay đổi, chất lƣợng màn hình điện thoại ngày một
cải tiến, lĩnh vực đồ họa di động lại trỗi dậy với các ứng dụng game có chất lƣợng

cao hơn, bên cạnh đó đồ họa cũng góp phần đem lại sự bóng bẩy, hiện đại cho các
sản phẩm di động hơn.

Game di động vào thời kì màn hình trắng đen năm 1998

Các game 2D J2ME vào thời kì năm 2004

9


Vào năm 2005, game 3D bắt đầu xuất hiện mặc dù chất lƣợng không cao

Năm 2007, game di động vẫn chƣa có sự đột phá ngồi việc độ phân giải màn hình
đƣợc tăng cao hơn giúp hiển thị hình ảnh chi tiết hơn.

Năm 2008, iPhone bắt đầu xuất hiện, kéo theo đó là sức mạnh về đồ họa đƣợc nâng
cao, chất lƣợng màn hình cảm ứng đột phá đem lại sự thay đổi rõ rệt cho bộ mặt nền
game di động.
10


Angry Birds, sản phẩm đầu tiên trên thế giới mở màn cho kỉ nguyên mới trong kinh
doanh ứng dụng di động. Rovio – hãng sản xuất Angry Birds là một minh chứng
cho việc một công ty nhỏ đƣợc thành lập chỉ từ 2 đến 3 ngƣời có thể nhanh chóng
kiếm đƣợc hàng triệu đô la và trở thành một tập đồn lớn chỉ sau một đêm. Mở ra
một thời kì ngƣời ngƣời, nhà nhà ôm giấc mơ triệu phú từ kinh doanh ứng dụng di
động.

Sức mạnh đồ họa của các thiết bị đi dộng ngày càng đƣợc cải thiện, và vào năm
2011, Infinity Blade 2 là một trong số rất nhiều game mang chất lƣợng đồ họa của

các game trên máy tính đến điện thoại di động.

11


3. Khái niệm cơ bản về 3D
Để bắt đầu tìm hiểu về lập trình 3D trên máy tính lẫn trên thiết bị đi động, chúng ta
cần nắm rõ các khái niệm đồ họa cơ bản trong lập trình 3D, đây là những kiến thức
nền tảng để có thể tiếp thu đƣợc những kiến thức chuyên môn về sau.
3.1. Hệ tọa độ 3 chiều
Một Hệ tọa độ Descartes xác định vị trí của một điểm (point) trên một mặt phẳng
(plane) cho trƣớc bằng một cặp số tọa độ (x, y). Trong đó, x và y là 2 giá trị đƣợc
xác định bởi 2 đƣờng thẳng có hƣớng vng góc với nhau (cùng đơn vị đo). 2
đƣờng thẳng đó gọi là trục tọa độ (coordinate axis) (hoặc đơn giản là trục); trục
nằm ngang gọi là trục hoành, trục đứng gọi là trục tung; điểm giao nhau của 2
đƣờng gọi là gốc tọa độ (origin) và nó có giá trị là (0, 0).
Hệ tọa độ này là ý tƣởng của nhà toán học và triết học ngƣời Pháp René
Descartes thể hiện vào năm 1637 trong hai bài viết của ông. Trong phần hai của
bài Phƣơng pháp luận (Descartes) (tiếng Pháp: Discours de la méthode, tựa Pour
bien conduire sa raison, et chercher la vérité dans les sciences), ông đã giới thiệu
ý tƣởng mới về việc xác định vị trí của một điểm hay vật thể trên một bề mặt
bằng cách dùng hai trục giao nhau để đo. Cịn trong bài La Géométrie, ơng phát
triển sâu hơn khái niệm trên.
Descartes là ngƣời đã có cơng hợp nhất đại số và hình học Euclide. Cơng trình
này của ơng có ảnh hƣởng đến sự phát triển của ngành hình học giải tích, tích
phân, và khoa học bản đồ.
Ngồi ra, ý tƣởng về hệ tọa độ có thể đƣợc mở rộng ra không gian ba chiều
(three-dimensional space) bằng cách sử dụng 3 tọa độ Descartes (nói cách khác
là thêm một trục tọa độ vào một hệ tọa độ Descartes). Một cách tổng quát, một hệ
tọa độ n-chiều có thể đƣợc xây dựng bằng cách sử dụng n tọa độ Descartes

(tƣơng đƣơng với n-trục).

12


Hệ tọa độ trên mặt phẳng 2 chiều (2D)
Là 2 trục vng góc x'Ox và y'Oy mà trên đó đã chọn 2 vectơ đơn vị i, j sao cho
độ dài của 2 véc-tơ này bằng nhau.

Hệ tọa độ trên không gian 3 chiều (3D)
Là 3 trục vng góc nhau từng đơi một x'Ox, y'Oy, z'Oz mà trên đó đã chọn 3
véc-tơ đơn vị i, j, k sao cho độ dài của 3 véc-tơ này bằng nhau.

Trong đồ họa máy tính và di động, tồn tại 2 loại hệ tọa độ không gian 3 chiều. Hệ
tọa độ tay phải và tay trái. Hệ tọa độ tay phải (right handed coordinate system)
đƣợc sử dụng trong OpenGL và hệ tọa độ tay trái (left handed coordinate system)
đƣợc sử dụng trong DirectX.

13


Hệ tọa độ 3 chiều trong OpenGL
Trong OpenGL thì một điểm trong không gian 3D đƣợc đặt trong một vùng có
giới hạn giá trị tọa độ từ 0 đến 1 nhƣ trong hình bên dƣới, gọi là NDC (Normal
Device Coordination).

NDC đƣợc tổ chức theo hệ tọa độ tay trái và có giới hạn từ điểm (-1, -1, -1) đến
(1, 1, 1). Tâm O (0, 0, 0) nằm ở giữa NDC.
Tất cả những điểm nằm ngồi phạm vi NDC đều khơng đƣợc hiển thị hay xử lý.
Ví dụ:

Đây là một hình tam giác đƣợc đặt trong
NDC với tọa độ 3 đỉnh ABC lần lƣợt là:
A (1, -1, 0)

B (0, 1, 0)

C (-1, -1, 0)

Bất cứ một khối hình nào, có thể là một hình tam giác hoặc một đối tƣợng đƣợc
cấu thành từ nhiều tam giác khác nhau đều có một gốc xoay (pivot point).
Gốc xoay là điểm mà khi đối tƣợng xoay thì nó ln đứng n. Gốc xoay của hệ
không gian 3 chiều luôn là điểm (0, 0, 0).

14


Hình tam giác màu đen có gốc xoay đặt tại tâm của hình, trong khi đó hình tam
giác màu đỏ có gốc xoay là đỉnh A.
3.2. Vertex (đỉnh)
Trong đồ họa máy tính, một đỉnh (vertex) là một điểm trong khơng gian 3 chiều
lƣu giữ các thông tin liên quan đến đỉnh đó.
Các thơng tin đƣợc lƣu trữ trong một
vertex gồm có:





Tọa độ (x, y, z)
Màu sắc

Vị trí Texture


Các đỉnh là các biến số đƣợc tạo ra khi lập trình, và lƣu trữ trong RAM và trong
quá trình vẽ, các giá trị này sẽ đƣợc truyền từ RAM đến GPU. Quá trình truyền
tải này tốn tài nguyên rất nhiều, vì thế nên ln ln phải giữ kích thƣớc các
vertex là nhỏ nhất có thể.
3.3. Edge (cạnh)
Một cạnh là một đoạn thẳng nối liền 2 vertex với nhau.

15


3.4. Triangle & Quad (Tam giác và các hình đa giác)
Triangle
Triangle (tam giác) là một mặt phẳng đƣợc giới hạn
bởi 3 cạnh (edge) cấu thành từ 3 đỉnh (vertex).
Một triangle là một tam giác trong không gian 3
chiều. Và là hình cơ sở cho bất cứ đối tƣợng 3D nào
khác.
Polygon/Quad
Một hình đa giác (polygon) là một mặt phẳng đƣợc
giới hạn bởi nhiều cạnh (edge) tạo ra từ nhiều đỉnh
(vertex).
Một polygon có 4 cạnh tạo ra từ 4 đỉnh thì đƣợc gọi
là một Quad. Nhƣng thơng thƣờng, trong OpenGL
thì một Quad đƣợc cấu thành từ 2 tam giác (triangle),
có nghĩa là cần có 5 cạnh (4 đỉnh) tạo thành 2 tam
giác kề nhau để tạo ra 1 quad.
3.5. Normal Vector (Vector pháp tuyến)

Vector normal (vector pháp tuyến) của một mặt
phẳng là vector vng góc với bề mặt của mặt
phẳng đó.
Trong OpenGL, vector pháp tuyến thƣờng đƣợc
dùng để xác định hƣớng của một mặt phẳng và
tính tốn góc độ phản chiếu ánh sáng trong các kĩ
thuật chiếu sáng (lighting).
Thứ tự của các đỉnh trong một tam giác quyết định
hƣớng của vector normal của mặt phẳng đó.
Chỉ những mặt phẳng có vector normal hƣớng về
phía màn hình mới đƣợc hiển thị. Các mặt phẳng
có vector normal ngƣợc hƣớng màn hình đều bị ẩn
đi.

16


3.6. Pixel
Pixel là một điểm trên màn hình. Trong đồ họa máy tính, pixel là đơn vị cơ bản
cấu thành nên tất cả mọi thứ trên màn hình trong một mặt phẳng 2D.
Một pixel chứa 3 màu cơ bản là ĐỎ (RED), XANH LỤC (GREEN), XANH
DƢƠNG (BLUE).
Hệ màu RGB chính là hệ màu tổng hợp từ 3 đơn vị màu của 1 pixel.
3.7. Texture & Texel
Texture

Texture là một hình ảnh vật liệu đƣợc áp vào một mơ hình 3D để tạo nên vẻ
ngồi cho mơ hình đó.
Texel
Một texture đƣợc tổ chức thành một mảng 2 chiều gồm các pixel, mỗi một pixel

trên texture đƣợc gọi là 1 texel.
3.8. Fragment

17


Fragment là các mảnh pixel nằm trên một cạnh (edge) và bên trong một mặt
phẳng. Hình trên minh họa trình tự chuyển đổi từ 1 vertex sang fragment.
3.9. Phép chiếu song song và phép chiếu phối cảnh
Phép chiếu
Phép chiếu là phƣơng pháp thể hiện môi trƣờng 3D trong một mặt phẳng 2D
(chiếu lên màn hình). Có rất nhiều phép chiếu hình ảnh, và 2 trong số đó đƣợc
dùng nhiều nhất là phép chiếu song song và phép chiếu phối cảnh.

Phép chiếu song song
Phép chiếu song song (Parallel Projection) là
phép chiếu có điểm đặt mắt nhìn ở vơ cực,
chiếu các đƣờng thẳng thành các đƣờng song
song và không tạo ra hiệu ứng chiều sâu về
không gian.

Phép chiếu phối cảnh
Phép chiếu phối cảnh (Perspective projection) là
phép chiếu sử dụng các đƣờng thẳng đồng tâm,
thể hiện hình ảnh có sự thay đổi kích thƣớc to
nhỏ tùy theo vị trí gần hay xa mắt nhìn, vật càng
xa thì càng nhỏ, tạo ra cảm giác về độ sâu cho
hình ảnh.

18



3.10. Các kênh màu (Color channel)
Mỗi pixel là một tập hợp của 3 màu cơ bản, gọi là các kênh màu, gồm có: Red
(đỏ), Green (xanh lục), Blue (xanh dƣơng) và có thể có thêm kênh Alpha (kênh
diễn tả độ trong suốt của màu – có thể có hoặc khơng).
Mỗi một kênh màu mang một giá trị từ 0 đến 255, riêng trong OpenGL thì màu
sắc mang giá trị từ 0 đến 1.

Hình ảnh sự tổng hợp màu từ các kênh màu

19


4. Các thƣ viện đồ họa DirectX, OpenGL và OpenGL ES 2
DirectX
Công nghệ đồ hoạ phát triển nhanh một cách đặc biệt trong lĩnh vực công nghiệp
PC, bằng những Chipset mới, nâng cấp cải tiến Chipset, thậm trí xây dựng lại hồn
tồn cơng nghệ mới. Hiện nay một vấn đề là làm thế nào mà những ứng dụng lại sử
dụng đƣợc hết những phần cứng 3D mới nhất, những nhà phát triển đã viết những
mã lệnh để dùng đƣợc với mọi bộ vi xử lí đồ hoạ ( GPU).
Giải pháp đó là API (Application Programming Interface - Giao diện lập trình ứng
dụng). Những API hành động nhƣ là vai trị trung gian giữa phần mềm ứng dụng và
phần cứng khi nó đƣợc kích hoạt. Những nhà sản xuất phần mềm viết những mã
lệnh mà những đầu ra những dữ liệu đồ hoạ của nó tới API, hơn là trực tiếp tới phần
cứng. Những nhà sản xuất phần cứng viết Driver, sau đó dịch mã chuẩn này tới định
dạng mà mọi phần cứng đều hiểu đƣợc.
Đƣợc giới thiệu lần đầu tiên năm 1995, DirectX là tập lệnh tích hợp của những cơng
cụ lập trình để giúp những nhà phát triển thực hiện những ứng dụng Multimedia cho
nền tảng Windows. Nó bao trùm lên hầu hết tất cả những khía cạnh của nội dung

Multimedia trong thời gian đó.
DirectX 7.0 đƣợc giới thiệu lần đầu tiên vào năm 1999 gồm những thành phần
chính nhƣ sau:


Direct3D : dùng cho đồ hoạ 3D trong thời gian thực. Đồ hoạ 3D là hiển thị
những vật thể và những cảnh bằng những thông tin về chiều cao, độ rộng, độ
sâu.Những thơng tin đƣợc tính tốn trong hệ thống toạ độ đƣợc trình diễn
theo ba hƣớng qua trục : x, y, z.



DirectDraw : dùng để tăng tốc cho những đồ hoạ 2D.



DirectSound : dùng để thu phát âm thanh.



DirectPlay : dùng cho kết nối mạng ( đặc biệt dùng cho nhiều ngƣời chơi trên
mạng Internet).



DirectInput : dùng cho Joystick và những thiết bị liên quan.



DirectMusic : dùng cho dữ liệu âm nhạc dựa trên những tin nhắn.


DirectX 8.0 phát hành cuối năm 2000, đã kết hợp những thành phần hợp thành
DirectSound và DirectMusic để trở thành DirectAudio và tách những chức năng
cuối cùng của đồ hoạ 2D và 3D với Direct3D và DirectDraw để hợp thành DirectX

20


Graphic. Nó cũng lấy những thành phần của DirectShow, trƣớc kia thực hiện nhƣ là
API tách rời, trở thành một thành phần chính thức trong DirectX.
Trên thực tế, thành phần DirectDraw chủ yếu thực hiện giao diện Direct3D và
Direct3D API sẽ vẫn còn tiếp tục phát triển.
Tháng 1 năm 2003, DirectX 9.0 đƣợc phát hành, nó cải tiến nhiều việc có ý nghĩa
với API bao gồm:


Khả năng âm thanh mới trong DirectSound.



Tăng tốc phần cứng tái tạo Video trong DirectShow.



Cải tiến khả năng lập trình đồ hoạ mức thấp bằng kiểu lập trình với Vertex
Shader và Pixel Shader 2.0.

Phiên bản này của API rất nổi tiếng và đƣợc Microsoft giới thiệu với tên gọi HLSL
(High-Level Shader Language - Ngôn ngữ Shader mức cao).
Phiên bản 9.0 ban đầu của DirectX theo thời gian đƣợc nâng cấp và cải tiến để trở

thành 9.0a, b và c. Những phiên bản này sẽ cải thiện chế độ an ninh, hiệu suất làm
việc và sửa lỗi.
Hiện nay trong PC có hai giao diện API 3D đƣợc sử dụng đó là: OpenGL và
Direct3D và chúng đã thống trị đƣợc nhiều năm.
OpenGL
Đƣợc bắt đầu vào năm 1992 do Silicon Graphics (SGI) phát triển cho CAD và 3D
API với giao diện X-terminal (Hệ thống cửa sổ đƣợc MIT phát triển chạy trong môi
trƣờng UNIX và tất cả hệ thống hoạt động chính. Nó dùng giao thức Client-Server
và cho phép những ngƣời sử dụng chạy những ứng dụng trên những máy tính khác
trong mạng và xem bằng màn hình hiển thị của họ) dựa trên Unix. OpenGL đƣợc
phát triển dựa trên thƣ viện đồ họa của riêng SGI có tên là IrisGL.
Ban đầu OpenGL bị hạn chế khi dùng các ứng dụng doanh nghiệp nhƣ: công nghiệp,
thiết kế máy móc và nội thất, những bài tốn phân tích thống kế và khoa học.
Tuy nhiên API (Application Programming Interface – Giao diện chƣơng trình ứng
dụng, nó là tập hợp những hàm, những thủ tục con mà chƣơng trình hoặc ứng dụng,
có thể gọi để nói cho hệ điều hành thực hiện nhiệm vụ. API Windows 95 bao gồm
hơn 1000 hàm đƣợc viết bằng C, C++, Pascal và những ngôn ngữ lập trình khác có
thể gọi để tạo những cửa sổ, mở những File và thực hiện những nhiệm vụ cơ bản
khác) đƣợc lợi do sự phát triển của Game cùng với sự phát triển của những phiên

21


bản Windows trong năm 1996, và tất cả những gói 3D của PC chính và thậm trí một
số gói sản phẩm Low-End đều cung cấp để tăng tốc thực hiện OpenGL.
Cũng nhƣ phần cứng tăng tốc 3D đi vào trong các dịng sản phẩm thơng dụng, SGI
đã sửa lại điều khoản bản quyền của mình để làm cho OpenGL đƣợc “mở “ nhiều
hơn, bằng cách nhƣ vậy vị trí của nó đƣợc gắn chặt với nền tảng API để xây dựng
sự ảnh hƣởng qua lại trong những ứng dụng 2D và 3D.
OpenGL API đƣợc thiết kế để dùng rộng rãi trong những kĩ thuật đồ hoạ nhƣ :

Texture Mapping ( khả năng đƣa những hình ảnh tới bề mặt đồ hoạ), Anti-Aliasing,
độ trong suốt, sƣơng mù, ánh sáng ( khả năng tính tốn màu sắc của bề mặt khi
những kiểu sánh sáng khác nhau tới bề mặt từ một hoặc nhiều nguồn sáng), đánh
bóng bề mặt ( khả năng tính tốn hiệu ứng đánh bóng khi ánh sáng chạm tới bề mặt
ở những góc nhìn khác nhau và kết quả cho sự khác nhau về màu sắc một cách
huyền ảo qua bề mặt), vết mờ khi di chuyển và biến đổi hình tƣợng ( khả năng thay
đổi vị trí, kích thƣớc và luật phối cảnh xa gần của vật thể trong khơng gian toạ độ
3D).
Những đặc điểm của nó cũng tƣơng tự nhƣ những gì Direct3D đã làm, nhƣng nó là
API mức thấp hơn hơn là đối thủ của nó, cung cấp điều khiển rất đẹp lên những
thành phần cơ bản của việc tạo ra những cảnh 3D nhƣ là Vertext (vị trí khơng có
kích thƣớc trong ba hoặc bốn kích thƣớc khơng gian mà cắt bởi hai hay nhiều
đƣờng – ví dụ nhƣ gờ của hình ảnh) và những thơng tin về tam giác (hình cơ bản để
tạo hình khối trong đồ hoạ 3D).

22


Vertex
Ứng dụng OpenGL phải cung cấp tất cả thông tin hình học cho mỗi điểm nhỏ nhất
trong cơ sở dữ liệu 3D ( thông thƣờng là những điểm, những đƣờng và những hình
đa giác mơ tả hình thù hình học cơ bản – nhƣ những hình cầu, những hình khối,
hình trụ.... Một số phần cứng và phần mềm 3D còn đƣa ra những hình cong gọi là
“spline”) trong quang cảnh, cũng nhƣ vậy đối với những hiệu ứng có đƣợc với điểm
nhỏ nhất trong cơ sở dữ liệu 3D ( màu sắc, độ trong suốt, sƣơng mù....).
Độ trong suốt là tính năng có thể nhìn qua một vật thể khác, Khái niệm độ trong
suốt và tính mờ thƣờng hay dùng đồng nghĩa ; tuy nhiên Trong suốt về kỹ thuật có
nghĩa là “ nhìn qua lớp kính trong sạch, tính mờ có nghĩa là “nhìn qua lớp kính mờ“.
Mức độ điều khiển của nó là ngun nhân chính để cho những nhà phát triển tuyên
bố OpenGL dễ dàng hơn để tạo những ứng dụng so với Direct3D và tin cậy hơn với

những nền tảng phần cứng khác nhau.
Có hai mức độ cơ bản hỗ trợ phần cứng tăng tốc cho OpenGL.


ICD (Installable Client Drivers) tăng nhanh hơn với tính tốn ánh sáng, sự
biến đổi và Rasterisation ( là sự chuyển đổi của cảnh 3D đa giác, đƣợc lƣu
trữ trong bộ đệm khung hình, thành những hình ảnh đầy đủ với bố cục, độ
sâu và ánh sáng.



MCD (Mini Client Servers) hỗ trợ cho Rasterisation.

Trong khi MCD đƣợc viết dễ dàng từ các nhà sản xuất phần cứng, ISD đƣợc dùng
để thực hiện mức cao hơn.
Trong năm 1992, ARB (Architecture Review Board) đƣợc dùng rộng rãi trong công
nghiệp đã chú ý tới sự phát triển và tiến triển của OpenGL để tạo ta những chi tiết
kỹ thuật mới cho API hàng năm. Chi tiết kĩ thuật của OpenGL 1.4 và 1.5 đƣợc
thông báo vào mùa hè năm 2002 và năm 2003 có thêm những tính năng kỹ thuật và
những đặc điểm mới. Một điều quan trọng, mới đây nhất bao gồm Ngôn ngữ
OpenGL Shading, là ngôn ngữ đƣợc chờ đợi trong một thời gian dài của API để lập
trình Vertex Shader và Pixel Shader, đã đƣợc mở rộng và phát triển.
Ngôn ngữ OpenGL Shading nhanh chóng trở nên hỗ trợ rộng rãi để phát triển sự
tƣơng tác lẫn nhau của đồ hoạ và những ứng dụng hình tƣợng, đƣợc thực hiện trên
Unix, Microsoft Windows, Linux và những hệ điều hành khác.

23


Trong năm 2004, phiên bản OpenGL 2.0 đƣợc phát hành, nó có những đặc điểm

mới bao gồm :


Lập trình Shading, bằng cả Ngơn ngữ OpenGL Shading và API của nó trở
thành nét đặc trƣng nhân OpneGL. Chức năng mới bao gồm khả năng tạo
Shader ( Shader là thuật toán mà mơ tả bằng tốn học làm thế nào những vật
liệu riêng lẻ hoàn trả lại vật thể và ánh sáng tƣơng tác với nhau nhƣ thế nào
trong sự xuất hiện tồn cảnh) và những vật thể lập trình đƣợc ; và khả năng
viết Vertex và những đoạn Shader trong Ngôn ngữ OpenGL Shading.



Tái tạo nhiều đích mà cho phép những Shader đƣợc lập trình viết những giá
trị khác nhau tới nhiều bộ đệm đầu ra.



Hỗ trợ giảm công suất tiêu thụ trên bộ nhớ khi dùng với những bố cục hình
chữ nhật.



Tơ khn hai mặt, có khả năng định nghĩa hàm tơ khn cho mặt trƣớc và
mặt sau của hình gốc ban đầu, cải thiện hiệu suất của khối lƣợng Shadow và
thuật tốn xây dựng khối hình học.



....


OpenGL 2.0 tƣơng thích hồn tốn với những phiên bản trƣớc kia.
Direct3D ( D3D)
Một cách để D3D cho phép những nhà phát triển Game tới những nhà sản xuất
Game độc lập với phần cứng của PC chính là lớp HAL (Hardware Abstraction
Layer), tác động thông qua thiết bị phần mềm độc lập.
HAL cung cấp giao diện với khả năng thực hiện rộng rãi trong phần cứng đồ hoạ
3D và cho phép những nhà sản xuất chế tạo những Driver mà liên kết HAL với
phần cứng. Điều này cho phép những ứng dụng D3D khai thác những tính năng của
phần cứng mà khơng cần những thiết bị chuyên dụng.

24


Direct3D khơng mềm dẻo hơn OpenGL, mặc dù nó có kiểu lập trình mức thấp với
hy vọng tƣơng đƣơng với đối thủ của mình, có tên gọi Intermediate Mode.
Trong D3D q trình làm việc thơng qua Pipeline, hình học của vật thể 3D đƣợc
CPU xử lí trƣớc khi tới Bộ phận tăng tốc 3D để trình diễn những cảnh 3D trên màn
hình. Trong năm 1998 - những nhà sản xuất Chip lao vào cuộc đua điên khùng khác
để có quyền dùng Bộ phận tăng tốc 3D nhanh nhất – DirectX 5 nhanh chóng trở nên
bị thắt nút cổ chai trong xử lí 3D. Trong tình huống trở nên tồi tệ thì xuất hiện sự ra
đời của những Chip 3D thế hệ thứ ba, Microsoft xem xét lại tồn bộ tính tốn thay
đổi bên ngồi và ánh sáng API của DirectX để nâng cao hiệu suất của xử lí hình học
và cân bằng cấu trúc của hệ thống. DirectX 6.0 ( thực tế phát hành lần thứ năm) đã
đƣợc phát hành vào mùa hè năm 1998 có nhiều tính năng mới để cải thiện trình diễn
hình ảnh 3D cho Game và những ứng dụng mơ hình khác.
Phiên bản 6 thành phần Direct3D hỗ trợ những Card màn hình mới hơn để thực hiện
nhiều trình diễn bố cục trong một câu lệnh, giảm thời gian cần để tạo những những
cảnh 3D. Nó cũng thêm những công nghệ mới để cho những cảnh 3D trông nhƣ thật
nhƣ Anistropic Filtering, Bump Mapping - tạo ảo ảnh của bố cục thực tế và nguồn
ánh sáng trên mặt phẳng. Khuynh hƣớng kết hợp của những đặc điểm của OpenGL

tiếp diễn để hỗ trợ những phép toán liên quan tới việc tạo khuôn – bằng việc đƣa
thêm những hình ảnh trong cảnh 3D hơn là chỉ sử dụng vật thể 3D đơn lẻ bên trong.
25


×