使用DirectSound播放声音,改变Volume和Frequency没任何效果!

ZM 2011-04-15 04:15:23
CreateSoundBuffer的地方:
	DSBUFFERDESC dsbdesc;

// Set up DSBUFFERDESC structure.
memset(&dsbdesc, 0, sizeof(DSBUFFERDESC)); // Zero it out.
dsbdesc.dwSize = sizeof(DSBUFFERDESC);
// Need controls (pan, volume, frequency).
dsbdesc.dwFlags = DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFREQUENCY; // assumes that the sound is played often
dsbdesc.dwBufferBytes = pcmwf->nSamplesPerSec * pcmwf->nBlockAlign;;
dsbdesc.lpwfxFormat = pcmwf; // Create buffer.
HRESULT hRes;
if( DS_OK != (hRes = m_lpDirectSound->CreateSoundBuffer(&dsbdesc, &m_pDsb, 0)) ) {
// Failed.
DSError(hRes);
m_pDsb = 0;
return FALSE;
}



改变Volume和Frequency的地方:
	m_pDsb->SetVolume(&dwVol);

m_pDsb->SetFrequency(dwFreq);


大家帮帮忙,先谢了!
...全文
115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZM 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lostying 的回复:]

要设置成DSSCL_PRIORITY或者以上级别才行.
[/Quote]
恩,现在已经工作正常了,谢了!
无言猪 2011-04-15
  • 打赏
  • 举报
回复
要设置成DSSCL_PRIORITY或者以上级别才行.
ZM 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lostying 的回复:]

SetCooperativeLevel设置的是什么级别? DSSCL_PRIORITY?
[/Quote]
m_lpDirectSound->SetCooperativeLevel(pWnd->GetSafeHwnd(), DSSCL_NORMAL);
设置成normal的,这个要怎么设置?
无言猪 2011-04-15
  • 打赏
  • 举报
回复
SetCooperativeLevel设置的是什么级别? DSSCL_PRIORITY?
Tricks of the Windows video Game Programming

PART I Windows Programming Foundations 7
1 Journey into the Abyss 9
A Little History........................................................................................9
Designing Games ..................................................................................13
Types of Games ....................................................................................13
Brainstorming........................................................................................14
The Design Document and Storyboards................................................15
Making the Game Fun ..........................................................................16
The Components of a Game..................................................................16
Section 1: Initialization....................................................................17
Section 2: Enter Game Loop............................................................17
Section 3: Retrieve Player Input ......................................................17
Section 4: Perform AI and Game Logic ..........................................17
Section 5: Render Next Frame ........................................................18
Section 6: Synchronize Display ......................................................18
Section 7: Loop................................................................................18
Section 8: Shutdown ........................................................................18
General Game Programming Guidelines ..............................................21
Using Tools............................................................................................26
C/C++ Compilers ............................................................................26
2D Art Software................................................................................26
Sound Processing Software..............................................................26
3D Modelers ....................................................................................26
Music and MIDI Sequencing Programs ..........................................27
Setting Up to Get Down—Using the Compiler ....................................27
An Example: FreakOut..........................................................................29
Summary................................................................................................46
2 The Windows Programming Model 47
The Genesis of Windows ......................................................................48
Early Windows Versions ..................................................................48
Windows 3.x ....................................................................................48
Windows 95......................................................................................49
Windows 98......................................................................................50
Windows NT ....................................................................................50
Basic Windows Architecture:Win9X/NT........................................50
Multitasking and Multithreading ..........................................................51
Getting Info on the Threads ............................................................52
The Event Model..............................................................................53

