ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° – Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π° Π±Π°Π·Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ DirectX ΠΈ PhysX

Π”ΠΈΠΏΠ»ΠΎΠΌΠ½Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Для построСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ€ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 3 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° — это ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС (x, y, z) ΠΈ Ρ†Π²Π΅Ρ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹. Для создания объСмной Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ понадобится созданиС Π±ΡƒΡ„Π΅Ρ€Π° индСксов ΠΈ Π±ΡƒΡ„Π΅Ρ€Π° Π²Π΅Ρ€ΡˆΠΈΠ½. ΠšΠ°ΠΆΠ΄ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π½ΡƒΠΆΠ½ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎ Ρ€Π°ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Из Π²ΡΠ΅Π³ΠΎ этого слСдуСт Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ слоТнСС ΠΊΡƒΠ±Π°… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° – Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π° Π±Π°Π·Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ DirectX ΠΈ PhysX (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π”Π˜ΠŸΠ›ΠžΠœΠΠ«Π™ ΠŸΠ ΠžΠ•ΠšΠ’

Π’Π΅ΠΌΠ°: «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° — Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π° Π±Π°Π·Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ DirectX ΠΈ PhysX»

1.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π’ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΌΠΈΡ€Π΅ практичСски ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, нСзависимо ΠΎΡ‚ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°, врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ ΠΈ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ срСдствами ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠžΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ влияниС Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΎΠΊΠ°Π·Π°Π»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€Ρ‹. МногиС ΠΈΠ· Π½Π°Ρ проводят досуг Π·Π° ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ квСста ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ уровня Π² Ρ€ΠΎΠ»Π΅Π²ΠΎΠΉ ΠΈΠ³Ρ€Π΅. Π’Π°ΠΊ ΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€ — ΠΎΡ‡Π΅Π½ΡŒ выгодная сфСра Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½Π° Ρ„ΠΎΠ½Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… областСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Главная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈΠ³Ρ€ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΎΠ½ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡŽΡ‚ свою ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь выходят Π½ΠΎΠ²Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹, Π½ΠΎΠ²Ρ‹Π΅ ΠΆΠ°Π½Ρ€Ρ‹ ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ запросам соврСмСнных ΠΈΠ³Ρ€, Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, выходят Π½ΠΎΠ²Ρ‹Π΅ тСхнологичСскиС срСдства ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ³Ρ€Ρ‹ приносят ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ своим нСпосрСдствСнным Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, Π½ΠΎ ΠΈ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ отрасли Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… срСдств.

Появились ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹ практичСски вмСстС с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ. Π’ Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΈΠ³Ρ€Ρ‹ прСдставляли ΠΈΠ· ΡΠ΅Π±Ρ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ ΠΌΠΎΠ½ΠΎΡ…Ρ€ΠΎΠΌΠ½Ρ‹Π΅ (Π² ΡΠΈΠ»Ρƒ Π΄Π²ΡƒΡ… цвСтности ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΎΠ²) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ стали ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ графичСский Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ устройства Π²Π²ΠΎΠ΄Π°, ΠΈΠ³Ρ€Ρ‹ стали интСрСснСС ΠΈ ΠΊΡ€Π°ΡΠΎΡ‡Π½Π΅Π΅. Π‘ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ всС Π±ΠΎΠ»Π΅Π΅ слоТными ΠΈ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Одним ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… Π²Π°ΠΆΠ½Ρ‹Ρ… достиТСний ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ появлСниС срСдств расчСта Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ пространства, вСдь Π΄ΠΎ ΡΡ‚ΠΎΠ³ΠΎ программистам ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹.

Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΏΠΎΠΌΠΈΠΌΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² ΠΈΠ³Ρ€Π°Ρ… ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ всС Π±ΠΎΠ»Π΅Π΅ кинСматичСской, Ρ€Π°Π·Π²ΠΈΠ²Π°Π»ΠΈΡΡŒ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ модСлирования физичСского повСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ΠΊΡƒΠΏΠ΅ с ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ графичСскими Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚Π°Π½Π΄Π΅ΠΌ прСдставляСт собой прСкрасноС ΠΏΠΎΠ΄ΡΠΏΠΎΡ€ΡŒΠ΅ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ³Ρ€.

Данная Ρ€Π°Π±ΠΎΡ‚Π° посвящСна Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°. Для написания ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ язык C++, для Π²Ρ‹Π²ΠΎΠ΄Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ графичСский ΠΏΠ°ΠΊΠ΅Ρ‚ DirectX9, Π° Π΄Π»Ρ взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² — физичСский Π΄Π²ΠΈΠΆΠΎΠΊ PhysX.

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ — любой срСднСстатистичСский ΠΈΠ³Ρ€Π°ΡŽΡ‰ΠΈΠΉ Π² Π½ΠΈΡ… Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ запросто ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ возраст ΠΈΠ³Ρ€Ρ‹, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ Π³ΠΎΠ΄Π°. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΈΠΉ ΠΈ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ аспСктов. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΠ³Ρ€Ρ‹ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠΊΠΎΠ»ΠΎ Π³ΠΎΠ΄Π° ΠΈ Π·Π° ΡΡ‚ΠΎ врСмя Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ уходят Π²ΠΏΠ΅Ρ€Π΅Π΄. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€ вся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° дСлСгируСтся Π½Π° Π³Ρ€ΡƒΠΏΠΏΡƒ людСй, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ занимаСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ, профСссионалом ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ ΡΠ²Π»ΡΡŽΡ‚ся. Π’ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ энтузиастов ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΅ΡΡ‚ΡŒ программисты, Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρ‹, сцСнаристы, звукорСТиссСры ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΡΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 3D-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Главная Π·Π°Π΄Π°Ρ‡Π° Π»Π΅ΠΆΠΈΡ‚ Π½Π° ΠΏΠ»Π΅Ρ‡Π°Ρ… программистов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ «Π΄Π²ΠΈΠΆΠΎΠΊ» ΠΈΠ³Ρ€Ρ‹. «Π”Π²ΠΈΠΆΠΎΠΊ» — это сСрдцС ΠΈΠ³Ρ€Ρ‹. Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΈΠ³Ρ€Ρ‹ ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ: ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, искусствСнный ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚, просчСт столкновСний, Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ·ΠΊΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависят Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚ ΠΆΠ°Π½Ρ€Π° ΠΈΠ³Ρ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, подсчСт ΠΎΡ‡ΠΊΠΎΠ².

Π’ ΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ практичСски всС ΠΈΡ… Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ², ΠΊΡ€ΠΎΠΌΠ΅ искусствСнного ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π°, Π² ΡΠΈΠ»Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΉ для всСх ΠΈΠ³Ρ€.

Π“Π»Π°Π²Π½Ρ‹ΠΌ свойством Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° считаСтся Π΅Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. Π§Π΅ΠΌ большСС количСство ΠΈΠ³Ρ€ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°, Ρ‚Π΅ΠΌ ΠΎΠ½ Π»ΡƒΡ‡ΡˆΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ³Ρ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄ собой свой собствСнный Π΄Π²ΠΈΠΆΠΎΠΊ. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ привСсти Π΄Π²ΠΈΠΆΠΎΠΊ SOURSE, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ VALVE Π² 2005 Π³ΠΎΠ΄Ρƒ ΠΈ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π΄ΠΎ ΡΠΈΡ… ΠΏΠΎΡ€. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΠ³Ρ€, написанноС Π½Π° Π½Π΅ΠΌ, Π² ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π³ΠΎΠ΄Ρ‹ сущСствования ΠΏΠ΅Ρ€Π΅Π²Π°Π»ΠΈΠ»ΠΎ Π·Π° Π΄Π΅ΡΡΡ‚ΠΎΠΊ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ структуру ΠΈ Π΅Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ являСтся Ρ‚Π°ΠΊ ΠΆΠ΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ. ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΡ Π±Ρ‹Π»ΠΈ ΠΊΠΎΠ·Ρ‹Ρ€Π΅ΠΌ Π²ΠΎ Π²ΡΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π°.

2. ΠžΠ±Ρ‰Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π’ ΡΡ‚ΠΎΠΉ части прСдставлСно описаниС Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС срСдств программирования ΠΈ ΠΏΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ.

2.1 ЦСль Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

ЦСлью Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ являСтся Π½Π° Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, Π° Π±Π°Π·ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ Π±Π΅Π· Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… Π·Π½Π°Π½ΠΈΠΉ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.

Π”Π²ΠΈΠΆΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π³ΠΈΠ±ΠΊΠΈΠΌ, ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΈ ΠΏΡ€ΠΎΡΡ‚Ρ‹ΠΌ Π² ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΠΈ. Основной Π΅Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ являСтся визуализация, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π²ΠΎΠ΄Π°, просчСт Ρ„ΠΈΠ·ΠΈΠΊΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΌΠΈΡ€Π΅.

2.2 Анализ срСдств программирования

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π‘++ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ DirectX ΠΈ Ρ„изичСского Π΄Π²ΠΈΠΆΠΊΠ° PhysX. Для написания ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² использовался язык программирования ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² высокого уровня — HLSL.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° DirectX прСдставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ аспСктами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ DirectShow прСдставляСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции HAL, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ для всСх Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚. К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, это ΠΊΡ€Π°Π΄Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. АрхитСктура DirectX основываСтся Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ COM, которая прСдставляСт доступ ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ интСрфСйсам Ρ‡Π΅Ρ€Π΅Π· DLL-Π²Ρ‹Π·ΠΎΠ²Ρ‹. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ DirectX практичСски ΠΊ Π»ΡŽΠ±ΠΎΠΉ срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ DLL.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° PhysX прСдставляСт Ρ‚ΠΎΠ±ΠΎΠΉ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для просчСта Ρ„ΠΈΠ·ΠΈΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. ВсС измСнСния ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° сначала ΠΏΡ€ΠΎΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ PhysX, послС Ρ‡Π΅Π³ΠΎ, ΠΏΠΎ ΡΡ€Π΅Π΄ΡΡ‚Π²Π°ΠΌ Π΄Π²ΠΈΠΆΠΊΠ°, Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· DirectX.

Для освоСния DirectX сущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹. Для PhysX Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ Π½Π΅Ρ‚, Ссли Π½Π΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ встроСнныС справочники ΠΏΠΎ Ρ„ункциям ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π»Π° Visual Studio 2012 ΠΎΡ‚ Microsoft. ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠΌΡƒ послуТила простота Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΡ€Π΅Π΄ΠΎΠΉ ΠΈ Π»ΠΈΡ‡Π½Π°Ρ Π½Π΅ΠΏΡ€ΠΈΡΠ·Π½ΡŒ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ срСдствам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’Π°ΠΊ ΠΆΠ΅ Visual Studio ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, срСдства ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ компиляции ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ HLSL ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² — IntelliSense.

2.2.1 ΠžΠ±Π·ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π’ ΡΡ‚ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ срСдства программирования ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

БущСствуСт масса языков, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ DirectX, благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² Π΅Π³ΠΎ основС Π»Π΅ΠΆΠΈΡ‚ тСхнология COM. Π’ΠΎΠΆΠ΅ самоС относится ΠΈ ΠΊ PhysX. Бвязка Π΄Π°Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с Π‘++ являСтся самой популярной, Π½ΠΎ ΡΡ‚ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‹Π΅ схСмы Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹.

Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ языка Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык Delphi, Π° Π΄Π»Ρ Π²Ρ‹Π²ΠΎΠ΄Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ — OpenGL. Π€ΠΈΠ·ΠΈΠΊΡƒ Ρ‚Π°ΠΊ ΠΆΠ΅ прСкрасно ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎ ΡΡ€Π΅Π΄ΡΡ‚Π²ΠΎΠΌ физичСского Π΄Π²ΠΈΠΆΠΊΠ° Bullet.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ Π‘++, DirectX ΠΈ PhysX. ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠΌΡƒ слуТило наибольшС количСство справочного ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ….

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ€Π΅Π²ΠΈΠ·ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π΅ ΡΠ°ΠΌΡ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅, Π½ΠΎ ΠΈ Π½Π΅ старыС вСрсии. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π½ΠΎΠ²Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΌΠ΅Π½Π΅Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ мСньшС справочного ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, написаниС Π΄Π²ΠΈΠΆΠΊΠ° — самая слоТная Ρ‡Π°ΡΡ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ³Ρ€Ρ‹. На Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌ Π΄Π²ΠΈΠΆΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ любого ΠΆΠ°Π½Ρ€Π° ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π°, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ ΡΡ‚ратСгия ΠΈΠ»ΠΈ космо-симулятор.

2.2.2 ОписаниС языка

Π―Π·Ρ‹ΠΊ Π‘++ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… популярных срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Он ΡΠ²Π»ΡΠ΅Ρ‚ся Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ практичСски любого назначСния. Π―Π·Ρ‹ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, адрСсами ΠΈ ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ.

Π‘Π°ΠΌΠ° структура языка Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ программисту ΠΏΠΎΠ»Π½ΡƒΡŽ Π²Π»Π°ΡΡ‚ΡŒ Π½Π°Π΄ происходящим. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Π΅ΠΉ языка, приводящая ΠΊ Ρ€Π°ΡΡ…ΠΎΠ΄Π°ΠΌ рСсурсов, Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. ΠŸΡ€ΠΎΡ‰Π΅ говоря — Ссли Π½ΡƒΠΆΠ½ΠΎ, Π‘++ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€Π΅ΠΊΡ€Π°ΡΠ½ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Visual Studio 2012. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ любой слоТности Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… языках ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚авляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π’Π°ΠΊ ΠΆΠ΅ Microsoft прСдоставляСт мноТСство справочного ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ вопросу. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ Ρ‚рСбуСтся ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Π½ΠΎ Π΄Π»Ρ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ DirectX ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ мощная Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π° с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ DirectX.

2.2.3 ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘++ формируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΡƒΠΊΠ², Ρ†ΠΈΡ„Ρ€ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов.

Π’ Π‘++ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π°, которая ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊ ΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ считаСтся вынСсСниС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» (.h), Π° ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Ρ„Π°ΠΉΠ» исходного ΠΊΠΎΠ΄Π° (.срр).

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ являСтся динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ. Для этого исходный ΠΊΠΎΠ΄ скомпилирован Π² Ρ„Π°ΠΉΠ» DLL.

Π―Π·Ρ‹ΠΊ Π‘++ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, наряду с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΡΠ°ΠΌ программист. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ послСдних Ρ‡Π°Ρ‰Π΅ всСго Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ классы ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ для Π‘++ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…:

Β· Int — цСлочислСнный

Β· Float — число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ

Β· Char — символ

Β· Double — число Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности

Β· Long — Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ int

Β· Short — ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ int

Β· Bool — логичСский НиТС прСдставлСны всС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова Π² ΡΠ·Ρ‹ΠΊΠ΅ Π‘++.

alignas (начиная с C++11)

alignof (начиная с C++11)

and

and_eq

asm

auto (1)

bitand

bitor

bool

break

case

catch

char

char16_t (начиная с C++11)

char32_t (начиная с C++11)

class

compl

const

constexpr (начиная с C++11)

const_cast

continue

decltype (начиная с C++11)

default (1)

delete (1)

do

double

dynamic_cast

else

enum

explicit

export

extern

false

float

for

friend

goto

if

inline

int

long

mutable

namespace

new

noexcept (начиная с C++11)

not

not_eq

nullptr (начиная с C++11)

operator

or

or_eq

private

protected

public

register

reinterpret_cast

return

short

signed

sizeof

static

static_assert (начиная с C++11)

static_cast

struct

switch

template

this

thread_local (начиная с C++11)

throw

true

try

typedef

typeid

typename

union

unsigned

using (1)

virtual

void

volatile

wchar_t

while

xor

xor_eq

2.2.4 Бпособы структурирования

1 ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π―Π·Ρ‹ΠΊ Π‘++ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ программирования. Π’Π°ΠΊ ΠΆΠ΅ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ мСсто. Для этого Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ значСния, Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΈΠΏΡ‹ входящих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π­Ρ‚ΠΎ избавляСт программиста ΠΎΡ‚ Ρ€ΡΠ΄Π° Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… дСйствий.

Π’Π°ΠΊ ΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ написания ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ — для этого достаточно Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ void.

ΠœΠΎΠ΄ΡƒΠ»ΠΈ

Π―Π·Ρ‹ΠΊ Π‘++ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ основного Ρ„Π°ΠΉΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„Π°ΠΉΠ» исходного ΠΊΠΎΠ΄Π° с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», содСрТащий классы, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, структуры ΠΈ Ρ‚. ΠΏ.

Π€Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Visual Studio ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅. vcxproj, Π° Ρ„Π°ΠΉΠ» Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ — .sln. РСшСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² ΡΠ΅Π±Π΅ нСсколько ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

2.2.5 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСдства языка

Для Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΠΈΡΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСдства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Visual Studio. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС срСда выступаСт ΠΊΠ°ΠΊ компилятор написанного ΠΊΠΎΠ΄Π°, Π° Π²ΡΠ΅ основныС дСйствия происходят Π·Π° ΡΡ‡Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ DirectX ΠΈ PhysX.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ C++ ΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DirectX ΠΈ PhysX Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΠ°ΠΉΡ‚Π΅ Microsoft.com ΠΈ Nvidia.com. БущСствуСт Π΄Π²Π΅ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ DirectX ΠΈ PhysX — для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π΄Π»Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ВСрсии для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² (SDK) ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½Π°Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ вСрсия для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ прСдставляСт собой лишь Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для запуска прилоТСния Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.

DirectX

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ DirectX 9

Direct3D

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ высокоуровнСвый интСрфСйс Retained Mode ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ графичСскиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ интСрфСйс Immediate Mode, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ΠΎΠΌ. Π‘ Π΄Π΅Π²ΡΡ‚ΠΎΠΉ вСрсии Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° новая тСхнология ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ рСалистичности изобраТСния Π² Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ³Ρ€Π°Ρ….

DirectDraw

ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для отобраТСния Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π°. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ прямой доступ ΠΊ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρƒ, Π·Π° ΡΡ‡Ρ‘Ρ‚ Ρ‡Π΅Π³ΠΎ достигаСтся быстрый Π²Ρ‹Π²ΠΎΠ΄ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, ΠΏΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΠΈ Π½Π° ΠΏΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠΉ GDI.

DirectSound

Π‘ΠΎΠ·Π΄Π°Π½ для прямого доступа ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ части Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… ΠΏΠ»Π°Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒ воспроизвСдСниС Π·Π²ΡƒΠΊΠ° ΠΎΡ‚ «Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΎΠ²», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Win32 API.

DirectInput

Π­Ρ‚Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π»ΡŽΠ±Ρ‹Π΅ устройства Π²Π²ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΈΠ»ΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ дТойстики, Ρ€ΡƒΠ»ΠΈ ΠΈ ΠΏΠ΅Π΄Π°Π»ΠΈ, Ρ€ΡƒΡ‡ΠΊΡƒ управлСния ΠΏΠΎΠ»Ρ‘Ρ‚ΠΎΠΌ, свСтовой ΠΊΠ°Ρ€Π°Π½Π΄Π°Ρˆ ΠΈΠ»ΠΈ Touch-Screen. НСкоторыС возмоТности ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСдствами Win32 API, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ быстрый доступ, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… областях DirectInput.

DirectPlay

Π£ΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Тизнь программиста, Ρ€Π΅ΡˆΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ (ΠΈΠ³Ρ€Ρ‹) ΠΏΠΎ ΡΠ΅Ρ‚ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎ ΠΌΠΎΠ΄Π΅ΠΌΡƒ (это навСрняка Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ Π³Π΅ΠΉΠΌΠ΅Ρ€Ρƒ).

DirectSetup

ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для установки DirectX.

DirectShow

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°-тСхнологиях — ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ высококачСствСнноС воспроизвСдСниС ΠΈΠ»ΠΈ Π·Π°Ρ…Π²Π°Ρ‚ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ Π·Π²ΡƒΠΊΠ°.

АрхитСктура доступа базируСтся Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ COM. Π—Π½Π°Ρ‡ΠΈΡ‚, для использования DirectX Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° срСда программирования, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ„ункциям DLL ΠΈΠ· Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° COM.

PhysX

PhysX прСдставляСт ΠΈΠ· ΡΠ΅Π±Ρ физичСский Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ физичСскиС Π·Π°ΠΊΠΎΠ½Ρ‹. Π”Π²ΠΈΠΆΠΎΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠ°ΠΊ Ρ‚Π²Π΅Ρ€Π΄Ρ‹Π΅ Ρ‚Π΅Π»Π°, Ρ‚ΠΊΠ°Π½ΠΈ ΠΈ, Π² ΠΎΠ±ΠΎΠ·Ρ€ΠΈΠΌΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Тидкости. Π’Π°ΠΊ ΠΆΠ΅ позволяСт «ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ» Ρ‚Π΅Π»Π° Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ Π½Π΅ Ρ‚Сряя ΠΏΡ€ΠΈ этом физичСских свойств. PhysX прСкрасно справляСтся с Π΄Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ΠΊΠ°Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ€Π²Π°Ρ‚ΡŒ, Π° Ρ‚Π²Π΅Ρ€Π΄Ρ‹Π΅ Ρ‚Π΅Π»Π° ΡΠΎΠ³Π½ΡƒΡ‚ΡŒ.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ PhysX разрабатывался ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Ageia ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚авлял ΠΈΠ· ΡΠ΅Π±Ρ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ, которая использовалась наряду с Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚ΠΎΠΉ. Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π±Ρ‹Π»Π° ΠΊΡƒΠΏΠ»Π΅Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ NVidia ΠΈ Ρ‡ΠΈΠΏ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„ΠΈΠ·ΠΈΠΊΠΈ Π±Ρ‹Π» ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ Π² ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ графичСскиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ NVidia, AMD Radeon Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ускорСния Ρ„ΠΈΠ·ΠΈΠΊΠΈ. Π’Π°ΠΊ ΠΆΠ΅ PhysX поддСрТиваСтся ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ PS3 ΠΈ XBOX.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅ PhysX ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π²Π΅Ρ€Π΄Ρ‹Ρ… Ρ‚Π΅Π». Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ сцСны Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ физичСских свойств, Π½ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.

3. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ

Π’ ΡΡ‚ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ прСдставлСно ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС назначСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ‚рСбования ΠΊ Π΅Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ям ΠΈ Ρ…арактСристикам.

3.1 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ, Π° Π»ΠΈΡˆΡŒ ΠΏΠΎΠ΄ΡΠΏΠΎΡ€ΡŒΠ΅ΠΌ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния.

3.1.1 НазначСниС Π·Π°Π΄Π°Ρ‡ΠΈ

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована ΠΊΠ°ΠΊ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Ρ‚Π°ΠΊ ΠΈ Π΄Π»Ρ обучСния Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ большС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ простотС ΠΈ ΠΏΠΎΠ½ΡΡ‚ности ΠΊΠΎΠ΄Π°. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌ программистам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, всС возмоТности для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚вования ΠΊΠΎΠ΄Π°.

ЦСль Π·Π°Π΄Π°Ρ‡ΠΈ — созданиС ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ, Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ «Π΄Π²ΠΈΠΆΠΊΠ°» Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Delphi, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DirectX.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС дСйствия:

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π’ DirectX этот процСсс достаточно ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹ΠΉ ΠΈ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ. Π‘ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ вынСсти Π΅Π³ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ, ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ инициализация ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΠΊΡ€Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° происходит ΠΏΡ€ΠΎ Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ полноэкранный Ρ€Π΅ΠΆΠΈΠΌ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, сущСствуСт Π½Π΅ ΠΌΠ°Π»ΠΎ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΈ Π² ΠΎΠΊΠΎΠ½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’ Ρ†Π΅Π»ΡΡ… ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΉ Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΠΊΡ€Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° сСтки ΠΈΠ· Π₯-Ρ„Π°ΠΉΠ»Π°. Π’ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ всСго Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² — это Ρ‚ΠΎΡ‡ΠΊΠ°, ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ ΠΈ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Ρ‚Ρ€Π΅Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠΌ Π² Direct3D, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, являСтся Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ основы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, ΠΈ Π½Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ слоТных Ρ„ΠΈΠ³ΡƒΡ€? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сами видСоускоритСли ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°ΠΌΠΈ, поэтому Π»ΠΎΠ³ΠΈΡ‡Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ «Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒ» с ΡƒΡΡ‚ройством Π½Π° Π΄ΠΎΠ΄Π½ΠΎΠΌ языкС ΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Для построСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ€ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 3 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° — это ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС (x, y, z) ΠΈ Ρ†Π²Π΅Ρ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹. Для создания объСмной Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ понадобится созданиС Π±ΡƒΡ„Π΅Ρ€Π° индСксов ΠΈ Π±ΡƒΡ„Π΅Ρ€Π° Π²Π΅Ρ€ΡˆΠΈΠ½. ΠšΠ°ΠΆΠ΄ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π½ΡƒΠΆΠ½ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎ Ρ€Π°ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Из Π²ΡΠ΅Π³ΠΎ этого слСдуСт Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ слоТнСС ΠΊΡƒΠ±Π°, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ ΠΎΠ΄ΠΈΠ½ час Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. И ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π° Π΅Ρ‰Π΅ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°Ρ‚ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Ρ€Π°ΡΡ‡ΠΈΡ‚Π°Π½Π½ΡƒΡŽ сСтку тСкстуру. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ корпорация Microsoft Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π₯. Π’ Ρ„Π°ΠΉΠ»Π΅ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ «Π₯» ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ информация ΠΎ ΡΠ΅Ρ‚ΠΊΠ΅, тСкстурС, скСлСтС ΠΈ Π΄Π°ΠΆΠ΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. DirectX ΠΈΠΌΠ΅Π΅Ρ‚ ряд ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π₯-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΡΡ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сСтку ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ «Ρ…», Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ этот Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» экспорт Π² ΡΡ‚ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 3D Studio Max, Microsoft выпустил ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ созданыС Π² 3D Studio Max ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ «Ρ…».

Π˜Ρ‚Π°ΠΊ, этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ сСтки ΠΈ, Ссли Π΅ΡΡ‚ΡŒ, тСкстуры ΠΈΠ· Π₯-Ρ„Π°ΠΉΠ»Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ НСобходима функция для натягивания тСкстуры ΠΈΠ· bmp Ρ„Π°ΠΉΠ»Π°, Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

РасчСты полоТСния ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π˜Π³Ρ€ΠΎΠ²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ являСтся: источник освСщСния, ΠΊΠ°ΠΌΠ΅Ρ€Π°, сСтка (загруТСнная ΠΈΠ· Π₯-Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ описаная Π² Ρ€ΡƒΡ‡Π½ΡƒΡŽ). РасчСт полоТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² (Π² ΡΠ»ΡƒΡ‡Π°Π΅ с ΠΈΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΎΠΌ свСта) ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† расчитываСтся ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΈ Π²ΡΠ΅Π³ΠΎ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°). Π§Ρ‚ΠΎ казаСтся сСтки, Ρ‚ΠΎ Ρ‚ΡƒΡ‚ всС достаточно просто — Π΅ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° полоТСния, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π‘ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ всС нСсколько слоТнСС. ΠšΠ°ΠΌΠ΅Ρ€Π° Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ — это пСрсонаТ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌΡƒ пространству ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈΠ³Ρ€ΠΎΠΊΠ° (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ). Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ «Π΄Π²ΠΈΠΆΠΎΠΊ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ пространствС опСрируя ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ.

