1. Trang chủ
  2. » Cao đẳng - Đại học

LẬP TRÌNH GAME VỚI DIRECTX 9 0 - Full 10 điểm

10 0 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập Trình Game Với DirectX 9 0 - Full 10 Điểm
Tác giả Wendy Jones
Trường học Course Technology
Chuyên ngành Game Programming
Thể loại book
Năm xuất bản 2004
Thành phố Boston
Định dạng
Số trang 10
Dung lượng 682,69 KB

Nội dung

Beginning DirectX9 D ị ch b ở i TransTeam di ễ n đ àn Gamedev VN 2 © 2004 by Premier Press, a division of Course Technology All rights reserved No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system without written permission from Course PTR, except for the inclusion of brief quotations in a review The Premier Press logo and related trade dress are trademarks of Premier Press and may not be used without written permission DirectX is a registered trademark of Microsoft Corporation in the U S and/or other countries © Microsoft Corporation, 2002 All rights reserved All other trademarks are the property of their respective owners Important: Course PTR cannot provide software support Please contact the appropriate software manufacturer’s technical support line or Web site for assistance Course PTR and the author have attempted throughout this book to distinguish proprietary trademarks from descriptive terms by following the capitalization style used by the manufacturer Information contained in this book has been obtained by Course PTR from sources believed to be reliable However, because of the possibility of human or mechanical error by our sources, Course PTR, or others, the Publisher does not guarantee the accuracy, adequacy, or completeness of any information and is not responsible for any errors or omissions or the results obtained from use of such information Readers should be particularly aware of the fact that the Internet is an ever-changing entity Some facts may have changed since this book went to press Educational facilities, companies, and organizations interested in multiple copies or licensing of this book should contact the publisher for quantity discount information Training manuals, CD-ROMs, and portions of this book are also available individually or can be tailored for specific needs ISBN: 1-59200-349-4 Library of Congress Catalog Card Number: 2004090736 Printed in the United States of America 04 05 06 07 08 BH 10 9 8 7 6 5 4 3 2 1 Course PTR, a division of Course Technology 25 Thomson Place Boston, MA 02210 http://www courseptr com Senior Vice President, Course PTR Group: Andy Shafran Publisher: Stacy L Hiquet Senior Marketing Manager: Sarah O’Donnell Marketing Manager: Heather Hurley Manager of Editorial Services: Heather Talbot Senior Acquisitions Editor: Emi Smith Associate Marketing Manager: Kristin Eisenzopf Project/Copy Editor: Karen A Gill Technical Reviewer: Joseph Hall Retail Market Coordinator: Sarah Dubois Interior Layout: Marian Hartsough Cover Designer: Steve Deschene CD-ROM Producer: Brandon Penticuff Indexer: Sharon Shock Proofreader: Sean Medlock Beginning DirectX9 D ị ch b ở i TransTeam di ễ n đ àn Gamedev VN 3 Thông tin v ề tác gi ả W ENDY J ONES là ng ườ i đ ã dành tr ọ n ni ề m đ am mê c ủ a cô ấ y cho máy tính ngay t ừ l ầ n đầ u tiên cô đượ c nhìn th ấ y chi ế c máy Apple IIe khi còn h ọ c ở tr ườ ng ph ổ thông K ể t ừ khi ti ế p c ậ n v ớ i nó, cô ấ y đ ã dành m ọ i kho ả ng th ờ i gian r ả nh r ỗ i vào công vi ệ c h ọ c l ậ p trình BASIC và k ỹ thu ậ t đồ ho ạ , v ẽ nh ữ ng ý t ưở ng c ủ a mình lên gi ấ y v ẽ và th ự c hi ệ n nó trên máy tính Ngoài BASIC thì cô c ũ ng đ ã l ầ n l ượ t ti ế p c ậ n v ớ i các ngôn ng ữ khác nh ư Pascal, C, Java và C++ Ngh ề nghi ệ p c ủ a Wendy là m ộ t chu ỗ i thay đổ i nh ư chính s ự phát tri ể n c ủ a máy tính v ậ y, t ừ b ỏ môi tr ườ ng l ậ p trình DOS, cô t ự trang b ị cho mình nh ữ ng ki ế n th ứ c v ề l ậ p trình Window và sao đ ó r ấ t nhanh chóng nh ả y sang th ế gi ớ i NET M ặ c dù các công ty Internet đ em l ạ i r ấ t nhi ề u ti ề n, nh ư ng đ ó không ph ả i là t ấ t c ả , chính vì th ế Wendy đ ã m ở r ộ ng k ỹ n ă ng l ậ p trình c ủ a mình sang l ĩ nh v ự c l ậ p trình games và d ồ n t ấ t c ả s ứ c l ự c c ủ a mình cho ni ề m đ am mê đ ó Wendy đ ã hi ệ n th ự c hoá đượ c ni ề m đ am mê này khi cô nh ậ n đượ c m ộ t đề ngh ị làm vi ệ c cho công ty Atari’s Humongous Entertainment v ớ i t ư cách là m ộ t l ậ p trình viên Trong xu ố t quá trình làm vi ệ c ở Atari, cô ấ y đ ã làm vi ệ c trên c ả hai môi tr ườ ng PC và máy ch ơ i game cá nhân, b ị qu ấ n theo hàng lo ạ t nh ữ ng thách th ứ c mà công vi ệ c đ ó đ em đế n Hi ệ n t ạ i Wendy đ ang làm vi ệ c các ph ầ n m ề m dành cho PocketPC và trên nh ữ ng thi ế t b ị ch ơ i game c ầ m tay N ế u b ạ n có b ấ t c ứ góp ý hay nh ữ ng câu h ỏ i v ề quy ể n sách này, b ạ n có th ể liên h ệ v ớ i cô theo đị a ch ỉ mail: gadget2032@yahoo com Beginning DirectX9 D ị ch b ở i TransTeam di ễ n đ àn Gamedev VN 4 B ố c ụ c c ủ a sách L ờ i gi ớ i thi ệ u P H Ầ N I N H Ữ NG K I Ế N T H Ứ C N Ề N T Ả NG Ch ươ ng 1 DirectX là gì, t ạ i sao và làm th ế nào để s ử d ụ ng nó Ch ươ ng 2 Ví d ụ đầ u tiên s ử d ụ ng DirectX Ch ươ ng 3 Phông n ề n, khung hình, ho ạ t c ả nh P H Ầ N II N H Ữ NG T HÀNH P H Ầ N C Ơ B Ả N C Ủ A M Ộ T T H Ế G I Ớ I 3D Ch ươ ng 4 Nh ữ ng ki ế n th ứ c c ơ b ả n v ề 3D Ch ươ ng 5 Ma tr ậ n, các phép bi ế n đổ i và phép xoay trong không gian Ch ươ ng 6 B ả ng m ầ u, v ậ t li ệ u ph ủ và ánh sáng trong không gian Ch ươ ng 7 Chia nh ỏ và làm m ị n đố i t ượ ng Ch ươ ng 8 V ậ t th ể , đ i ể m chèn và các hi ệ u ứ ng P H Ầ N III N H Ữ NG K I Ế N T H Ứ C B Ổ X UNG Ch ươ ng 9 S ử d ụ ng DirectInput Ch ươ ng 10 Hi ệ u ứ ng âm thanh b ằ ng DirectSound Ch ươ ng 11 Xây d ự ng m ộ t d ự án m ẫ u P H Ầ N IV P H Ụ L Ụ C Ph ụ l ụ c A Gi ả i đ áp các bài t ậ p cu ố i các ch ươ ng Ph ụ l ụ c B Cách s ử d ụ ng CD-ROM Gi ả i thích các thu ậ t ng ữ Ch ỉ m ụ c các t ừ khoá Beginning DirectX9 D ị ch b ở i TransTeam di ễ n đ àn Gamedev VN 5 L Ờ I GI Ớ I THI Ệ U ậ p trình game có th ể nói là m ộ t công vi ệ c c ự c k ỳ thú v ị trong th ế gi ớ i l ậ p trình b ở i nó đ em l ạ i cho b ạ n c ơ h ộ i đượ c t ạ o ra m ộ t th ế gi ớ i ả o n ơ i mà nh ữ ng sinh v ậ t huy ề n bí, nh ữ ng vùng đấ t ch ư a h ề đượ c bi ế t đế n ngay c ả trong nh ữ ng gi ấ c m ơ Li ệ u b ạ n có th ể tìm th ấ y đ i ề u này ở m ộ t n ơ i nào khác? V ớ i nó, b ạ n có th ể đ em đế n cho m ọ i ng ườ i kh ả n ă ng tr ở thành b ấ t c ứ m ộ t nhân v ậ t nào, m ộ t con ng ườ i nào mà h ọ mong mu ố n và h ơ n c ả là m ộ t môi tr ườ ng để h ọ có th ể s ố ng theo đ úng s ở thích C ũ ng chính b ở i th ế mà ngành công nghi ệ p Game đ ã phát tri ể n không ng ừ ng, v ượ t qua m ọ i gi ớ i h ạ n và kéo theo nó là phát tri ể n c ủ a công ngh ệ ph ụ c v ụ cho nó Ch ỉ vài n ă m tr ướ c đ ây, có l ẽ ở c ấ p độ ng ườ i s ử d ụ ng còn ch ư a h ề bi ế t đế n các thi ế t b ị th ể hi ệ n hình ả nh 3D ngo ạ i tr ừ các máy tr ạ m đắ t ti ề n SGI d ự a trên n ề n t ả ng OpenGL T ạ i th ờ i đ i ể m đ ó có th ể nói OpenGL m ớ i ch ỉ đ ang ở th ờ i k ỳ phôi thai Đế n khi các máy tính cá nhân PC đ ã đượ c ph ổ bi ế n h ơ n, OpenGL đ ã m ở r ộ ng n ề n t ả ng c ủ a mình và đ i ề u đ ó th ự c s ự đ ã đ em đế n m ộ t cú huých m ạ nh đầ u tiên trong l ị ch s ử phát tri ể n game c ũ ng nh ư nh ữ ng ứ ng d ụ ng mô ph ỏ ng không gian 3D T ạ i th ờ i đ i ể m đ ó, Windows v ẫ n ch ư a ph ả i là n ề n t ả ng t ố t nh ấ t để phát tri ể n games, tuy nhiên h ọ c ũ ng r ấ t nhanh chóng nh ậ n ra nh ữ ng l ợ i nhu ậ n t ừ ngành công nghi ệ p này Chính vì th ế phiên b ả n DirectX đầ u tiên c ũ ng s ớ m đượ c Microsoft tung ra Tuy nhiên trong th ờ i gian đầ u này thì s ự ph ổ bi ế n c ủ a n ề n t ả ng này v ẫ n còn r ấ t h ạ n ch ế do OpenGL đ ã đượ c th ừ a nh ậ n là ph ươ ng th ứ c chu ẩ n để phát tri ể n đồ ho ạ 3D trên môi tr ườ ng Windows Ngày nay, h ầ u h ế t các game phát tri ể n trên PC bán trên th ị tr ườ ng đề u đượ c xây d ự ng trên n ề n t ả ng DirectX, nó đ ã giúp cho nh ữ ng game th ủ có th ể t ậ n h ưở ng đượ c m ộ t công ngh ệ đồ ho ạ tiên ti ế n và hi ệ n th ự c nh ấ t v ề th ế gi ớ i Nh ữ ng c ầ n ph ả i có nh ữ ng gì để ti ế p c ậ n công ngh ệ này? Nh ữ ng kinh nghi ệ m và ki ế n th ứ c v ề l ậ p trình C++ c ũ ng nh ư lý thuy ế t l ậ p trình h ướ ng đố i t ượ ng (OOP) s ẽ giúp b ạ n có th ể hi ể u đượ c t ấ t c ả nh ữ ng bài gi ả ng đượ c trình bày trong quy ể n sách này Ngoài ra b ạ n c ũ ng nên trang b ị thêm cho mình m ộ t vài k ỹ n ă ng v ề toán h ọ c và hình ho ạ , tuy nhiên h ầ u h ế t nh ữ ng khái ni ệ m toán h ọ c s ử d ụ ng c ũ ng s ẽ đượ c gi ả i thích chi ti ế t Nh ữ ng hi ể u bi ế t v ề Visual Studio NET hay b ấ t k ỳ s ả n ph ẩ m nào trong b ộ Visual Studio c ũ ng s ẽ r ấ t là h ữ u ích L Beginning DirectX9 D ị ch b ở i TransTeam di ễ n đ àn Gamedev VN 6 Làm th ế nào để s ử d ụ ng quy ể n sách này hi ệ u qu ả ? Quy ể n sách này đượ c chia làm 3 ph ầ n chính Ph ầ n đầ u tiên s ẽ mô t ả c ở b ả n v ề DirectX, làm th ế nào để thi ế t l ậ p và ch ạ y m ộ t ứ ng d ụ ng s ử d ụ ng n ề n t ả ng này Ph ầ n th ứ hai s ẽ cung c ấ p cho b ạ n nh ữ ng khái ni ệ m c ơ b ả n ph ụ c v ụ quá trình thi ế t k ế và xây d ự ng m ộ t môi tr ườ ng 3D, kèm theo đ ó là gi ớ i thi ệ u nh ữ ng khái ni ệ m v ề 3D và Direct3D Ph ầ n 3 và ph ầ n cu ố i s ẽ xoay quanh các ki ế n th ứ c khác c ủ a n ề n t ả ng DirectX nh ư x ử lý âm thanh thông qua DirectSound, l ấ y các thông tin đầ u vào t ừ ng ườ i dùng thông qua DirectInput Quy ể n sách k ế t thúc b ằ ng m ộ t d ự án minh ho ạ nh ỏ v ớ i hi v ọ ng đ em đế n cho b ạ n m ộ t cái nhìn toàn c ả nh h ơ n v ề t ấ t các các ki ế n th ứ c chúng ta đ ã h ọ c và áp d ụ ng c ụ th ể chúng nh ư th ế nào N ế u b ạ n đ ã t ừ ng làm quen v ớ i môi tr ườ ng DirectX và c ũ ng đ ã t ừ ng vi ế t m ộ t vài ứ ng d ụ ng s ử d ụ ng n ề n t ả ng này, b ạ n có th ể b ỏ qua ph ầ n m ộ t Tôi ngh ĩ r ằ ng b ấ t k ỳ ai khi m ớ i ti ế p c ậ n v ớ i môi tr ườ ng l ậ p trình game và DirectX nên đọ c quy ể n sách này m ộ t cách tu ầ n t ự để có th ể hi ể u h ế t đượ c nh ữ ng kh ả n ă ng mà DirectX có th ể đ em l ạ i Beginning DirectX9 D ị ch b ở i TransTeam di ễ n đ àn Gamedev VN 7 Ch ươ ng 1 DirectX là gì, t ạ i sao và làm th ế nào để s ử d ụ ng nó Ch ươ ng 2 Ví d ụ đầ u tiên s ử d ụ ng DirectX Ch ươ ng 3 Phông n ề n, khung hình, ho ạ t c ả nh PH Ầ N I KI Ế N TH Ứ C N Ề N T Ả NG Beginning DirectX9 D ị ch b ở i TransTeam di ễ n đ àn Gamedev VN 8 DirectX là gì, T ạ i sao và Làm th ế nào để s ử d ụ ng nó irectX v ề th ự c ch ấ t là m ộ t h ệ th ố ng các giao di ệ n l ậ p trình ứ ng d ụ ng (API) ph ụ c v ụ cho quá trình phát tri ể n các game trên n ề n t ả ng h ệ đ i ề u hành Windows N ế u nh ư t ạ i th ờ i đ i ể m m ộ t vài n ă m tr ướ c, nh ữ ng ng ườ i phát tri ể n game th ườ ng ph ả i v ậ t l ộ n v ớ i nh ữ ng v ấ n đề n ả y sinh t ừ s ự không t ươ ng thích c ủ a ph ầ n c ứ ng - không th ể phát tri ể n nh ữ ng s ả n ph ẩ m game để t ấ t c ả m ọ i ng ườ i đề u có th ể t ậ n h ưở ng đượ c nh ữ ng tính n ă ng c ủ a game đ ó Thì ngày nay, Microsoft đ ã đ em t ớ i m ộ t n ề n t ả ng DirectX Nó cung c ấ p cho nh ữ ng ng ườ i phát tri ể n game m ộ t ph ươ ng th ứ c đơ n nh ấ t, m ộ t n ề n t ả ng th ư vi ệ n API “s ạ ch” ( đ ã đượ c chu ẩ n hoá) để h ọ có th ể vi ế t và ch ạ y trên h ầ u h ế t các n ề n t ả ng mà không c ầ n ph ả i lo ng ạ i nhi ề u v ề ph ầ n c ứ ng c ủ a PC Ch ỉ m ộ t vài n ă m sau khi phiên b ả n DirectX đượ c đề xu ấ t, s ố l ượ ng game đượ c phát tri ể n trên n ề n t ả ng Windows đ ã t ă ng lên m ộ t cách nhanh chóng Trong ch ươ ng này, chúng ta s ẽ đề c ậ p t ớ i các v ấ n đề : ƒ DirectX là gì v ậ y ƒ T ạ i sao nó l ạ i h ữ u d ụ ng đế n th ế ƒ Thành ph ầ n nào đ ã xây d ự ng nên n ề n t ả ng DirectX API DirectX là gì? DirectX là m ộ t t ậ p h ợ p th ư vi ệ n các hàm API đượ c Microsoft thi ế t k ế để cung c ấ p cho nh ữ ng ng ườ i phát tri ể n game m ộ t giao di ệ n l ậ p trình c ấ p th ấ p để liên k ế t t ớ i các ph ầ n c ứ ng c ủ a PC ch ạ y trên h ệ đ i ề u hành Windows Phiên b ả n hi ệ n t ạ i c ủ a nó là 9 0(c), m ỗ i m ộ t đố i t ượ ng API c ủ a DirectX cung c ấ p m ộ t kh ả n ă ng truy c ậ p khác nhau t ớ i t ừ ng lo ạ i ph ầ n c ứ ng c ủ a h ệ th ố ng, nó bao g ồ m h ệ th ố ng đồ ho ạ , âm thanh và k ế t n ố i m ạ ng, t ấ t c ả chúng đề u đượ c xây d ự ng trên m ộ t giao di ệ n chu ẩ n Giao di ệ n này cho phép nh ữ ng ng ườ i phát tri ể n có th ể vi ế t nh ữ ng game c ủ a h ọ b ằ ng cách s ử d ụ ng t ậ p h ợ p cách hàm này l ạ i v ớ i nhau mà không c ầ n ph ả i quan tâm nhi ề u t ớ i ph ầ n c ứ ng mà nó s ẽ đượ c s ử d ụ ng D CH ƯƠ NG 1 Beginning DirectX9 D ị ch b ở i TransTeam di ễ n đ àn Gamedev VN 9 Nh ữ ng thành ph ầ n t ạ o nên DirectX H ệ th ố ng th ư vi ệ n API c ủ a DirectX đượ c phân chia ra làm nhi ề u thành ph ầ n nh ỏ , m ỗ i thành ph ầ n này đả m nhi ệ m nh ữ ng nhi ệ m v ụ khác nhau c ủ a h ệ th ố ng Chúng có th ể đượ c s ử d ụ ng hoàn toàn độ c l ậ p v ớ i nhau, b ạ n có th ể ch ỉ c ầ n thêm nh ữ ng thành ph ầ n nào mà game c ủ a b ạ n c ầ n t ớ i mà thôi Sau đ ây là danh sách các thành ph ầ n đ ó: ƒ DirectX Graphic Thành ph ầ n này đả m nhi ệ m t ấ t c ả các ch ứ c n ă ng k ế t xu ấ t đồ ho ạ c ủ a h ệ th ố ng Nó cung c ấ p nh ữ ng hàm API để ng ườ i dùng có th ể qu ả n lý quá trình v ẽ 2D c ũ ng nh ư 3D, ngoài ra nó c ũ ng h ỗ tr ợ c ả quá trình kh ở i t ạ o và xác l ậ p độ phân gi ả i cho game c ủ a b ạ n ƒ DirectInput T ấ t c ả nh ữ ng gì ng ườ i dùng nh ậ p vào s ẽ đượ c qu ả n lý b ở i các hàm API trong thành ph ầ n này Nó bao g ồ m kh ả n ă ng h ỗ tr ợ các thi ế t b ị nh ư bàn phím, chu ộ t, gamepad, joystick V ớ i phiên b ả n m ớ i nh ấ t hi ệ n nay c ũ ng đ ã h ỗ tr ợ c ả các thi ế t b ị t ươ ng tác th ự c (force-feedback) nh ư c ầ n lái, chân ga cho các game đ ua t ố c độ ƒ DirectPlay Kh ả n ă ng k ế t n ố i m ạ ng đượ c cung c ấ p cho nh ữ ng h ệ th ố ng game c ủ a b ạ n thông qua thành ph ầ n DirectPlay này Nh ữ ng hàm ph ụ c v ụ k ế t n ố i này đ em đế n cho b ạ n kh ả n ă ng phát tri ể n ứ ng d ụ ng có th ể giao ti ế p v ớ i b ấ t k ỳ m ộ t máy nào khác, cho phép không ch ỉ m ộ t ng ườ i có th ể ch ơ i game đ ó DirectPlay đ em đế n cho b ạ n m ộ t giao di ệ n l ậ p trình c ấ p cao nh ằ m giúp b ạ n tránh kh ỏ i nh ữ ng v ấ n đề khó kh ă n trong quá trình l ậ p trình ứ ng d ụ ng liên k ế t m ạ ng ƒ DirectSound N ế u b ạ n mu ố n chèn thêm các hi ệ u ứ ng âm thanh ho ặ c nh ạ c n ề n, b ạ n s ẽ c ầ n ph ả i s ử d ụ ng t ớ i nh ữ ng hàm API do thành ph ầ n này cung c ấ p Ch ứ c n ă ng c ủ a DirectSound là cho phép b ạ n có th ể t ả i và ch ơ i m ộ t ho ặ c nhi ề u file nh ạ c d ạ ng WAV c ũ ng nh ư toàn b ộ kh ả n ă ng đ i ề u khi ể n quá trình ch ơ i nh ạ c đ ó ƒ DirectMusic Thành ph ầ n này mang đế n cho b ạ n kh ả n ă ng t ạ o các b ả n nh ạ c “ độ ng” (t ạ i th ờ i đ i ể m ch ươ ng trình ch ạ y, không c ầ n ph ả i l ư u tr ữ trong c ơ s ở d ữ li ệ u c ủ a game) Nó có kh ả n ă ng h ỗ tr ợ h ầ u h ế t các ch ứ c n ă ng chính c ủ a m ộ t ph ầ n m ề m ch ơ i nh ạ c midi nh ư t ự ch ạ y l ạ i theo m ộ t qui trình đ ã xác l ậ p, bi ế n đổ i âm l ượ ng để phù h ợ p v ớ i ho ạ t c ả nh trong game, thay đổ i nh ị p c ủ a giai đ i ệ u và nhi ề u ch ứ c n ă ng cao c ấ p khác ƒ DirectShow B ạ n có th ể c ắ t m ộ t ho ạ t c ả nh phim ho ặ c l ồ ng ghép âm thanh và game c ủ a mình thông qua thành ph ầ n này AVI, MP3, MPEG và ANF ch ỉ là m ộ t trong s ố r ấ t nhi ề u các lo ạ i đị nh d ạ ng file mà DirectShow h ỗ tr ợ V ớ i DirectShow, b ạ n s ẽ không ph ả i t ả i t ấ t c ả các đố i t ượ ng file này lên b ộ nh ớ , thay vào đ ó là truy c ậ p tr ự c ti ế p d ữ li ệ u trên ổ c ứ ng ho ặ c CD-ROM ƒ DirectSetup Sau khi game c ủ a b ạ n đ ã hoàn thành, b ạ n s ẽ mu ố n phát hành DirectSetup cung c ấ p cho b ạ n nh ữ ng ch ứ c n ă ng giúp ứ ng d ụ ng có th ể t ự độ ng cài đặ t nh ữ ng phiên b ả n DirectX m ớ i nh ấ t lên h ệ th ố ng c ủ a ng ườ i s ử d ụ ng Chú ý: H ệ th ố ng đồ ho ạ DirectX bao g ồ m toàn b ộ các ch ứ c n ă ng c ủ a c ả DirectDraw và Direct3D Phiên b ả n DirectX 7 0 là phiên b ả n cu ố i cùng phân tách hai thành ph ầ n này thành hai đố i t ượ ng độ c l ậ p Beginning DirectX9 D ị ch b ở i TransTeam di ễ n đ àn Gamedev VN 10 T ạ i sao DirectX l ạ i c ầ n thi ế t? Tr ướ c khi h ệ đ i ề u hành Windows đượ c phát hành, các l ậ p trình viên ch ủ y ế u phát tri ể n các game trên n ề n t ả ng h ệ đ i ề u hành DOS Đấ y là m ộ t h ệ đ i ề u hành đơ n nhi ệ m, không h ỗ tr ợ giao di ệ n đồ ho ạ (non-GUI) và cách duy nh ấ t để th ự c hi ệ n các thao tác đồ ho ạ này là truy c ậ p tr ự c ti ế p vào ph ầ n c ứ ng và th ự c thi chúng Đ i ề u này đ em đế n c ả nh ữ ng l ợ i ích c ũ ng nh ư nh ữ ng v ấ n đề khó kh ă n c ầ n gi ả i quy ế t Ta có th ể ví d ụ ra, b ở i vì s ử d ụ ng cách truy c ậ p tr ự c ti ế p gi ữ a mã game và ph ầ n c ứ ng, l ậ p trình viên có th ể có đượ c toàn b ộ s ứ c m ạ nh c ũ ng nh ư quy ề n đ i ề u khi ể n c ủ a h ệ th ố ng, đ i ề u nay đ em đế n kh ả n ă ng ho ạ t độ ng v ớ i hi ệ u su ấ t và ch ấ t l ượ ng cao c ủ a h ệ th ố ng game Tuy nhiên, m ặ t trái c ủ a v ấ n đề là nh ữ ng nhà phát tri ể n game này s ẽ ph ả i t ự xây d ự ng cho mình nh ữ ng th ư vi ệ n h ỗ tr ợ cho t ừ ng lo ạ i thi ế t b ị ph ầ n c ứ ng n ế u h ọ mu ố n game có kh ả n ă ng h ỗ tr ợ Nó bao g ồ m ngay c ả nh ữ ng thi ế t b ị r ấ t ph ổ thông nh ư card âm thanh và đồ ho ạ T ạ i th ờ i đ i ể m đ ó, không ph ả i t ấ t c ả các thi ế t b ị đề u tuân theo m ộ t chu ẩ n nh ấ t đị nh Chính đ i ề u này đ ã làm cho quá trình thao tác trên màn hình đồ ho ạ c ự c k ỳ khó kh ă n đặ c bi ệ t khi b ạ n mu ố n phát triên các game có độ phân gi ả i trên 320 x 240 pixel Ch ỉ vi ệ c vi ế t các game s ử d ụ ng độ phân gi ả i 640 x 480 c ũ ng đ ã khi ế n các l ậ p trình viên ph ả i truy c ậ p tr ự c ti ế p vào b ộ nh ớ video và t ự mình qu ả n lý toàn b ộ quá trình c ậ p nh ậ t các thanh ghi s ử lý c ủ a card đồ ho ạ đ ó Và h ọ đ ã ngh ĩ r ằ ng đ ã đế n lúc c ầ n ph ả i tìm ki ế m m ộ t cách đ i khác đơ n gi ả n và hi ệ u qu ả h ơ n Khi mà phiên b ả n Windows 3 1 chính th ứ c phát hành, nh ữ ng v ấ n đề đ ó v ẫ n ch ư a h ề đượ c gi ả i quy ế t H ơ n th ế , b ở i vì Windows ch ạ y trên n ề n DOS nên chính nó vô tình đ ã làm gi ả m đ i tài nguyên h ệ th ố ng giành cho các game và nó c ũ ng đ ã lo ạ i b ỏ toàn b ộ kh ả n ă ng truy c ậ p tr ự c ti ế p mà nh ữ ng nhà phát tri ể n game v ẫ n hay dùng tr ướ c đ ó t ừ r ấ t lâu r ồ i V ậ y là h ầ u h ế t các game h ỗ tr ợ Window t ạ i th ờ i đ i ể m đ ó ch ủ y ế u là nh ữ ng game đ ánh bài và các game đơ n gi ả n khác Trong khi đ ó các game hành độ ng v ẫ n ti ế p t ụ c đượ c phát tri ể n trên n ề n t ả ng DOS M ặ c dù tr ướ c đ ó, Microsoft đ ã c ố g ắ ng cung c ấ p cho ng ườ i phát tri ể n m ộ t cách cách truy c ậ p nhanh h ơ n t ớ i các thi ế t b ị đồ ho ạ thông qua h ệ th ố ng th ư vi ệ n có tên WinG Nó là ti ề n thân c ủ a DirectX và ch ỉ h ỗ tr ợ r ấ t ít ch ứ c n ă ng WinG th ự c s ự là m ộ t ý t ưở ng hay, tuy nhiên nó v ẫ n ch ư a th ể đ em t ớ i cho nh ữ ng ng ườ i phát tri ể n kh ả n ă ng truy c ậ p h ệ th ố ng t ố t h ơ n so v ớ i nh ữ ng cách mà h ọ v ẫ n thích làm trên n ề n h ệ đ i ề u hành DOS Chính vì th ế , Microsoft đ ã có nh ữ ng c ả i ti ế n và b ổ xung thêm khá nhi ề u ch ứ c n ă ng trong phiên b ả n đầ u tiên DirectX, hay còn đượ c bi ế t t ớ i v ớ i cái tên GameSDK (b ộ công c ụ phát tri ể n game) DirectX đ ã cung c ấ p cho các l ậ p trình viên m ộ t th ư vi ệ n độ c l ậ p để phát tri ể n, nó là l ớ p trung gian gi ữ a game và các ph ầ n c ứ ng c ủ a PC Lúc này thì quá trình thao tác đồ ho ạ đ ã tr ở nên d ễ dàng h ơ n r ấ t nhi ề u Tuy nhiên phiên b ả n đầ u tiên c ủ a DirectX v ẫ n ch ư a h ỗ tr ợ đượ c nhi ề u d ạ ng ph ầ n c ứ ng khác nhau, nh ư ng đ ó th ự c s ự đ ã là m ộ t thay đổ i r ấ t có ý ngh ĩ a và th ự c s ự đ áp ứ ng đượ c mong mu ố n c ủ a nh ữ ng ng ườ i phát tri ể n game Ch ỉ m ộ t vài n ă m sau, h ọ đ ã phát hành phiên b ả n DirectX 9, m ỗ i m ộ t phiên b ả n đề u đ ã đượ c b ổ xung và t ă ng kh ả n ă ng h ỗ tr ợ nh ữ ng công ngh ệ m ớ i nh ư k ế t n ố i m ạ ng, k ế t xu ấ t âm thanh, hình ả nh và h ỗ tr ợ r ấ t nhi ề u d ạ ng thi ế t b ị đầ u vào m ớ i