0072313618 FM 10/26/99 9:32 AM Page vi
vi
TRICKS OF THE WINDOWS GAME PROGRAMMING GURUS
Programming the Microsoft Way: Hungarian Notation........................55
Variable Naming ..............................................................................56
Function Naming..............................................................................56
Type and Constant Naming..............................................................57
Class Naming....................................................................................57
Parameter Naming............................................................................58
The World’s Simplest Windows Program..............................................58
It All Begins with
WinMain() ..........................................................59
Dissecting the Program....................................................................60
Choosing a Message Box ................................................................63
Real-World Windows Applications (Without Puck)..............................66
The Windows Class ..............................................................................66
Registering the Windows Class ............................................................74
Creating the Window ............................................................................75
The Event Handler ................................................................................77
The Main Event Loop............................................................................84
Making a Real-Time Event Loop..........................................................89
Opening More Windows........................................................................90
Summary................................................................................................93
3 Advanced Windows Programming 95
Using Resources....................................................................................96
Putting Your Resources Together ....................................................98
Using Icon Resources ......................................................................99
Using Cursor Resources ................................................................102
Creating String Table Resources....................................................106
Using Sound
.WAV Resources ........................................................108
Last, But Not Least—Using the Compiler to Create
.RC Files ....114
Working with Menus ..........................................................................116
Creating a Menu ............................................................................116
Loading a Menu..............................................................................119
Responding to Menu Event Messages ..........................................122
Introduction to GDI ............................................................................128
The
WM_PAINT Message Once Again ..............................................128
Video Display Basics and Color....................................................133
RGB and Palletized Modes............................................................135
Basic Text Printing ........................................................................137
Handling Important Events..................................................................143
Window Manipulation....................................................................143
Banging on the Keyboard ..............................................................150
Squeezing the Mouse......................................................................158
Sending Messages Yourself ................................................................161
Summary..............................................................................................163

0072313618 FM 10/26/99 9:32 AM Page vii
vii
CONTENTS
4 Windows GDI, Controls, and Last-Minute Gift Ideas 165
Advanced GDI Graphics......................................................................166
Under the Hood with the Graphics Device Context......................166
Color, Pens, and Brushes................................................................167
Working with Pens ........................................................................168
Painting with Brushes ....................................................................172
Points, Lines, Polygons, and Circles ..................................................173
Straight to the Point........................................................................173
Getting a Line on Things................................................................175
Getting Rectangular........................................................................177
Round and Round She Goes—Circles ..........................................180
Polygon, Polygon,Wherefore Art Thou, Polygon? ......................181
More on Text and Fonts ......................................................................182
Timing Is Everything ..........................................................................184
The
WM_TIMER Message ..................................................................184
Low-Level Timing..........................................................................187
Playing with Controls..........................................................................190
Buttons............................................................................................191
Sending Messages to Child Controls ............................................195
Getting Information ............................................................................197
The T3D Game Console......................................................................205
Summary..............................................................................................210
PART II DirectX and 2D Fundamentals 211
5 DirectX Fundamentals and the Dreaded COM 213
DirectX Primer ....................................................................................214
The HEL and HAL ........................................................................216
The DirectX Foundation Classes in Depth ....................................216
COM: Is It the Work of Microsoft… or Demons?..............................218
What Exactly Is a COM Object?....................................................219
More on Interface IDs and GUIDs ................................................223
Building a Quasi-COM Object ......................................................224
A Quick Recap of COM ................................................................226
A Working COM Program ............................................................226
Working with DirectX COM Objects..................................................231
COM and Function Pointers ..........................................................232
Creating and Using DirectX Interfaces..........................................236
Querying for Interfaces..................................................................237
The Future of COM ............................................................................238
Summary..............................................................................................239