Π”ΠΈΠΎΠ»ΠΎΠ³ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ВсС Π²Ρ‹ΡˆΠ΅ пСрСчислСныС дСйствия ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ модуля Direct3D. Для Π΄ΠΈΠΎΠ»ΠΎΠ³Π° с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ понадобится ΠΌΠΎΠ΄ΡƒΠ»ΡŒ DirectInput, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ с ΡƒΡΡ‚ройств Π²Π²ΠΎΠ΄Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅ дСйствиС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ WinAPI функциями. Но WinAPI Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Windows, ΠΈ ΡΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сниТаСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹ — это Ρ‚Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ программирования, Π³Π΄Π΅ Π½Π΅Ρ‚ Π»ΠΈΡˆΠ½ΠΈΡ… рСсурсов ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ максимально быстро. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ нюанс Π² Ρ€Π°Π±ΠΎΡ‚Π΅ WinAPI, Ссли Π·Π°ΠΆΠ°Ρ‚ΡŒ ΠΈ Π½Π΅ ΠΎΡ‚ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ³Ρ€ΠΎΠΊΠ° прямо Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ расстояниС) Windows выдаст сообщСниС ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ клавиши, Ρ‡Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎ Π² ΠΈΠ³Ρ€Π΅. DirectInput Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΡƒΡΡ‚ройством Π² ΠΎΠ±Ρ…ΠΎΠ΄ Windows ΠΈ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Π΅Ρ‚ максимальной скорости считывания ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° «Π΄Π²ΠΈΠΆΠΊΠ°» Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ основныС устройства Π²Π²ΠΎΠ΄Π° (ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°, ΠΌΡ‹ΡˆΡŒ), ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΈ, Π² ΡΠΎΠΎΡ‚вСтствии с Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши «left» ΡΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ Π²Π»Π΅Π²ΠΎ).