Trang 2

Press and may not be used without written permission

DirectX is a registered trademark of Microsoft Corporation in the U.S and/or

other countries

© Microsoft Corporation, 2002 All rights reserved

All other trademarks are the property of their respective owners

Important: Course PTR cannot provide software support Please contact the

appropriate software manufacturer’s technical support line or Web site for

assistance

Course PTR and the author have attempted throughout this book to

distinguish proprietary trademarks from descriptive terms by following the

capitalization style used by the manufacturer

Information contained in this book has been obtained by Course PTR from

sources believed to be reliable However, because of the possibility of human

or mechanical error by our sources, Course PTR, or others, the Publisher

does not guarantee the accuracy, adequacy, or completeness of any

information and is not responsible for any errors or omissions or the results

obtained from use of such information Readers should be particularly aware

of the fact that the Internet is an ever-changing entity Some facts may have

changed since this book went to press

Educational facilities, companies, and organizations interested in multiple

copies or licensing of this book should contact the publisher for quantity

discount information Training manuals, CD-ROMs, and portions of this book

are also available individually or can be tailored for specific needs

ISBN: 1-59200-349-4

Library of Congress Catalog Card Number: 2004090736

Printed in the United States of America

04 05 06 07 08 BH 10 9 8 7 6 5 4 3 2 1

