Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Direct3D8Β»

Автор АлСксСй АлСксандров

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

ВСрсия тСкста: 1.0

ДСмонстрационноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ .exe) (72 kb)

ДСмонстрационноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (исходный ΠΊΠΎΠ΄) (44 kb)

ДСмонстрационноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° всСгда Π±Ρ‹Π»Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых интСрСсных проявлСний развития ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Π”Π°Π²Π½Ρ‹ΠΌ-Π΄Π°Π²Π½ΠΎ, Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π° тСкстовых Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² Π½ΠΈΠΊΡ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС Π½Π΅ ΠΌΠΎΠ³, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ совсСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π·Ρ‹ фантастичСских монстров Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ папьС-машС ΠΈ пластилина, Π° прямо Π½Π° экранС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π­Ρ‚ΠΎ сСйчас всС ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ графичСскому интСрфСйсу, ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° экранС ΡƒΠΆΠ΅ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡˆΡŒ. На самом Π΄Π΅Π»Π΅ Π½Π°Π΄ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ памятник Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ€Π΅ΡˆΠΈΠ» Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΈΠ· тСкстовых символов – Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° искусство Π±Ρ‹Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ распространСно Π² своС врСмя, ΠΈ Π΅Π³ΠΎ отголоски Π΄ΠΎ сих ΠΏΠΎΡ€ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° конфСрСнциях. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ развития ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ интСрСсна сама ΠΏΠΎ сСбС ΠΈ заслуТиваСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, Π½ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ чисто тСхничСский Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€, поэтому ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° этапах становлСния искусства рисования Π½Π° экранС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π°, Π° обратимся сразу ΠΊ нашим дням. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΎΠΌ Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows стали Π΄Π²Π΅ 3D Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: OpenGL ΠΈ Direct3D (Ρ‡Π°ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ DirectX). OpenGL, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΈΡ€ΠΌΠΎΠΉ Silicon Graphics, ΡƒΠΆΠ΅ стал классикой ΠΈ характСризуСтся своСй ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ интСрфСйсов. Напротив, Direct3D, Π΄Π΅Ρ‚ΠΈΡ‰Π΅ Microsoft, постоянно измСняСтся, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠ΅Ρ‚ΡΡ ΠΈ двигаСтся Π²ΠΏΠ΅Ρ€Π΅Π΄. ПослСдняя вСрсия этого ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ 8, ΠΈ это Π½Π΅ ΠΊΠΎΠ½Π΅Ρ†. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ читатСля с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ аспСктами использования этого Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° Π΅Π³ΠΎ отличия ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии ΠΈ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ использованиС для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· вСсьма распространСнных Π·Π°Π΄Π°Ρ‡ – построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с этого сайта ΠΈ свободно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своих прилоТСниях.

DirectX 8.0a SDK ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

ΠΠ½Π³Π»ΠΎΡΠ·Ρ‹Ρ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ DirectX 8.0a Runtime for Windows 95, Windows 98, Windows 98 SE, Windows ME ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

ΠΠ½Π³Π»ΠΎΡΠ·Ρ‹Ρ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ DirectX 8.0a Runtime for Windows 2000 ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π·Π΄Π΅ΡΡŒ.

Π›ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ вСрсии DirectX 8.0a Runtime располоТСны Ρ‚ΡƒΡ‚.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π΅Ρ‰Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ нСсколько слов ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ информация базируСтся Π² основном Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΎΡ‚ Microsoft, которая доступна ΠΏΠΎΠΊΠ° (ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ всСгда) ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° английском языкС. НС Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½ΠΈΠΊΡ‚ΠΎ Ρƒ нас Π½Π΅ Π·Π½Π°Π΅Ρ‚ английского языка, Π½ΠΎ ΡƒΠΆ чСловСчСская психика Ρ‚Π°ΠΊ устроСна, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ всС Π°Π²Ρ‚ΠΎΡ€Ρ‹ пСрСводят Π½Π° русский ΠΏΠΎ своСму. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ½ΠΎΠΉ Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ скорСС всСго Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΈΠ· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½Π° ΠΈΡ… Ρ€ΠΎΠ΄Π½ΠΎΠΌ языкС. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ ΡƒΠ΄ΠΈΠ²Π»ΡΠΉΡ‚Π΅ΡΡŒ, ΡƒΠ²ΠΈΠ΄Π΅Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ "flip chain" вмСсто "ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ отобраТСния" ΠΈΠ»ΠΈ "Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€ΠΎΡ‚Π°"… Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях прСдставлСн ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π² скобках ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ слова ΠΈΠ»ΠΈ выраТСния. НапримСр: "ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° проСктирования (projection matrix)".