3.1.2 Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

ВрСбования ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ характСристикам

БущСствуСт мноТСство ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹. Одни Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ быстро ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ минимальноС мСсто Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π½ΠΎ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ слоТСн Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π²Π΅Ρ€Π½ΠΎ ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎ, Π½ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния оставляСт ΠΆΠ΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΠΈ ΠΎΡ‚Π½ΠΈΠΌΠ°ΡŽΡ‚ достаточно процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ‡Π°Π»Π° Π·Π°Π²ΠΈΡΠ°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Π½Π° ΡΠ°ΠΌΠΎΠΌ соврСмСнном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅). Π’Ρ€Π΅Ρ‚ΠΈΠΈ Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹, ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½Ρ‹, Π½ΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ слишком ΠΌΠ½ΠΎΠ³ΠΎ памяти. Найти идСальноС сочитаниС всСх этих качСств подсилу Π½Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠΌΡƒ программисту.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ качСства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚:

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ понятСн. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° являСтся ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½ΠΈΠ΅ программирования Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€, тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΈΠΌ ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½Ρ‹ΠΌ Π»ΡŽΠ±ΠΎΠΌΡƒ программисту, Ρ€Π΅ΡˆΠΈΠ²ΡˆΠ΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π² ΡΠ²ΠΎΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ€Π°Π΄ΠΈ понятности тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. «Π”Π²ΠΈΠΆΠΎΠΊ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ большими возмоТностями для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ программистами Π² ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ числу ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ практичСски Π½Π° Π»ΡŽΠ±ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния, ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСстандартныС устройства ΠΈΠ»ΠΈ срСдства устройств. НапримСр, Π½Π΅ Π²ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρ‹, Ссли Π²Ρ‹Π²ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ языка ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ², Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Ρ€Π°Π±ΠΎΡ‚Π° этого «Π΄Π²ΠΈΠΆΠΊΠ°» Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ.