Course PTR, a division of Course Technology

25 Thomson Place Boston, MA 02210 http://www.courseptr.com

Marketing Manager:

Heather Hurley

Manager of Editorial Services:

Heather Talbot

Senior Acquisitions Editor:

Emi Smith

Associate Marketing Manager:

Kristin Eisenzopf

Project/Copy Editor:

Karen A Gill

Technical Reviewer:

Joseph Hall

Retail Market Coordinator:

Sarah Dubois

Interior Layout:

Marian Hartsough

Cover Designer:

Steve Deschene

CD-ROM Producer:

Brandon Penticuff

Indexer:

Sharon Shock

Proofreader:

Sean Medlock

Trang 3

Thông tin về tác giả

W ENDY J ONES là người đã dành trọn niềm đam mê của cô ấy cho máy tính ngay từ lần đầu tiên cô được nhìn thấy chiếc máy Apple IIe khi còn học ở trường phổ thông Kể từ khi tiếp cận với nó, cô ấy đã dành mọi khoảng thời gian rảnh rỗi vào công việc học lập trình BASIC và kỹ thuật đồ hoạ, vẽ những ý tưởng của mình lên giấy vẽ và thực hiện nó trên máy tính Ngoài BASIC thì cô cũng đã lần lượt tiếp cận với các ngôn ngữ khác như Pascal, C, Java và C++

