Thông tin tài liệu:
Directsound Directsound giúp game của bạn đến gần với cuộc sống. Khi bạn dùng những ưu điểm của nhạc nền và hiệu ứng âm thanh, thế giới game bạn tạo ra sẽ có một chiều sâu mới. Chương này sẽ giúp bạn học cách dùng âm thanh hiệu quả trong game. Trong chương này: Directsound là gì? Sử dụng Directsound thế nào? Bộ đệm âm thanh là gì? Chạy một file âm thanh thế nào? Chạy lặp một đoạn âm thanh thế nào? Cài đặt và chỉnh âm lượng? Âm thanh Âm thanh rất quan trọng trong game. Nó...
Nội dung trích xuất từ tài liệu:
Beginning DirectX9 - Chương 10 Dịch bởi TransTeam diễn đàn Gamedev.VNBeginning DirectX9DirectsoundDirectsound giúp game của bạn đến gần với cuộc sống. Khi bạn dùngnhững ưu điểm của nhạc nền và hiệu ứng âm thanh, thế giới game bạn tạora sẽ có một chiều sâu mới. Chương này sẽ giúp bạn học cách dùng âmthanh hiệu quả trong game.Trong chương này:- Directsound là gì?- Sử dụng Directsound thế nào?- Bộ đệm âm thanh là gì?- Chạy một file âm thanh thế nào?- Chạy lặp một đoạn âm thanh thế nào?- Cài đặt và chỉnh âm lượng?Âm thanhÂm thanh rất quan trọng trong game. Nó dùng để cài đặt nhạc hiệu,building tension hoặc chào mừng vào cuối level. Âm thanh giúp bạn tạo ramột môi trường, từ tiếng xe đua chạy vòng quanh trường đua tới tiếngsúng đạn rít qua đầu bạn. DirectX cung cấp cho bạn Directsound, giúp bạndễ dàng thêm một âm thanh vào game.DirectSoundDirectsound cung cấp một giao tiếp lập trình ứng dụng(API) để phát lại âmthanh và âm nhạc. Trước đây, các nhà phát triển phải viết trình hỗ trợ chocác loại cạc âm thanh(soundcard) khác nhau vì họ có nhiệm vụ viết phầnmềm cho từng loại. Với sự ra đời của DirectX và lớp trừu tượng hoá phầncứng của nó(hardware abstraction layer - HAL), nhà phát triển chỉ phải viếtmột tập hợp những hàm chung, hỗ trợ một lượng lớn cạc âm thanh.DirectSound(DS) làm việc như thế nào? 162 Dịch bởi TransTeam diễn đàn Gamedev.VNBeginning DirectX9Quản lý dữ liệu âm thanh thông qua dùng bộ đệm (buffers). Bộ đệm là mộtdiện tích của bộ nhớ chứa dữ liệu âm thanh. Khi bạn cùng DS, bạn có thểcó nhiều bộ đệm lưu giữ bất cứ dữ liệu âm thanh nào bạn muốn load. Sauđó bạn có thể điều khiển và chơi nó trong những bộ đệm đó. DS trộn chúngvới nhau, và cho vào một bộ đệm đơn lẻ. Bộ đệm này chứa âm thanh cuốicùng mà người dùng nghe thấy.Bộ đệm âm thanh có thể nằm ở bộ nhớ của cạc âm thanh hoặc bộ nhớ hệthống.Chú ý:Bộ đệm trên bộ nhớ cạc âm truy cập nhanh hơn trên bộ nhớ hệ thống.Chúng ta nên chọn cách thứ 2 (dùng system memory) để làm bộ đệm âmthanh vì chúng sẽ không làm tốn bộ nhớ của cạc âm.Như vậy, bộ đệm âm thanh là nơi chứa dữ liệu âm thanh. Ví dụ khi bạnload một file Wav để chạy, dữ liệu âm thanh trong file đó sẽ được đặt vàomột bộ đệm âm thanh. Sau đó bạn có thể thay đổi, điều khiển, chạy dữ liệubên trong bộ đệm đó.Dưới đây là những kiểu bộ đệm âm mà DS dùng:- Bộ đệm sơ cấp(primary buffer). Tất cả âm thanh được trộn trong bộđệm sơ cấp. Cạc âm dùng âm thanh đã được hoà trộn trong đó để tạo âmthanh mà bạn nghe được.- Bộ đệm thứ cấp(secondary buffer). Là những bộ đệm chứa tất cả dữliệu âm mà game của bạn cần. DS giúp bạn chạy những âm thanh phứctạp bằng cách truy cập nhiều hơn một bộ đệm thứ cấp một cách đồng thời.- Bộ đệm tĩnh(static buffer). Khi dữ liệu âm có kích thước giới hạn thìbạn có thể tạo một một bộ đệm tĩnh (kích thước cố định). Bộ đệm này chophép load hoàn toàn một âm thanh riêng biệt vào bộ nhớ.- Bộ đệm dòng (buffer). Có lúc âm thanh bạn muốn chơi quá lớn đểcho vào bộ nhớ một lần. Trong trường hợp này, bạn cần một bộ đệm dòng.Bộ đệm dòng chỉ cho phép một phần của âm thanh được load vào bộ nhớtrước khi được phát. Sau khi âm thanh trong bộ đệm được phát, dữ liệuâm mới được load vào bộ nhớ đó.Dùng DirectSoundTrước khi bạn dùng DS, bạn cần biết những bước liên quan. Như nhữngthành phần DX khác, DS cần được khởi tạo trước khi bạn sử dụng nó.Bước đầu tiên để dùng DS là tạo thiết bị DS. Thiết bị này được miêu tả bởigiao tiếp IDirectSound8, cái cung cấpcác phương thức để tạo các bộ đệmâm thanh, thu nhận khả năng của phần cứng xử lý âm thanh, và thiết lậpmức độ hợp tác của cạc âm thanh.Thiết bị DirectsoundThiết bị DS miêu tả một giao tiếp tới một bộ phận của phần cứng về âmthanh trong máy tính của bạn. Để DS hoạt động, bạn phải lựa chọn loại cạcâm thanh và tạo thiết bị DS để miêu tả nó. Bởi thường một máy chỉ có mộtcạc âm nên DS cho phép bạn tạo thiết bị DS dựa trên cạc âm thanh mặc 163 Dịch bởi TransTeam diễn đàn Gamedev.VNBeginning DirectX9định. Nếu máy của bạn có nhiều hơn một cạc, bạn phải liệt kê chúng và tìmra cái mà chương trình của bạn cần.Bạn tạo thiết bị DS bằng cách sử dụng hàm DirectSoundCreate8, địnhnghĩa như sau:HRESULT WINAPI DirectSoundCreate8(LPCGUID lpcGuidDevice,LPDIRECTSOUND8 * ppDS8,LPUNKNOWN pUnkOuter);Hàm này cần ba tham số:- lpcGuidDevice. Nó miêu tả thiết bị âm thanh sẽ sử dụng. Tham sốnày có thể là DSDEVID_DefaultPlayback hoặc NULL. Dùng NULL khi bạnmuốn dùng thiết bị âm thanh mặc định.- ppDS8. Địa chỉ của biến sẽ lưu thiết bị DS mới được tạo ra.- pUnkOuter. Giao tiếp IUnknown của đối tượng điều khiển. Giá trị nàynên để N ...