Π˜Ρ‚Π°ΠΊ, этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΌ, ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΏΡ€ΠΎΡΡ‚Ρ‹ΠΌ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ эти качСства ΡΠ²Π»ΡΡŽΡ‚ΡΡ основными, нСльзя ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π°Ρ‚ΡŒ рСсурсами ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. НСльзя Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ слишком ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ «Π΄Π²ΠΈΠΆΠΎΠΊ» вряд Π»ΠΈ ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ понадобится.

ВрСбования ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ срСдствам

На ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ установлСна опСрационная систСма Windows ΠΈ DirectX 9 послСднСй вСрсии.

Для использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для DirectX 9 ΠΈ ΡΡ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Delphi 7.

ВрСбования ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ срСдствам

На ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Delphi 7. О Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡΡ… ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ рСсурсам ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° для Delphi 7 ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ языка».

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 10 Mb ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ мСста Π½Π° Π΄ΠΈΡΠΊΠ΅. Плюс ΠΊ ΡΡ‚ΠΎΠΌΡƒ 4 Mb ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡ‚ся для размСщСния «Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²».

3.2 ОписаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° (Π±Π»ΠΎΠΊ-схСма)

Π’ ΡΡ‚ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ прСдставлСна краткая Π±Π»ΠΎΠΊ-схСма ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Π΅Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

3.2.1 ОписаниС Π±Π»ΠΎΠΊ-схСмы

ΠŸΡ€ΠΈ запускС прилоТСния происходят ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

1. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° — Π·Π°Π΄Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ свойств ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinAPI.

2. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ DirectX — инициализация Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°, созданиС устройства для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Direct3D, запуск конструктора Π΄Π²ΠΈΠΆΠΊΠ°.

3. БСсконСчный Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний — сообщСния Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ WinAPI Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Если сообщСний Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π²ΠΈΠΆΠΊΠ° ΠΈΠ³Ρ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сцСны ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… с ΡƒΡΡ‚ройств Π²Π²ΠΎΠ΄Π°.

Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ происходит Π»ΠΈΠ±ΠΎ послС ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° сообщСния, Ρ€Π°Π²Π½ΠΎΠ³ΠΎ WM_QUIT, Π»ΠΈΠ±ΠΎ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄Π²ΠΈΠΆΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ, Ссли Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π° клавиша Esc.

3.2.2 ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ Π±Π»ΠΎΠΊ-схСма Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

3.3 ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’ ΡΡ‚ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ прСдставлСны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ характСристики ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Как ΠΈ ΠΎΡ‚ΠΊΡƒΠ΄Π° происходит запуск Π΄Π²ΠΈΠΆΠΊΠ°, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

3.3.1 ОписаниС структуры ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²: Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, 3 модуля, Π₯-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ тСкстуры для тСстирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π€Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° называСтся Game. dpr, это скСлСт ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния. Π’ Π½Π΅ΠΌ происходит инициализация, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий, Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ «Π΄Π²ΠΈΠΆΠΊΠ°». ΠœΠΎΠ΄ΡƒΠ»ΠΈ — dxfunc, GraphEngine, DXGObject. Π€Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΡΡ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ связаны ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. НиТС прСдставлСна схСма взаимодСйствия ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

3.3.2 ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

Π”Π²ΠΈΠΆΠΎΠΊ — это основная Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, всС Π΄Π°Π½Π½Ρ‹Π΅ проходят Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π³ΠΎ. Но Π½Π°Ρ‡Π°Ρ‚ΡŒ стоит с ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ (ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅) Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠΊΠ½Π°, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ сообщСния windows, происходит Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄Π²ΠΈΠΆΠΊΠ° ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ модуля.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌΡƒ описанию Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

wc: TWndClassEx; Класс окна.

pWnd: HWND; Окно.

pMsg: TMsg; БообщСния Windows. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ сообщСния.

pD3D: IDirect3D9=nil; ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Direct3D. Она ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ Π³Π»Π°Π²Π½ΠΎΠΌ устройствС Direct3D.