Nghề nghiệp của Wendy là một chuỗi thay đổi như chính sự phát triển của máy tính vậy,

từ bỏ môi trường lập trình DOS, cô tự trang bị cho mình những kiến thức về lập trình Window và sao đó rất nhanh chóng nhảy sang thế giới NET Mặc dù các công ty Internet đem lại rất nhiều tiền, nhưng đó không phải là tất cả, chính vì thế Wendy đã mở rộng kỹ năng lập trình của mình sang lĩnh vực lập trình games và dồn tất cả sức lực của mình cho niềm đam mê đó

Wendy đã hiện thực hoá được niềm đam mê này khi cô nhận được một đề nghị làm việc cho công ty Atari’s Humongous Entertainment với tư cách là một lập trình viên Trong xuốt quá trình làm việc ở Atari, cô ấy đã làm việc trên cả hai môi trường PC và máy chơi game cá nhân, bị quấn theo hàng loạt những thách thức mà công việc đó đem đến

Hiện tại Wendy đang làm việc các phần mềm dành cho PocketPC và trên những thiết bị chơi game cầm tay

Nếu bạn có bất cứ góp ý hay những câu hỏi về quyển sách này, bạn có thể liên hệ với cô theo địa chỉ mail: gadget2032@yahoo.com

Trang 4