НСмного ΠΎ дСмонстрационном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Π›ΡŽΠ±ΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€ ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ сталкиваСтся с Π½Π΅Π»Π΅Π³ΠΊΠΈΠΌ вопросом: ΠΊΠ°ΠΊΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. Π”Π°ΠΆΠ΅ послС Π²Ρ‹Π±ΠΎΡ€Π° Visual C++ Π² качСствС Π±Π°Π·Ρ‹ остаСтся нСсколько Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ: ΡƒΠΆ больно ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°ΡΠΏΠ»ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ frameworks. МоТно Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ 4 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… (сразу ΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Ρƒ ΠΈΡ… нСдостатки ΠΈ достоинства):

β€’ ЧистоС API ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. НСбольшоС ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π°, тСорСтичСски Π»Π΅Π³ΠΊΠΎ пСрСносимоС. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΏΡ€Π°Π²Π΄Π°, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ отличаСтся…

β€’ MFC ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. НаиболСС распространСнный Π²Ρ‹Π±ΠΎΡ€. БСйчас ΡƒΠΆΠ΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ отсутствуСт mfc42.dll, хотя, распространяя ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹. К нСдостаткам ΠΌΠΎΠΆΠ½ΠΎ отнСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠ³Π»ΠΎΠ²Π°Ρ‚ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚ΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΠΎΡΡ‚ΡŒ исходников.

β€’ WTL (Windows Template Library) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π—Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΡˆΡ‚ΡƒΠΊΠ°, Π½ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅ всС люди ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ WTL, ΠΈ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ, Π½Π΅ Ρƒ всСх ΠΎΠ½Π° установлСна.

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ATL ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. НаиболСС Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ мною ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, пригодная (Π²ΠΎΠΏΡ€Π΅ΠΊΠΈ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ мнСнию) для создания практичСски любого Windows-прилоТСния. К соТалСнию, мастСр ATL ΠΈΠ· ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° Visual C++6 Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π΅-COM прилоТСния.

ПослС Π΄ΠΎΠ»Π³ΠΈΡ… Ρ€Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠΉ я остановился Π½Π° послСднСм Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅. Как говорится, Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ всС Ρ€Π°Π²Π½ΠΎ, Π° ΠΌΠ½Π΅ приятно. Π¨ΡƒΡ‚ΠΊΠ°. На самом Π΄Π΅Π»Π΅, я Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΌΠ½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ максимально понятным, ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π½Π΅ ΠΈΠ·ΠΌΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π°Ρ€Π·Π°Π½ΠΎΠΌ Π² Π²ΠΈΠ΄Π΅ MFC, разбСрСтся Ρ‚Π°ΠΌ Π±Π΅Π· особых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Если Π²Ρ‹ Π½Π΅Π½Π°Π²ΠΈΠ΄ΠΈΡ‚Π΅ ATL – Π½Π΅ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ дальшС. Π§Ρ‚ΠΎΠ±Ρ‹ внСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ, ΡΠΏΠ΅ΡˆΡƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ классов для Π΄Π΅ΠΌΠΎ-прилоТСния. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π² Rational Rose 2000 – нотация Π‘ΡƒΡ‡Π°.

НСсколько ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… классов:

β€’ CMainDlg – Π“Π»Π°Π²Π½Ρ‹ΠΉ класс прилоТСния. УнаслСдован ΠΎΡ‚ CDialogImpl ΠΈ создаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinMain ΠΊΠ°ΠΊ Π½Π΅ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π² сСбС ΠΎΠ΄ΠΈΠ½ экзСмпляр класса C3DGraphic, ΠΎΠ΄ΠΈΠ½ C3DGraphFrame, 4 Π½Π΅ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΈΠ°Π»ΠΎΠ³Π° рСдактирования свойств (CMaterialPropsWindow, CLightPropsWindow, CBackColorWindow and CFunctionTypeWindow) ΠΈ 3 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° 3D Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (CSplashFunction, CPlaneFunction and CParabaloidFunction).

β€’ CPropertyWindow – Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ класс для всСх ΠΎΠΊΠΎΠ½ рСдактирования свойств. УнаслСдован ΠΎΡ‚ CDialogImpl.

β€’ C3DFunction – Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ абстрактный класс, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ интСрфСйс получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 2-Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

β€’ CPropertyWindowNotify – Абстрактный класс-интСрфСйс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΎΠΊΠΎΠ½ свойств. Π§Π΅Ρ€Π΅Π· этот интСрфСйс ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡŽΡ‚ΡΡ ΠΎΠ± измСнСниях, происходящих со свойствами.

β€’ CD3D8Application – Π’Π΅ΡΡŒΠΌΠ° простой класс-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° для управлСния Тизнью ΠΈ ΡΠΌΠ΅Ρ€Ρ‚ΡŒΡŽ IDirect3D8 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

β€’ C3DGraphFrame – Окно, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ 2D проСкция Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ изобраТСния. Говоря Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… MFC, класс Π²ΠΈΠ΄Π° для Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

β€’ C3DGraphic – НаиболСС Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ ΠΈ Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ класс, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ всю ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ 3D ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ. ИмСнно ΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ управлСния свСтом, свойствами ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅. БобствСнно, Ρ€Π°Π΄ΠΈ Π½Π΅Π³ΠΎ всС ΠΈ Π·Π°Ρ‚Π΅Π²Π°Π»ΠΎΡΡŒβ€¦