pD3DDevice: IDirect3DDevice9=nil; ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Direct3D. Она ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΡƒΡΡ‚ройствС Direct3D.

ge:CGraphEngine; ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π²ΠΈΠΆΠΊΠ° ΠΈΠ³Ρ€Ρ‹. Π­Ρ‚Π° пСрСмСнная слуТит для доступа ΠΊ Ρ„ункциям класса, созданного Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Π΄Π²ΠΈΠΆΠΊΠ° ΠΈΠ³Ρ€Ρ‹ (GraphEngine).

ПослС создания ΠΎΠΊΠ½Π°, Π² Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ происходит Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ происходит инициализация ΠΈ Π²Ρ‹Π·ΠΎΠ² конструктора Π΄Π²ΠΈΠΆΠΊΠ°. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ DX3DInit ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Ρ dxfunc ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Direct3D, созданноС ΠΎΠΊΠ½ΠΎ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ — это число Ρ‚ΠΈΠΏΠ° Boolean (логичСский Ρ‚ΠΈΠΏ) True ΠΈΠ»ΠΈ false.

DX3DInit (pD3D, pD3DDevice, pWnd, 800, 600, b)

Если ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π΅Ρ€Π½ΡƒΠ»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False, Π·Π½Π°Ρ‡ΠΈΡ‚, инициализация Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ. Π”Π°Π»Π΅Π΅ производится Π²Ρ‹Π·ΠΎΠ² конструктора Π΄Π²ΠΈΠΆΠΊΠ°

ge:=CGraphEngine.CGraphEngine (pD3DDevice, pWnd);

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΡΡ‚ройство, Π²Ρ‚ΠΎΡ€ΠΎΠΉ — ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Окно ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ пСрСдаСтся Π² Π΄Π²ΠΈΠΆΠΎΠΊ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ устройства Π²Π²ΠΎΠ΄Π° ΠΊ Π½Π΅ΠΌΡƒ. Π’ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ Π΄Π²ΠΈΠΆΠΊΠ° происходит: Π·Π°Π΄Π°Π½ΠΈΠ΅ исходного значСния Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² направлСния, инициализация ΠΌΠ°Ρ‚Ρ€ΠΈΡ†, инициализация устройств Π²Π²ΠΎΠ΄Π° ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Π²Ρ‹Π·ΠΎΠ² конструктора Π΄Π²ΠΈΠΆΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°).

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. Π”Π°Π»Π΅Π΅ Π² Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ShowWindow производится ΠΏΠΎΠΊΠ°Π· ΠΎΠΊΠ½Π°. Π”Π°Π»Π΅Π΅ обновляСм ΠΎΠΊΠ½ΠΎ (UpdateWindow (pWnd);). Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ прослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Direct3D происходят измСнСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠΊΠ½Π°, ΠΈ Π΅ΡΠ»ΠΈ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠΊΠ½ΠΎ здСсь, Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ запуск бСсконСчного Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний.

while (true) do

begin

if (PeekMessage (pmsg, 0, 0, 0, PM_REMOVE)) then

//Ссли Π΅ΡΡ‚ΡŒ сообщСниС, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ

begin

TranslateMessage (pmsg);

DispatchMessage (pmsg);

if (pmsg.message = WM_QUIT) then exit; //Ссли Π½Π°ΠΆΠ°Ρ‚Π° клавиша Π²Ρ‹Ρ…ΠΎΠ΄Π°, Ρ‚ΠΎ

//Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

end

else

GraphEngine (); //Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΄Π²ΠΈΠΆΠΊΠ°

end;

Π’ Ρ†ΠΈΠΊΠ»Π΅ производится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Π΅ΡΡ‚ΡŒ Π»ΠΈ сообщСниС, Ссли Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ ΠΎΠ½ΠΎ обрабатываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ WinAPI Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Если сообщСний Π½Π΅Ρ‚, Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΄Π²ΠΈΠΆΠΊΠ°.

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π²ΠΈΠΆΠΊΠ° происходит ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сцСны. Π‘Π½Π°Ρ‡Π°Π»Π°, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ BeginScene () интСрфСйса IDirect3DDevice9, Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сцСны. Π”Π°Π»Π΅Π΅, Ссли ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΈΠ΄Π΅Ρ‚ очистка экрана ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сцСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ RenderScene (), которая находится Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Π΄Π²ΠΈΠΆΠΊΠ° GraphEngine.

if (SUCCEEDED (pD3DDevice.BeginScene ())) then //Если ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° BeginScene Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°, Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π΄Π²ΠΈΠΆΠΎΠΊ

begin

//очистка экрана

pD3DDevice.Clear (0, nil, D3DCLEAR_TARGET or D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB (255,255,255), 1.0, 0);

ge.RenderScene (); //Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сцСны

pD3DDevice.EndScene (); //ΠΊΠΎΠ½Π΅Ρ† отобраТСния сцСны

end;

pD3DDevice.Present (nil, nil, 0, nil); //Ѐункция для отобраТСния сцСны, Π±Π΅Π· Π½Π΅Π΅ сцСна

//Π½Π΅ сформируСтся

end;

Π’ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ RenderScene () происходят самыС основныС дСйствия.

procedure CGraphEngine. RenderScene ();

var i: integer;

begin

//Ссли функция KeyControl Π²Π΅Ρ€Π½ΡƒΠ»Π° false, Π·Π½Π°Ρ‡ΠΈΡ‚ дальнСйшСС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

//Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° ΡƒΡΡ‚ройства Π²Π²ΠΎΠ΄Π°)

if KeyControl=false then exit; //Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ссли функция KeyControl Π²Π΅Ρ€Π½ΡƒΠ»Π° false

//ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ сцСну

pDevice.SetRenderState (D3DRS_FILLMODE, D3DFILL_SOLID);

pDevice.SetSamplerState (0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);

pDevice.SetSamplerState (0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);

//ΠžΡ‡ΠΈΡ‰Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ устройства Direct3D

pDevice.Clear (0, nil, D3DCLEAR_STENCIL, D3DCOLOR_XRGB (255,255,255), 1.0, 0);

//ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° ΡΠΊΡ€Π°Π½Π΅

for i:=0 to CURRENT_OBJECTS_NUM-1 do

objects[i]. Render (0);

end;

Π’Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ KeyControl, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ логичСский Ρ‚ΠΈΠΏ. Если эта ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Π΅Ρ€Π½ΡƒΠ»Π° false, Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ с ΡƒΡΡ‚Ρ€ΠΎΠΉΡ‚Π² Π²Π²ΠΎΠ΄Π° Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ, Π° ΡΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ дальнСйшСС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла, Ρ‚ΠΎΠ³Π΄Π° функция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Exit). Π”Π°Π»Π΅Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сцСны. ПослС отобраТСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ устройства Direct3D. И ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ — отобраТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΡΠΊΡ€Π°Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Render ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Ρ Π΄Π²ΠΈΠΆΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² DXGObject.

function CDXGObject. Render (ef_index:DWORD):boolean;

var i: integer;

begin

//присваСваСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false

Result:= false;

Positioning ();

// ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

for i:=0 to dwNumMaterials-1 do

begin

pDevice.SetMaterial (pMeshMaterials[i]); //устанавливаСм ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»

if pMeshTextures[i]<>nil then //устанавливаСм тСкстуру, Ссли ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ

pDevice.SetTexture (0, pMeshTextures[i]);

pMesh.DrawSubset (i); //РисуСм сСтку

end;

//функция Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ€Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈ ΠΏΡ€ΠΈΡΠ²Π°Π΅Π²Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true

result:=true;

end;

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° функция ΠΏΡ€ΠΈΠ½Π΅ΠΌΠ°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, это Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ, пСрсонаТи ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΉ Π°Π½Ρ‚ΡƒΡ€Π°ΠΆ). Π—Π΄Π΅ΡΡŒ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: устанавливаСм ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Π½Π° ΡΠΊΡ€Π°Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Positioning ();. Π”Π°Π»Π΅Π΅ Π² Ρ†ΠΈΠΊΠ»Π΅ (Π³Π΄Π΅ dwNumMaterials — количСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²) происходит ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ установка ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, тСкстуры ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сСтки. Если всС эти дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ назначаСтся True, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ эта функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠΊΡƒ ΠΈΠ³Ρ€Ρ‹.

ΠšΡ€ΠΎΠΌΠ΅ всСго Π²Ρ‹ΡˆΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ функция ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий — WindowProc. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСрСдаСтся ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, пСрСмСнная, содСрТащая сообщСния ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π­Ρ‚Π° функция запускаСтся Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΡΠΎΠ±Ρ‹Ρ‚ия.