Bố cục của sách

Lời giới thiệu

PHẦN I NHỮNG KIẾN THỨC NỀN TẢNG

Chương 1 DirectX là gì, tại sao và làm thế nào để sử dụng nó

Chương 2 Ví dụ đầu tiên sử dụng DirectX

Chương 3 Phông nền, khung hình, hoạt cảnh

PHẦN II NHỮNG THÀNH PHẦN CƠ BẢN CỦA MỘT THẾ GIỚI 3D

Chương 4 Những kiến thức cơ bản về 3D

Chương 5 Ma trận, các phép biến đổi và phép xoay trong không gian

Chương 6 Bảng mầu, vật liệu phủ và ánh sáng trong không gian

Chương 7 Chia nhỏ và làm mịn đối tượng

Chương 8 Vật thể, điểm chèn và các hiệu ứng

PHẦN III NHỮNG KIẾN THỨC BXUNG

Chương 9 Sử dụng DirectInput

Chương 10 Hiệu ứng âm thanh bằng DirectSound

Chương 11 Xây dựng một dự án mẫu

PHẦN IV PHỤ LỤC

Phụ lục A Giải đáp các bài tập cuối các chương

Trang 5

ập trình game có thể nói là một công việc cực kỳ thú vị trong thế giới lập trình bởi