Π’ΠΎ Π»ΠΈ МикСландТСло, Ρ‚ΠΎ Π»ΠΈ Π΅Ρ‰Π΅ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΈΠ· Π²Π΅Π»ΠΈΠΊΠΈΡ… ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ спросили, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΊΡƒΠ»ΡŒΠΏΡ‚ΡƒΡ€Ρƒ. Π’Π΅Π»ΠΈΠΊΠΈΠΉ, Π½Π΅Π΄ΠΎΠ»Π³ΠΎ думая, ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»: "Π’ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ большой камСнь ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ всС лишнСС." ΠžΠΊΠΈΠ½ΡƒΠ² взглядом всС Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ простой Π²Ρ‹Π²ΠΎΠ΄: Π΄Π΅ΠΌΠΎ-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся Π½ΠΈ Ρ‡Π΅ΠΌ ΠΈΠ½Ρ‹ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ATL EXE COM сСрвСром, ΠΈΠ· исходного ΠΊΠΎΠ΄Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ…ΠΈΡ‚Ρ€ΠΎΠΉ Ρ€ΡƒΠΊΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€Π° Π±Ρ‹Π»ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ всС относящССся ΠΊ COM Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ само ΠΏΠΎ сСбС являСтся интСрСсной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Π½ΠΎ ΠΌΡ‹ Π½Π΅ ΡΠΊΡƒΠ»ΡŒΠΏΡ‚ΠΎΡ€Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ подробности оставим Π² сторонС. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΌΠ° ΠΌΠΎΠ΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ всС-Ρ‚Π°ΠΊΠΈ DirectX, Π° Π½Π΅ ATL. Π’ΠΎΡ‚ сСйчас – ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΎΠ± этом…

А Ρ‡Ρ‚ΠΎ это Π·Π° Direct3D8, ΠΈ Π³Π΄Π΅ ΠΎΠ½ΠΎ ΠΆΠΈΠ²Π΅Ρ‚???

Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΈΠΌΠ΅Π»ΠΈ Π΄Π΅Π»ΠΎ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями DirectX, Ρ‚ΠΎ Вас ΠΆΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ интСрСсноС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅: DirectDraw большС Π½Π΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅!!! Microsoft Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π°Π· Ρ€Π΅ΡˆΠΈΠ» ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ всС Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всС относящССся ΠΊ Ρ€ΠΈΡΠΎΠ²Π°Π½ΠΈΡŽ Π² DirectX прСдставлСно ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΎΠ±Ρ‰ΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ DirectX Graphics. ВсС измСнилось ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с DirectX7. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ IDirect3DDevice8, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠΌΠ΅Π΅Ρ‚ 94 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Для сравнСния, IDirect3DDevice7 позволял Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ лишь 48 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Back-буфСризация Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ поддСрТиваСтся автоматичСски, Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ усилий с Π’Π°ΡˆΠ΅ΠΉ стороны – Π½Π΅ Π½Π°Π΄ΠΎ большС Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ эти Π·Π°Π³Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ flip chains. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Direct3D стала простой ΠΊΠ°ΠΊ i++, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ стали Π²ΠΎΠΎΠ±Ρ‰Π΅ нСдоступны программисту. НС всСгда это Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ нСпосрСдствСнно Π½Π° primary surface. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎ с Π½Π΅Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅. Π’ΠΎΡ‡Π½Π΅Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅, Π½ΠΎ Microsoft Π½Π΅ совСтуСт. ΠžΡ‚ сСбя ΠΏΠΎΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π½Π΅Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Microsoft, Π° Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… ΠΎΡ‚ΡΡ‹Π»Π°ΡŽ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ IDirect3DDevice8::GetFrontBuffer. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΊ вопросам совмСстимости Microsoft всСгда ΠΎΡ‚Π½ΠΎΡΠΈΠ»Π°ΡΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ, установив DirectX8, Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ свободно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ со всСми ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями этого ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

А Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌ людям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠΌΠ΅Π»ΠΈ Π΄Π΅Π»Π° с Direct3D Π²ΠΎΠΎΠ±Ρ‰Π΅??? Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Π½ΠΈΡ… я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ ΠΎΠ±Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ основноС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π’Ρ‹ всС ΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с тСорСтичСскими аспСктами построСния 3D ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ):

β€’ Direct3D8 обСспСчиваСт Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-нСзависимый ΠΏΡƒΡ‚ΡŒ доступа ΠΊ возмоТностям видСооборудования, установлСнного Π½Π° машинС. Если Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ возмоТности Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚ΠΎΠΉ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° обСспСчиваСт ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΡƒΡŽ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ. Эмуляция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Π΄Π° ΠΈ Π½Π΅ всС эмулируСтся…

β€’ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ стандартный ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ 3D ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ: ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° окруТСния (world matrix), ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° модСлирования (view matrix) ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° проСктирования (projection matrix).