Π’ Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WindowProc ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΈΠ΄Π΅Ρ‚ конструкция case, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся пСрСмСнная сообщСний msg; Ссли ΠΎΠ½Π° Ρ€Π°Π²Π½Π° WM_CREATE, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚; Ссли msg Ρ€Π°Π²Π½Π° WM_DESTROY, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° освобоТдаСт Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ рСсурсы. Π˜Π½Π°Ρ‡Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DefWindowProc (wnd, msg, wparam, lparam).

3.3.3 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ содСрТит Π² ΡΠ΅Π±Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, созданных программистом, ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Для понимания Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ произвСсти описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅, Π½ΠΎ Π½Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ. А Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‚Π΅Ρ…, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅Ρ‰Π΅ Π½Π΅ ΡˆΠ»ΠΎ Ρ€Π΅Ρ‡ΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ модуля «Π΄Π²ΠΈΠΆΠΊΠ°» ΠΈΠ³Ρ€Ρ‹ — GraphEngine

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹:

NUM_OBJECTS = 20; МаксимальноС количСство ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚Π° пСрСмСнная ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°Ρ…, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° количСства Ρ€Π°Π· повторСния Ρ†ΠΈΠΊΠ»Π°. Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ.

CURRENT_OBJECTS_NUM = 2; РСальноС количСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚Π° константа описана для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ Π»Π΅Π³Ρ‡Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ количСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Она ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

pDevice:IDirect3DDevice9; Устройтво Direct3D

objects:array [0.NUM_OBJECTS] of CDXGObject; Массив ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚Π° пСрСмСнная, Ρ‚ΠΈΠΏΠ° CDXGObject. CDXGObject — это класс, содСрТащийся Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Π΄Π²ΠΈΠΆΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° DXGObject. Π’ ΡΡ‚ΠΎΠΌ массивС содСрТатся Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²ΡΠ΅Ρ… ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ….

lpDI8: IDirectInput8 = nil; Π“Π»Π°Π²Π½ΠΎΠ΅ устройтво DirectInput

lpDIKeyboard: IDirectInputDevice8 = nil; ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°.

lpDIMouse: IDirectInputDevice8 = nil; ΠœΡ‹ΡˆΡŒ.

worldMat, xrMat, yrMat, mvMat: D3DMATRIX; ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ для прСобразования. Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΌΠ°Ρ‚Ρ€Ρ‹Ρ†Ρ‹, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 4×4 ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ полоТСния ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅.

pos, vecLR, vecFB, up: TD3DXVECTOR3; Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ направлСния осмотра. Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ 3 вСщСствСнными числами.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

1. constructor CGraphEngine (pD3DDevice:IDirect3DDevice9; hWnd: HWND); Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ конструктора пСрСдаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΡΡ‚ройство Direct3D, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ имССтся пСрСмСнная w Ρ‚ΠΈΠΏΠ° D3DMATRIX, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для задания ΠΌΠΈΡ€ΠΎΠ²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π’ Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ pDevice назначаСтся устройство, созданноС Π² Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π”Π°Π»Π΅Π΅ задаСтся Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² направлСния, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, коррСктируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ w, ΠΌΠΈΡ€ΠΎΠ²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ назначаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ w. Π”Π°Π»Π΅Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: функция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° — InitGraphObjects () ΠΈ Ρ„ункция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ устройств Π²Π²ΠΎΠ΄Π° — InitDirectInput (hWnd).

2. function InitObject (typ:string;index:integer):boolean; Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° функция ΠΏΡ€ΠΈΠ½Π΅ΠΌΠ°Π΅Ρ‚ строку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТится Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — это индСкс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Π΅Π³ΠΎ порядковый Π½ΠΎΠΌΠ΅Ρ€). ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π² ΡΡ‚ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ происходит Π²Ρ‹Π·ΠΎΠ² конструктора Π΄Π²ΠΈΠΆΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ пСрСдаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΡΡ‚ройство Direct3D. Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ LoadMeshFromFile ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Ρ DXGObject. Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΡΡ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ — сСтка, Π²Ρ‚ΠΎΡ€ΠΎΠΉ — тСкстура. И Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ присвоСниС Π΅ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° true, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ см. Π² прилоТСниях.

3. procedure InitGraphObjects (); Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° вызываСтся Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ модуля. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹: pos, pos1, rot: D3DMATRIX; - ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (rot — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΏΡ€ΠΈ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°); lp, lp1, lp2: TD3DXVECTOR3; - Π²Π΅ΠΊΡ‚ΠΎΡ€Π° направлСния освСщСния. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΠ΄Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² InitObject, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π”Π°Π»Π΅Π΅ задаСтся ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ задаСтся Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ ΠΌΠΈΡ€Π΅. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ SetWorldPos эта ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° пСрСдаСтся Π² Π΄Π²ΠΈΠΆΠΎΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ся Π΅ΠΌΡƒ. ПослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΡΡ‚ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈΠ΄ΡƒΡ‚ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. Они ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹, ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ для этой ситуации — Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ «Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ сСтка Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° располагаСтся Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ «Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°» Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π½Π°Ρ…одился Π² Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС этого вызываСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° SetWorldPos для позиционирования «Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°». ПослСдним дСйствиСм ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ InitGraphObjects ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ источники освСщСния. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° направлСния освСщСния. Π˜Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько. Для установки источника свСта вызываСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° SetLightPos, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° — Π²Π΅ΠΊΡ‚ΠΎΡ€ направлСния освСщСния ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠΈ. Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ссли ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ индСксы, вторая устанавливаСмая Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠ° ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ.

4. procedure RenderScene (); Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° находится Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ public, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π·Π²Π°Ρ‚ΡŒΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Она Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ сцСну. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π² ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ KeyControl, которая ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ с ΡƒΡΡ‚ройств Π²Π²ΠΎΠ΄Π°. Если эта функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ False, Π·Π½Π°Ρ‡ΠΈΡ‚ устройства Π²Π²ΠΎΠ΄Π° Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π² Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ся Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ exit. Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сцСны ΠΈ Π·Π°Π΄Π°ΡŽΡ‚ся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ отобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ интСрфСйса IDirect3DDevice9. ΠžΡ‡ΠΈΡ‰Π°Π΅Ρ‚ΡΡ пСрСмСнная этого интСрфСйса ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° ΡΠΊΡ€Π°Π½Π΅. Для этого организуСтся Ρ†ΠΈΠΊΠ» ΠΎΡ‚ 0 Π΄ΠΎ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² — 1, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ вызываСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° модуля Π΄Π²ΠΈΠΆΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° — Render, которая ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ модуля). На ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° RenderScene заканчиваСтся.

5. procedure InitDirectInput (hWnd: HWND); Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° вызываСтся Π½Π° ΡΡ‚Π°ΠΏΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ся ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ «ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ» ΠΊ Π½Π΅ΠΌΡƒ устройства Π²Π²ΠΎΠ΄Π°. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ «var» (описаниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…) этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ΄Π½Π° пСрСмСнная — dipropdw: TDIPROPDWORD; - структура для задания характСристик ΠΌΡ‹ΡˆΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° создаСтся Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DirectInput с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DirectInput8Create. Π”Π°Π»Π΅Π΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CreateDevice ΠΈ _AddRef () интСрфСйса IDirectInputDevice8 создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ. УстанавливаСтся ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ для «ΠΏΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° SetDataFormat интСрфСйса IDirectInputDevice8. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ°ΠΌΠΈ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π΅ c_dfDIKeyboard ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½ΠΎ Π² ΠΎΡΠΎΠ±Ρ‹Ρ… случаях Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Ρ‘ ΡΠ°ΠΌΠΎΠΌΡƒ. УстанавливаСм ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΊΠΎΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ взаимодСйствия ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° SetCooperativeLevel интСрфСйса IDirectInputDevice8, Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ пСрСдаСтся ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Π°Π»Π΅Π΅ Ρ„Π»Π°Π³ΠΈ (подробности ΠΎ Ρ„Π»Π°Π³Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² DirectX SDK, Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ DirectInput). Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ всСго Π²Ρ‹ΡˆΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ, производится Π·Π°Ρ…Π²Π°Ρ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ интСрфСйса IDirectInputDevice8 — Acquire. АналогичныС дСйствия производятся для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΠΈ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

6. procedure ReleaseDirectInput (); Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ освобоТдСниС Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… DirectInput рСсурсов. Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ ΠΈΡ… ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ. Π‘Π½Π°Ρ‡Π°Π»Π° производится освобоТдСниС устройства ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ ΠΌΡ‹ΡˆΠΈ, Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° DirectInput. Π­Ρ‚Π° функция достаточно проста ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½Π° Π΄Π°ΠΆΠ΅ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Π½Π΅ΠΉ.