nó đem lại cho bạn cơ hội được tạo ra một thế giới ảo nơi mà những sinh vật huyền bí, những vùng đất chưa hề được biết đến ngay cả trong những giấc mơ Liệu bạn có thể tìm thấy điều này ở một nơi nào khác? Với nó, bạn có thể đem đến cho mọi người khả năng trở thành bất cứ một nhân vật nào, một con người nào mà họ mong muốn và hơn cả là một môi trường để họ có thể sống theo đúng sở thích

Cũng chính bởi thế mà ngành công nghiệp Game đã phát triển không ngừng, vượt qua mọi giới hạn và kéo theo nó là phát triển của công nghệ phục vụ cho nó Chỉ vài năm trước đây, có lẽ ở cấp độ người sử dụng còn chưa hề biết đến các thiết bị thể hiện hình ảnh 3D ngoại trừ các máy trạm đắt tiền SGI dựa trên nền tảng OpenGL Tại thời điểm đó

có thể nói OpenGL mới chỉ đang ở thời kỳ phôi thai Đến khi các máy tính cá nhân PC đã được phổ biến hơn, OpenGL đã mở rộng nền tảng của mình và điều đó thực sự đã đem đến một cú huých mạnh đầu tiên trong lịch sử phát triển game cũng như những ứng dụng