0072313618 FM 10/26/99 9:32 AM Page viii
viii
TRICKS OF THE WINDOWS GAME PROGRAMMING GURUS
6 First Contact: DirectDraw 241
The Interfaces of DirectDraw..............................................................242
Interface Characteristics ................................................................242
Using the Interfaces Together ........................................................244
Creating a DirectDraw Object ............................................................245
Error Handling with DirectDraw....................................................246
Getting an Interface Lift ................................................................247
Cooperating with Windows ................................................................250
Getting into the Mode of Things ........................................................255
The Subtleties of Color........................................................................259
Building a Display Surface..................................................................263
Creating a Primary Surface............................................................264
Attaching the Palette......................................................................272
Plotting Pixels ................................................................................272
Cleaning Up....................................................................................284
Summary..............................................................................................285
7 Advanced DirectDraw and Bitmapped Graphics 287
Working with High-Color Modes........................................................288
16-Bit High-Color Mode................................................................289
Getting the Pixel Format................................................................290
24/32-Bit High-Color Mode ..........................................................299
Double Buffering ................................................................................301
Surface Dynamics................................................................................307
Page Flipping ......................................................................................311
Using the Blitter ..................................................................................317
Using the Blitter for Memory Filling ............................................320
Copying Bitmaps from Surface to Surface....................................328
Clipper Fundamentals..........................................................................332
Clipping Pixels to a Viewport ........................................................332
Clipping Bitmaps the Hard Way....................................................334
Making a DirectDraw Clip with
IDirectDrawClipper..................339
Working with Bitmaps ........................................................................345
Loading
.BMP files..........................................................................345
Working with Bitmaps....................................................................352
Loading an 8-Bit Bitmap................................................................353
Loading a 16-Bit Bitmap................................................................354
Loading a 24-Bit Bitmap................................................................355
Last Word on Bitmaps....................................................................356
Offscreen Surfaces ..............................................................................356
Creating Offscreen Surfaces ..........................................................356
Blitting Offscreen Surfaces............................................................358
Setting Up the Blitter......................................................................359
Color Keys......................................................................................360
Source Color Keying......................................................................361

0072313618 FM 10/26/99 9:32 AM Page ix
ix
CONTENTS
Destination Color Keying ..............................................................364
Using the Blitter (Finally!) ............................................................365
Bitmap Rotation and Scaling ..............................................................366
Discrete Sampling Theory ..................................................................368
Color Effects........................................................................................373
Color Animation in 256-Color Modes ..........................................373
Color Rotation in 256-Color Modes..............................................379
Tricks with RGB Modes ................................................................381
Manual Color Transforms and Lookup Tables....................................381
The New DirectX Color and Gamma Controls Interface....................382
Mixing GDI and DirectX ....................................................................383
Getting the Lowdown on DirectDraw ................................................386
The Main DirectDraw Object ........................................................386
Surfing on Surfaces........................................................................388
Playing with Palettes......................................................................389
Using DirectDraw in Windowed Modes..............................................390
Drawing Pixels in a Window..........................................................392
Finding the Real Client Area (51)..................................................395
Clipping a DirectX Window ..........................................................397
Working with 8-Bit Windowed Modes..........................................398
Summary..............................................................................................400
8 Vector Rasterization and 2D Transformations 401
Drawing Lines......................................................................................402
Bresenham’s Algorithm..................................................................403
Speeding Up the Algorithm............................................................409
Basic 2D Clipping................................................................................411
Computing the Intersection of Two Lines Using the Point
Slope Form ..................................................................................413
Computing the Intersection of Two Lines Using
the General Form ........................................................................416
Computing the Intersection of Two Lines Using
the Matrix Form ..........................................................................416
Clipping the Line............................................................................419
The Cohen-Sutherland Algorithm..................................................420
Wireframe Polygons............................................................................427
Polygon Data Structures ................................................................428
Drawing and Clipping Polygons....................................................430
Transformations in the 2D Plane ........................................................432
Translation......................................................................................433
Rotation..........................................................................................435
Scaling............................................................................................445
Introduction to Matrices......................................................................446
The Identity Matrix........................................................................448
Matrix Addition..............................................................................449