7. function KeyControl ():boolean; Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ с ΡƒΡΡ‚ройств Π²Π²ΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ дСйствия Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ происходит установка ΠΌΠ°Ρ‚Ρ€ΠΈΡ†, Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² направлСния ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ освСщСния. Код Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ…. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ — View: D3DMATRIX; - ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° полоТСния ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, bKeyBuffer: array [0.255] of Byte; - Π±ΡƒΡ„Π΅Ρ€-массив клавиш ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, ms: TDIMOUSESTATE; - пСрСмСнная для Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ ΠΌΡ‹ΡˆΠΈ. Π§Ρ‚ΠΎ здСсь происходит — сначала вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ GetDeviceState интСрфСйса IDirectInputDevice8, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ опрос состояния клавиш ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±ΡƒΡ„Π΅Ρ€-массив. Π”Π°Π»Π΅Π΅, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, какая Π½Π°ΠΆΠ°Ρ‚Π° клавиша ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ MoveCamera ΠΈ RotateCamera ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ·ΠΆΠ΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° наТатия клавиши производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ 16-Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ числа 080 (маска Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавиши). Π”Π°Π»Π΅Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ способом производится опрос ΠΌΡ‹ΡˆΠΈ. Π‘Ρ‡ΠΈΡ‚Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€-массив. По Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ наТатия клавиш ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎ Π΄Π²ΡƒΠΌ осям — Ρ… ΠΈ Ρƒ. Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΡΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ RotateCamera. Π’ ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Π½Ρ‹ клавиши ΠΌΡ‹ΡˆΠΈ, Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΈΡ… Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅, это сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ программист ΠΌΠΎΠ³ Π»Π΅Π³ΠΊΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ эти клавиши Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΈΠ³Ρ€Π΅. Π”Π°Π»Π΅Π΅ Π² ΡΡ‚ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° направлСния ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ся ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ полоТСния ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹. О Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ происходит этот процСсс см. Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅ «Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΎ-матСматичСскоС описаниС Π·Π°Π΄Π°Ρ‡ΠΈ».

8. Procedure MoveCamera (fOffset:real; vecModifier: TD3DXVECTOR3); Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΌΠΈΡ€Ρƒ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС матСматичСских дСйствий описано Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ «Π’Π΅Ρ…Π½ΠΈΠΊΠΎ-матСматичСскоС описаниС Π·Π°Π΄Π°Ρ‡ΠΈ». ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° полоТСния ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹. Π˜Ρ‚Π°ΠΊ, сначала Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π·Π°Ρ‚Π΅ΠΌ осущСствляСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ шаг — коррСкция ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

9. procedure RotateCamera (fOffset:real; Axis: integer); Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΎΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ — ось, Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ. Если Axis = 0 ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ производится Π²ΠΎΠΊΡ€ΡƒΠ³ оси Ρƒ, Ссли 1 Ρ‚ΠΎ ΠΏΠΎ Ρ…. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС матСматичСских дСйствий описано Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ «Π’Π΅Ρ…Π½ΠΈΠΊΠΎ-матСматичСскоС описаниС Π·Π°Π΄Π°Ρ‡ΠΈ».

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ модуля «Π΄Π²ΠΈΠΆΠΊΠ°» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° — DXGObject

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹:

MAX_OBJECT_EFFECTS = 10; - МаксимальноС количСство эффСктов (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ установки освСщСния).

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

ВсС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΄Π²ΠΈΠΆΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° описаны Π² ΠΊΠ»Π°ΡΡΠ΅ — Π‘DXGObject.

pDevice:IDirect3DDevice9; - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΡΡ‚ройство Direct3D;

dwNumMaterials:DWord; - Π’ ΡΡ‚ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ хранится количСство Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… элСмСнтов ΠΈΠ· Π₯-Ρ„Π°ΠΉΠ»Π° (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСток).

pMesh:ID3DXMesh; - Π‘Π΅Ρ‚ΠΊΠ° Mesh.

pMeshTextures:PAIDirect3DTexture9; - ВСкстура ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

pMeshMaterials:PAD3DMATERIAL9; - ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

pTexture:array [0.MAX_OBJECT_EFFECTS] of IDirect3DTexture9; - Массив тСкстур.

Light:array [0.MAX_OBJECT_EFFECTS] of D3DLIGHT9; - Массив источников освСщСния.

matWorld: D3DMATRIX; - ΠœΠΈΡ€ΠΎΠ²Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

1. constructor CDXGObject (pD3DDevice:IDirect3DDevice9); ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° конструктору класса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° пСрСдаСтся ΠΎΠ±Ρ€Π°Π·Π΅Ρ† устройства Direct3D. Π”Π°Π»Π΅Π΅ производится ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π·Ρ†Π° устройства Direct3D ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΌΠΈΡ€ΠΎΠ²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

2. procedure LoadMeshFromFile (filename:string; texturename: string); ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π₯-Ρ„Π°ΠΉΠ»Π°. Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ сСтки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° — строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ тСкстуры. Π’ Ρ‚Π΅Π»Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ производится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ дСйствиС — ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ dwNumMaterials назначаСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ LoadMesh, которая находится Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ dxfunc. Π­Ρ‚Π° функция ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π₯-Ρ„Π°ΠΉΠ»Π°.

3. procedure LoadTexture (filename:PAnsiChar; index: integer); - ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ тСкстуры. Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π°, содСрТащСго тСкстуру ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° индСкс тСкстуры (Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько тСкстур). Π’ Ρ‚Π΅Π»Π΅ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ происходит Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Direct3D — D3DXCreateTextureFromFileEx, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ: устройство Direct3D, ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с Ρ‚Скстурой, Ρ„Π»Π°Π³ΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ тСкстуры (элСмСнт массива тСкстур).

4. function GetWorldPos ():D3DMATRIX; - Ѐункция получСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΌΠΈΡ€Π° (ΠΌΠΈΡ€ΠΎΠ²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†ΠΈ). Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΌΠΈΡ€ΠΎΠ²ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.

5. procedure SetWorldPos (matrix:D3DMATRIX); - ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° опрСдСлСния полоТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° опрСдСляСт ΠΌΠΈΡ€ΠΎΠ²ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.

6. procedure SetLightPos (Pos:TD3DXVECTOR3; index: integer); - ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° установки источника освСщСния. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° эта ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ источника свСта. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ пСрСдаСтся индСкс Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠΈ. Π’ Ρ‚Π΅Π»Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ производятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия: Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ структуру Ρ‚ΠΈΠΏΠ° D3DLIGHT9. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этой структуры: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — _Type — Ρ‚ΠΈΠΏ освСщСния, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½ Ρ€Π°Π²Π΅Π½ константС D3DLIGHT_DIRECTIONAL, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ рассСянный свСт. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — Direction, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Π³ΠΎ задаСтся Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ освСщСния (Ρ€Π°Π²Π΅Π½ Pos). Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 4 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ†Π²Π΅Ρ‚ освСщСния (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС всС ΠΎΠ½ΠΈ Ρ€Π°Π²Π½Ρ‹ 1, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ освСщСниС Π±Π΅Π»ΠΎΠ΅). ПослС заполнСния структуры Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΡƒ, это производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetLight интСрфСйса IDirect3DDevice9. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΡƒ — LightEnable.

7. procedure Positioning (); - ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° установки ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ Ρ‚Π΅Π»Π΅ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ производится установка ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetTransform интСрфСйса IDirect3DDevice9. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ — это константа, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ Ρ‚ΠΈΠΏ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†ΠΈ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ D3DTS_WORLD, которая ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это мировая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°). Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° производится Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetWorldPos (Π΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ см. Π²Ρ‹ΡˆΠ΅).

8. function Render (ef_index:DWORD):boolean; - Ѐункция отобраТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° функция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ (индСкс) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ вызываСтся функция Positioning. ПослС установки ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° запускаСтся Ρ†ΠΈΠΊΠ» for ΠΎΡ‚ 0 Π΄ΠΎ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… сСток — 1 (минус ΠΎΠ΄ΠΈΠ½). Π’ Ρ†ΠΈΠΊΠ»Π΅: с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetMaterial интСрфСйса IDirect3DDevice9 устанавливаСм ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», Π΄Π°Π»Π΅Π΅ устанавливаСтся тСкстура, Ссли ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetTexture интСрфСйса IDirect3DDevice9; ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг Ρ†ΠΈΠΊΠ»Π° — ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сСтки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DrawSubset интСрфСйса ID3DXMesh; ΠΊΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π°. Π”Π°Π»Π΅Π΅ присваиваСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ True.

3.3.3.3 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ модуля ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π₯-Ρ„Π°ΠΉΠ»ΠΎΠ² — dxfunc

Π’ΠΈΠΏΡ‹:

PAIDirect3DTexture9 — ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ собой массив Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ размСрности, состоящий ΠΈΠ· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ‚ΠΈΠΏ IDirect3DTexture9. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Скстурами.

PAD3DMATERIAL9 — ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ собой массив Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ размСрности, состоящий ΠΈΠ· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ‚ΠΈΠΏ TD3DMATERIAL9. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ.

PAD3DXMATERIAL — ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ собой массив Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ размСрности, состоящий ΠΈΠ· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ‚ΠΈΠΏ TD3DXMATERIAL. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