mô phỏng không gian 3D

Tại thời điểm đó, Windows vẫn chưa phải là nền tảng tốt nhất để phát triển games, tuy nhiên họ cũng rất nhanh chóng nhận ra những lợi nhuận từ ngành công nghiệp này Chính

vì thế phiên bản DirectX đầu tiên cũng sớm được Microsoft tung ra Tuy nhiên trong thời gian đầu này thì sự phổ biến của nền tảng này vẫn còn rất hạn chế do OpenGL đã được thừa nhận là phương thức chuẩn để phát triển đồ hoạ 3D trên môi trường Windows Ngày nay, hầu hết các game phát triển trên PC bán trên thị trường đều được xây dựng trên nền tảng DirectX, nó đã giúp cho những game thủ có thể tận hưởng được một công nghệ đồ hoạ tiên tiến và hiện thực nhất về thế giới

Những cần phải có những gì để tiếp cận công nghệ này?

Những kinh nghiệm và kiến thức về lập trình C++ cũng như lý thuyết lập trình hướng đối tượng (OOP) sẽ giúp bạn có thể hiểu được tất cả những bài giảng được trình bày trong quyển sách này Ngoài ra bạn cũng nên trang bị thêm cho mình một vài kỹ năng về toán học và hình hoạ, tuy nhiên hầu hết những khái niệm toán học sử dụng cũng sẽ được giải thích chi tiết Những hiểu biết về Visual Studio NET hay bất kỳ sản phẩm nào trong bộ Visual Studio cũng sẽ rất là hữu ích

L

Trang 6

phần cuối sẽ xoay quanh các kiến thức khác của nền tảng DirectX như xử lý âm thanh thông qua DirectSound, lấy các thông tin đầu vào từ người dùng thông qua DirectInput Quyển sách kết thúc bằng một dự án minh hoạ nhỏ với hi vọng đem đến cho bạn một cái nhìn toàn cảnh hơn về tất các các kiến thức chúng ta đã học và áp dụng cụ thể chúng như thế nào

Nếu bạn đã từng làm quen với môi trường DirectX và cũng đã từng viết một vài ứng dụng

sử dụng nền tảng này, bạn có thể bỏ qua phần một Tôi nghĩ rằng bất kỳ ai khi mới tiếp cận với môi trường lập trình game và DirectX nên đọc quyển sách này một cách tuần tự

để có thể hiểu hết được những khả năng mà DirectX có thể đem lại

Trang 7

Chương 1

DirectX là gì, tại sao và làm thế nào để sử dụng nó

Chương 2

Ví dụ đầu tiên sử dụng DirectX

Chương 3

Phông nền, khung hình, hoạt cảnh

PHẦN I KIẾN THỨC NỀN TẢNG

Trang 8

DirectX là gì, Tại sao và

Làm thế nào để sử dụng nó

irectX về thực chất là một hệ thống các giao diện lập trình ứng dụng (API) phục

vụ cho quá trình phát triển các game trên nền tảng hệ điều hành Windows Nếu như tại thời điểm một vài năm trước, những người phát triển game thường phải vật lộn với những vấn đề nảy sinh từ sự không tương thích của phần cứng - không thể phát triển những sản phẩm game để tất cả mọi người đều có thể tận hưởng được những tính năng của game đó Thì ngày nay, Microsoft đã đem tới một nền tảng DirectX Nó cung cấp cho những người phát triển game một phương thức đơn nhất, một nền tảng thư viện API “sạch” (đã được chuẩn hoá) để họ có thể viết và chạy trên hầu hết các nền tảng

mà không cần phải lo ngại nhiều về phần cứng của PC Chỉ một vài năm sau khi phiên bản DirectX được đề xuất, số lượng game được phát triển trên nền tảng Windows đã tăng lên một cách nhanh chóng

Trong chương này, chúng ta sẽ đề cập tới các vấn đề:

ƒ DirectX là gì vậy

ƒ Tại sao nó lại hữu dụng đến thế

ƒ Thành phần nào đã xây dựng nên nền tảng DirectX API

DirectX là gì?

D

Trang 9

Những thành phần tạo nên DirectX

Hệ thống thư viện API của DirectX được phân chia ra làm nhiều thành phần nhỏ, mỗi thành phần này đảm nhiệm những nhiệm vụ khác nhau của hệ thống Chúng có thể được

sử dụng hoàn toàn độc lập với nhau, bạn có thể chỉ cần thêm những thành phần nào mà game của bạn cần tới mà thôi Sau đây là danh sách các thành phần đó:

ƒ DirectX Graphic Thành phần này đảm nhiệm tất cả các chức năng kết xuất đồ hoạ của hệ thống Nó cung cấp những hàm API để người dùng có thể quản lý quá trình vẽ 2D cũng như 3D, ngoài ra nó cũng hỗ trợ cả quá trình khởi tạo và xác lập