0072313618 FM 10/26/99 9:32 AM Page x
x
TRICKS OF THE WINDOWS GAME PROGRAMMING GURUS
Matrix Multiplication ....................................................................449
Transformations Using Matrices....................................................452
Translation ..........................................................................................454
Scaling..................................................................................................455
Rotation................................................................................................455
Solid Filled Polygons ..........................................................................458
Types of Triangles and Quadrilaterals............................................459
Drawing Triangles and Quadrilaterals............................................461
Triangular Deconstruction Details ................................................464
The General Case of Rasterizing a Quadrilateral..........................472
Triangulating Quads ......................................................................473
Collision Detection with Polygons......................................................478
Proximity AKA Bounding Sphere/Circle ......................................478
Bounding Box ................................................................................481
Point Containment..........................................................................484
More on Timing and Synchronization ................................................486
Scrolling and Panning..........................................................................488
Page Scrolling Engines ..................................................................488
Homogeneous Tile Engines............................................................489
Sparse Bitmap Tile Engines ..........................................................494
Fake 3D Isometric Engines..................................................................496
Method 1: Cell-Based, Totally 2D ................................................496
Method 2: Full-Screen-Based, with 2D or 3D
Collision Networks......................................................................498
Method 3: Using Full 3D Math, with a Fixed Camera View ........500
The T3DLIB1 Library ........................................................................500
The Engine Architecture ................................................................500
Basic Definitions............................................................................501
Working Macros ............................................................................502
Data Types and Structures..............................................................503
Global Domination ........................................................................506
The DirectDraw Interface ..............................................................507
2D Polygon Functions....................................................................511
2D Graphic Primitives....................................................................513
Math and Error Functions..............................................................517
Bitmap Functions............................................................................519
Palette Functions............................................................................522
Utility Functions ............................................................................525
The BOB (Blitter Object) Engine........................................................527
Summary..............................................................................................535
9 Uplinking with DirectInput and Force Feedback 537
The Input Loop Revisited....................................................................538
DirectInput Overture............................................................................539
The Components of DirectInput ....................................................541
The General Steps for Setting Up DirectInput ..............................542

0072313618 FM 10/26/99 9:32 AM Page xi
xi
CONTENTS
Data Acquisition Modes ................................................................544
Creating the Main DirectInput Object............................................544
The 101-Key Control Pad ..............................................................546
Problem During Reading: Reacquisition........................................554
Trapping the Mouse........................................................................556
Working the Joystick......................................................................561
Massaging Your Input ....................................................................576
Going Deeper with Force Feedback....................................................579
The Physics of Force Feedback......................................................580
Setting Up Force Feedback............................................................580
A Force Feedback Demo................................................................581
Writing a Generalized Input System:
T3DLIB2.CPP ............................582
The T3D Library at a Glance ........................................................588
Summary..............................................................................................588
10 Sounding Off with DirectSound and DirectMusic 589
Sound Programming on the PC ..........................................................589
And Then There Was Sound…............................................................590
Digital versus MIDISounds Great, Less Filling..............................594
Digital Sound—Let the Bits Begin................................................594
Synthesized Sound and MIDI........................................................596
It’s MIDI Time!..............................................................................597
Sound Hardware..................................................................................598
Wave Table Synthesis ....................................................................598
Wave Guide Synthesis....................................................................598
Digital Recording: Tools and Techniques............................................599
Recording Sounds ..........................................................................600
Processing Your Sounds ................................................................600
DirectSound on the Mic ......................................................................601
Starting Up DirectSound......................................................................602
Understanding the Cooperation Level............................................604
Setting the Cooperation Level........................................................605
Primary and Secondary Sound Buffers ..............................................606
Working with Secondary Buffers ..................................................606
Creating Secondary Sound Buffers................................................607
Writing Data to Secondary Buffers................................................610
Rendering Sounds................................................................................612
Playing a Sound..............................................................................612
Stopping a Sound............................................................................612
Controlling the Volume..................................................................612
Freaking with the Frequency..........................................................613
Panning in 3D ................................................................................614
Making DirectSound Talk Back..........................................................614
Reading Sounds from Disk..................................................................616
The
.WAV Format ............................................................................616
Reading
.WAV Files ........................................................................617