1.function DX3DInit (var ppiD3D9: IDirect3D9;

var ppiD3DDevice9: IDirect3DDevice9;

hWnd: THandle;

iWidth, iHeight: Integer;

var bFullScreen: Boolean):Boolean;

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DXDInit:

ppiD3D9 Ρ‚ΠΈΠΏΠ° IDirect3D9 — для хранСния интСрфСйса Direct3D 9-ΠΉ вСрсии;

PPDi3DDevice9 Ρ‚ΠΈΠΏΠ° IDirect3DDevice9 — для хранСния интСрфСйса устройства IDirect3DDevice 9-ΠΉ вСрсии;

hwnd — ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Direct3D-сцСны;

iWidth ΠΈ iHeight — ТСлаСмая ΡˆΠΈΡ€ΠΈΠ½Π° ΠΈ Π²Ρ‹ΡΠΎΡ‚Π° ΠΎΠΊΠ½Π°;

bFullscreen — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Ρ‚ΠΎ, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΏΠΎΠ»Π½ΠΎΡΠΊΡ€Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Если Π΄Π° — сразу Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Π΅ΡΡŒ экран, Π° ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‡Π°Ρ‰Π΅ всСго ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ полноэкранныС прилоТСния, Π±Π΅Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Π² ΡΡ‚ΠΈΡ… Π΄Π²ΡƒΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… происходит Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ дСлаСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ — создаСтся экзСмпляр интСрфСйса IDirect3D9 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DirectΠ—DCreate9 ΠΈ ΡΠΎΡ…раняСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ppiDΠ—D9. Π­Ρ‚ΠΎΡ‚ интСрфСйс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Direct3D ΠΈ Π΄Π»Ρ настройки окруТСния. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ константу D3D_SDK_VERSION (). Π­Ρ‚Π° константа описана Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Direct3D9, ΠΈ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ увСличиваСтся Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии. По Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ константы DirectX опрСдСляСт, являСтся Π»ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ, Ρ‚ΠΎ Ρ„ункция Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ€Π΅ΡˆΠΈΡ‚ пСрСкомпиляция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ.

Π”Π°Π»Π΅Π΅ заполняСтся структура Ρ‚ΠΈΠΏΠ° DΠ—DPRESNT_PARAMETERS, которая опрСдСляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ прСдставлСния. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ структуру, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π΅ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ поля использовали Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС этой структуры см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «ΠžΠ±Ρ‰Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ» / «Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСдства языка» / «DirectX».

Π”Π°Π»Π΅Π΅ слСдуСт запрос Π½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π½ΠΎΡΠΊΡ€Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Если пСрСмСнная iRes Ρ€Π°Π²Π½Π° IDYES, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ слСдуСт Π² ΠΏΠΎΠ»Π½ΠΎΡΠΊΡ€Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’ΠΎΠ³Π΄Π° Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ° Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π΅ Ρ‚ΠΈΠΏΠ° DΠ—DPRESNT_PARAMETERS. Π˜Π½Π°Ρ‡Π΅ (Ссли iRes Π½Π΅ Ρ€Π°Π²Π½ΠΎ IDYES) Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°.

Π”Π°Π»Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ hRes присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CreateDeviсe интСрфСйса IDirect3D9. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ дСйствиСм Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ пСрспСктиву ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ освСщСниС.

2.function LoadMesh (filename:String;

ppiD3DDevice9:IDirect3DDevice9;

var ppMesh: ID3DXMesh;

var pMeshTextures: PAIDirect3DTexture9;

texturefilename: String;

var pMeshMaterials: PAD3DMATERIAL9):DWORD;

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

filename:String; - Имя Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Π₯-Ρ„Π°ΠΉΠ»Π°;

ppiD3DDevice9:IDirect3DDevice9; - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΈΠ½Ρ‚СрфСйс IDirect3DDevice9;

var ppMesh: ID3DXMesh; - пСрСмСнная Ρ‚ΠΈΠΏΠ° ID3DXMesh. Π­Ρ‚ΠΎΡ‚ интСрфСйс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ mesh-повСрхностями;

var pMeshTextures: PAIDirect3DTexture9; - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΌΠ°ΡΡΠΈΠ² интСрфСйса IDirect3DTexture9. Π­Ρ‚ΠΎΡ‚ интСрфСйс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния тСкстур;

texturefilename: String; - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΈΠΌΡ Ρ„Π°ΠΉΠ»Π° тСкстуры ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ИмСна тСкстур ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ прямо Π² Π₯-Ρ„Π°ΠΉΠ»Π΅, Π½ΠΎ Π΅ΡΠ»ΠΈ Ρ‚Π°ΠΌ Π½Π΅Ρ‚ тСкстуры, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Ρ„Π°ΠΉΠ» ΠΈΠ· ΡΡ‚ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Если ΡƒΠΆΠ΅ ΠΈ Π·Π΄Π΅ΡΡŒ тСкстуры Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΎΠ±Ρ‚ягиваСтся тСкстурой;

var pMeshMaterials: PAD3DMATERIAL9: DWORD; - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΌΠ°ΡΡΠΈΠ² структур Ρ‚ΠΈΠΏΠ° D3DMATERIAL9, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

pD3DXMtrlBuffer: ID3DXBUFFER; - это Π±ΡƒΡ„Π΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹;

dwNumMaterials: DWORD; - НСобходима для хранСния количСства Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… сСток.

d3dxMaterials: PAD3DXMATERIAL; - ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π».

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, которая вызываСтся Π² Ρ‚Π΅Π»Π΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ — это D3DXLoadMeshFromX (PAnsiChar (filename), D3DXMESH_SYSTEMMEM, ppiD3DDevice9, nil, @pD3DXMtrlBuffer, nil, @dwNumMaterials, ppMesh); Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΡΡ‚Ρƒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ пСрСдаСтся имя Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΠΎΠΏΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ (ΠΎΠΏΡ†ΠΈΠΉ достаточно ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ D3DXMESH_SYSTEMMEM, которая ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° происходит Π² ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ); ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΡΡ‚ройство Direct3D; Π΄Π°Π»Π΅Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±ΡƒΡ„Π΅Ρ€ для смСТных Π³Ρ€Π°Π½Π΅ΠΉ; ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±ΡƒΡ„Π΅Ρ€ для ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ²; ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±ΡƒΡ„Π΅Ρ€ для экзСмпляров эффСктов; Ρ‡Π΅Ρ€Π΅Π· прСдпослСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ количСство Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ²; ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — это нСпосрСдствСнно ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сСтки.

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΠ² Π΄Π°Π½Π½Ρ‹Π΅, Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈ нСобходимости Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ тСкстуры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСйчас находятся Π² Π±ΡƒΡ„Π΅Ρ€Π΅ pD3DXMtrlBuffer. Π‘Π½Π°Ρ‡Π°Π»Π° опрСдСляСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΡ„Π΅Ρ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° pD3DXMtrlBuffer. GetBufferPointer (); ПослС выполнСния этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ извСстно количСство ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², поэтому Π΄Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ инициализация массивов для ΠΈΡ… Ρ…ранСния. ΠœΠ°ΡΡΠΈΠ²Ρ‹ динамичСскиС ΠΈ ΠΈΡ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ GetMem. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ массив выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ для хранСния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², Π²Ρ‚ΠΎΡ€ΠΎΠΉ для хранСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ количСства тСкстур. Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ запуск Ρ†ΠΈΠΊΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ всС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΎΡ‚ 0 Π΄ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ dwNumMaterials. Π’ Ρ†ΠΈΠΊΠ»Π΅ сначала капируСтся ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π² i-ΠΉ элСмСнт массива pMeshMaterials. Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽΠ² качСствС тСкстуры. Для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ примСняСтся функция D3DXCreateTextureFromFile.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

3.function LoadTexture (text_buf:PByteArray;iWidth, iHeight: Integer; filename: String):Boolean; - Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ тСкстуру ΠΈ Π½Π°Ρ‚ΡΠ½ΡƒΡ‚ΡŒ Π΅Π΅ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, созданный ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ. ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ содСрТаниС этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° (являСтся Π»ΠΈ Ρ„Π°ΠΉΠ» bmp, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΌ рисунком) ΠΈ Π΅ΡΠ»ΠΈ являСтся, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π΅Π³ΠΎ. Π­Ρ‚Π° функция для достаточно ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… случаСв ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ся. Однако Π΅Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ для создания ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ для заставки ΠΈΠ»ΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ мСню. Π’Π΅Π΄ΡŒ слишком Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½Ρ‹ Π±Ρ‹Π»ΠΈ Π±Ρ‹ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сСтки, состоящСй ΠΈΠ· Π΄Π²ΡƒΡ… Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ², ΠΈΠ· Π₯-Ρ„Π°ΠΉΠ»Π°.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