độ phân giải cho game của bạn

ƒ DirectInput Tất cả những gì người dùng nhập vào sẽ được quản lý bởi các hàm API trong thành phần này Nó bao gồm khả năng hỗ trợ các thiết bị như bàn phím, chuột, gamepad, joystick Với phiên bản mới nhất hiện nay cũng đã hỗ trợ cả các thiết bị tương tác thực (force-feedback) như cần lái, chân ga cho các game đua tốc

độ

ƒ DirectPlay Khả năng kết nối mạng được cung cấp cho những hệ thống game của bạn thông qua thành phần DirectPlay này Những hàm phục vụ kết nối này đem đến cho bạn khả năng phát triển ứng dụng có thể giao tiếp với bất kỳ một máy nào khác, cho phép không chỉ một người có thể chơi game đó DirectPlay đem đến cho bạn một giao diện lập trình cấp cao nhằm giúp bạn tránh khỏi những vấn đề khó

khăn trong quá trình lập trình ứng dụng liên kết mạng

ƒ DirectSound Nếu bạn muốn chèn thêm các hiệu ứng âm thanh hoặc nhạc nền, bạn sẽ cần phải sử dụng tới những hàm API do thành phần này cung cấp Chức năng của DirectSound là cho phép bạn có thể tải và chơi một hoặc nhiều file nhạc

dạng WAV cũng như toàn bộ khả năng điều khiển quá trình chơi nhạc đó

ƒ DirectMusic Thành phần này mang đến cho bạn khả năng tạo các bản nhạc

“động” (tại thời điểm chương trình chạy, không cần phải lưu trữ trong cơ sở dữ liệu của game) Nó có khả năng hỗ trợ hầu hết các chức năng chính của một phần mềm chơi nhạc midi như tự chạy lại theo một qui trình đã xác lập, biến đổi âm lượng để phù hợp với hoạt cảnh trong game, thay đổi nhịp của giai điệu và nhiều

chức năng cao cấp khác

ƒ DirectShow Bạn có thể cắt một hoạt cảnh phim hoặc lồng ghép âm thanh và game của mình thông qua thành phần này AVI, MP3, MPEG và ANF chỉ là một trong

số rất nhiều các loại định dạng file mà DirectShow hỗ trợ Với DirectShow, bạn sẽ không phải tải tất cả các đối tượng file này lên bộ nhớ, thay vào đó là truy cập trực

tiếp dữ liệu trên ổ cứng hoặc CD-ROM

ƒ DirectSetup Sau khi game của bạn đã hoàn thành, bạn sẽ muốn phát hành DirectSetup cung cấp cho bạn những chức năng giúp ứng dụng có thể tự động cài

đặt những phiên bản DirectX mới nhất lên hệ thống của người sử dụng

Chú ý:

Hệ thống đồ hoạ DirectX bao gồm toàn bộ các chức năng của cả DirectDraw và Direct3D Phiên bản DirectX 7.0 là phiên bản cuối cùng phân tách hai thành phần này thành hai đối tượng độc lập.

Trang 10

cũng như những vấn đề khó khăn cần giải quyết Ta có thể ví dụ ra, bởi vì sử dụng cách truy cập trực tiếp giữa mã game và phần cứng, lập trình viên có thể có được toàn bộ sức mạnh cũng như quyền điều khiển của hệ thống, điều nay đem đến khả năng hoạt động với hiệu suất và chất lượng cao của hệ thống game Tuy nhiên, mặt trái của vấn đề là những nhà phát triển game này sẽ phải tự xây dựng cho mình những thư viện hỗ trợ cho từng loại thiết bị phần cứng nếu họ muốn game có khả năng hỗ trợ Nó bao gồm ngay cả những thiết bị rất phổ thông như card âm thanh và đồ hoạ

Tại thời điểm đó, không phải tất cả các thiết bị đều tuân theo một chuẩn nhất định Chính điều này đã làm cho quá trình thao tác trên màn hình đồ hoạ cực kỳ khó khăn đặc biệt khi bạn muốn phát triên các game có độ phân giải trên 320 x 240 pixel Chỉ việc viết các game sử dụng độ phân giải 640 x 480 cũng đã khiến các lập trình viên phải truy cập trực tiếp vào bộ nhớ video và tự mình quản lý toàn bộ quá trình cập nhật các thanh ghi sử lý của card đồ hoạ đó Và họ đã nghĩ rằng đã đến lúc cần phải tìm kiếm một cách đi khác đơn giản và hiệu quả hơn

Khi mà phiên bản Windows 3.1 chính thức phát hành, những vấn đề đó vẫn chưa hề được giải quyết Hơn thế, bởi vì Windows chạy trên nền DOS nên chính nó vô tình đã làm giảm đi tài nguyên hệ thống giành cho các game và nó cũng đã loại bỏ toàn bộ khả năng truy cập trực tiếp mà những nhà phát triển game vẫn hay dùng trước đó từ rất lâu rồi Vậy

là hầu hết các game hỗ trợ Window tại thời điểm đó chủ yếu là những game đánh bài và các game đơn giản khác Trong khi đó các game hành động vẫn tiếp tục được phát triển trên nền tảng DOS

Mặc dù trước đó, Microsoft đã cố gắng cung cấp cho người phát triển một cách cách truy cập nhanh hơn tới các thiết bị đồ hoạ thông qua hệ thống thư viện có tên WinG Nó là tiền thân của DirectX và chỉ hỗ trợ rất ít chức năng WinG thực sự là một ý tưởng hay, tuy nhiên nó vẫn chưa thể đem tới cho những người phát triển khả năng truy cập hệ thống tốt hơn so với những cách mà họ vẫn thích làm trên nền hệ điều hành DOS

Chính vì thế, Microsoft đã có những cải tiến và bổ xung thêm khá nhiều chức năng trong phiên bản đầu tiên DirectX, hay còn được biết tới với cái tên GameSDK (bộ công cụ phát triển game) DirectX đã cung cấp cho các lập trình viên một thư viện độc lập để phát triển, nó là lớp trung gian giữa game và các phần cứng của PC Lúc này thì quá trình thao

Ngày đăng: 27/02/2024, 15:07

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w