0072313618 FM 10/26/99 9:32 AM Page xii
xii
TRICKS OF THE WINDOWS GAME PROGRAMMING GURUS
DirectMusic: The Great Experiment ..................................................622
DirectMusic Architecture ....................................................................622
Starting Up DirectMusic......................................................................624
Initializing COM............................................................................624
Creating the Performance ..............................................................625
Adding a Port to the Performance..................................................626
Loading a MIDI Segment....................................................................626
Creating the Loader........................................................................627
Loading the MIDI File ..................................................................627
Manipulating MIDI Segments ............................................................630
Playing a MIDI Segment................................................................630
Stopping a MIDI Segment..............................................................631
Checking the Status of a MIDI Segment ......................................631
Releasing a MIDI Segment............................................................631
Shutting Down DirectMusic ..........................................................631
A Little DirectMusic Example ......................................................632
The
T3DLIB3 Sound and Music Library ..............................................632
The Header ....................................................................................633
The Types ......................................................................................633
Global Domination ........................................................................634
The DirectSound API Wrapper......................................................635
The DirectMusic API Rapper—Get It?..........................................640
Summary..............................................................................................643
PART III Hard Core Game Programming 645
11 Algorithms, Data Structures, Memory Management,
and Multithreading 647
Data Structures ....................................................................................648
Static Structures and Arrays ..........................................................648
Linked Lists....................................................................................649
Algorithmic Analysis ..........................................................................657
Recursion ............................................................................................659
Trees ....................................................................................................662
Building BSTs................................................................................666
Searching BSTs..............................................................................668
Optimization Theory............................................................................671
Using Your Head ............................................................................671
Mathematical Tricks ......................................................................672
Fixed-Point Math............................................................................673
Unrolling the Loop ........................................................................677
Look-Up Tables..............................................................................678
Assembly Language ......................................................................679
Making Demos ....................................................................................680
Prerecorded Demos........................................................................680
AI-Controlled Demos ....................................................................682

0072313618 FM 10/26/99 9:32 AM Page xiii
xiii
CONTENTS
Strategies for Saving the Game ..........................................................682
Implementing Multiple Players ..........................................................683
Taking Turns ..................................................................................683
Split-Screen Setups ........................................................................684
Multithreaded Programming Techniques ............................................685
Multithreaded Programming Terminology ....................................686
Why Use Threads in a Game?........................................................687
Conjuring a Thread from the Plasma Pool ....................................689
Sending Messages from Thread to Thread ....................................697
Waiting for the Right Moment ......................................................702
Multithreading and DirectX ..........................................................709
Advanced Multithreading ..............................................................711
Summary..............................................................................................711
12 Making Silicon Think with Artificial Intelligence 713
Artificial Intelligence Primer ..............................................................714
Deterministic AI Algorithms................................................................715
Random Motion..............................................................................716
Tracking Algorithms ......................................................................717
Anti-Tracking: Evasion Algorithms ..............................................722
Patterns and Basic Control Scripting ..................................................722
Basic Patterns ................................................................................723
Patterns with Conditional Logic Processing..................................727
Modeling Behavioral State Systems....................................................729
Elementary State Machines............................................................730
Adding More Robust Behaviors with Personality..........................734
Modeling Memory and Learning with Software ................................736
Planning and Decision Trees ..............................................................740
Coding Plans ..................................................................................742
Implementing a Real Planner ........................................................745
Pathfinding ..........................................................................................747
Trial and Error................................................................................748
Contour Tracing..............................................................................749
Collision Avoidance Tracks............................................................749
Waypoint Pathfinding ....................................................................750
A Racing Example..........................................................................753
Robust Pathfinding ........................................................................754
Advanced AI Scripting ........................................................................759
Designing the Scripting Language ................................................759
Using the C/C++ Compiler............................................................762
Artificial Neural Networks..................................................................767
Genetic Algorithms..............................................................................770
Fuzzy Logic ........................................................................................772
Normal Set Theory ........................................................................773
Fuzzy Set Theory............................................................................774

0072313618 FM 10/26/99 9:32 AM Page xiv
xiv
TRICKS OF THE WINDOWS GAME PROGRAMMING GURUS
Fuzzy Linguistic Variables and Rules............................................776
Fuzzy Manifolds and Membership ................................................779
Fuzzy Associative Matrices............................................................783
Processing the FAM with the Fuzzified Inputs..............................787
Warm and Fuzzy ............................................................................794
Building Real AI for Games................................................................794
Summary..............................................................................................795
13 Playing God: Basic Physics Modeling 797
Fundamental Laws of Physics ............................................................798
Mass (m) ........................................................................................799
Time (t) ..........................................................................................799
Position (s)......................................................................................800
Velocity (v) ....................................................................................802
Acceleration (a)..............................................................................804
Force (F) ........................................................................................807
Forces in Higher Dimensions ........................................................808
Momentum (P)................................................................................809
The Physics of Linear Momentum: Conservation and Transfer ........810
Modeling Gravity Effects....................................................................813
Modeling a Gravity Well................................................................815
Modeling Projectile Trajectories....................................................818
The Evil Head of Friction....................................................................821
Basic Friction Concepts..................................................................821
Friction on an Inclined Plane (Advanced) ....................................823
Basic Ad Hoc Collision Response ......................................................828
Simple x,y Bounce Physics............................................................828
Computing the Collision Response with Planes of
Any Orientation ..........................................................................830
An Example of Vector Reflection..................................................834
Intersection of Line Segments........................................................835
Real 2D Object-to-Object Collision Response (Advanced)................841
Resolving the n-t Coordinate System..................................................846
Simple Kinematics ..............................................................................853
Solving the Forward Kinematic Problem ......................................854
Solving the Inverse Kinematic Problem ........................................858
Particle Systems ..................................................................................859
What Every Particle Needs ............................................................859
Designing a Particle Engine ..........................................................860
The Particle Engine Software ........................................................861
Generating the Initial Conditions ..................................................866
Putting the Particle System Together ............................................869
Playing God: Constructing Physics Models for Games......................870
Data Structures for Physics Modeling............................................870
Frame-Based Versus Time-Based Modeling..................................871
Summary..............................................................................................873

0072313618 FM 10/26/99 9:32 AM Page xv
xv
CONTENTS
14 Putting It All Together: You Got Game! 875
The Initial Design of Outpost..............................................................876
The Story........................................................................................876
Designing the Gameplay................................................................877
The Tools Used to Write the Game ....................................................877
The Game Universe: Scrolling in Space..............................................878
The Player’s Ship: “The Wraith” ........................................................880
The Asteroid Field ..............................................................................882
The Enemies........................................................................................884
The Outposts ..................................................................................885
The Predator Mines........................................................................886
The Gunships..................................................................................888
The Power-Ups....................................................................................891
The HUDS ..........................................................................................892
The Particle System ............................................................................896
Playing the Game ................................................................................896
Compiling Outpost ..............................................................................897
Compilation Files ..........................................................................897
Runtime Files..................................................................................898
Epilogue ..............................................................................................898
P
ART IV Appendixes 901
A What’s on the CD 903
B Installing DirectX and Using the C/C++ Compiler 907
Using the C/C++ Compiler..................................................................908
C Math and Trigonometry Review 911
Trigonometry ......................................................................................911
Vectors..................................................................................................915
Vector Length ................................................................................916
Normalization ................................................................................917
Scalar Multiplication......................................................................917
Vector Addition ..............................................................................918
Vector Subtraction..........................................................................919
The Inner Product, or the “Dot” Product ......................................919
The Cross Product..........................................................................921
The Zero Vector..............................................................................923
Position Vectors..............................................................................923
Vectors as Linear Combinations ....................................................924

0072313618 FM 10/26/99 9:32 AM Page xvi
xvi
TRICKS OF THE WINDOWS GAME PROGRAMMING GURUS
D C++ Primer 925
What Is C++? ......................................................................................925
The Minimum You Need to Know About C++ ..................................928
New Types, Keywords, and Conventions............................................929
Comments ......................................................................................929
Constants........................................................................................929
Referential Variables ......................................................................929
Creating Variables On-the-Fly........................................................930
Memory Management..........................................................................931
Stream I/O............................................................................................932
Classes..................................................................................................934
The New Struct in Town ................................................................934
Just a Simple Class ........................................................................935
Public Versus Private......................................................................936
Class Member Functions (A.K.A. Methods) ................................937
Constructors and Destructors ........................................................938
Writing a Constructor ....................................................................939
Writing a Destructor ......................................................................941
The Scope Resolution Operator ..........................................................943
Function and Operator Overloading....................................................945
Summary..............................................................................................947
E Game Programming Resources 949
Game Programming Sites....................................................................949
Download Points..................................................................................950
2D/3D Engines ....................................................................................950
Game Programming Books..................................................................951
Microsoft DirectX Multimedia Exposition..........................................951
Usenet Newsgroups ............................................................................951
Keeping Up with the Industry: Blues News........................................952
Game Development Magazines ..........................................................952
Game Web Site Developers ................................................................953
Xtreme Games LLC ............................................................................953
F ASCII Tables 955
Index 961

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