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

ГрафичСский Π΄Π²ΠΈΠΆΠΎΠΊ. 
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ графичСского Π΄Π²ΠΈΠΆΠΊΠ° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

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

Π’Π°ΠΊΠΆΠ΅ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ dxGraph содСрТатся ΠΌΠ΅Ρ‚ΠΎΠ΄ initSceneObj для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² сцСны ΠΈ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° эффСктов, Π° Ρ‚Π°ΠΊΠΆΠ΅ initObj для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° загруТаСтся сСтка, Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ эффСкты ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° отобраТСния, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π° ΡΡ†Π΅Π½Π΅ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΡ… ΠΌΠΈΡ€ΠΎΠ²Ρ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. Для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ loadShader, Π° Π΄Π»Ρ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ГрафичСский Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ графичСского Π΄Π²ΠΈΠΆΠΊΠ° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Роль графичСского Π΄Π²ΠΈΠΆΠΊΠ° ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ dxGraph (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 4). Он ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ сцСну, создаСт ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π½Π΅ΠΉ. Класс dxGraph содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства:

  • — vAngle (ΡƒΠ³ΠΎΠ» просмотра ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹);
  • — objEffect (массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΈΠ½Ρ‚СрфСйсы ID3DXEffect с ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°ΠΌΠΈ);
  • — objTechnic (массив Ρ‚Π΅Ρ…Π½ΠΈΠΊ отобраТСния для ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ²);
  • — objDev (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΡΡ‚ройство Direct3D);
  • — obj (массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° dxObj с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ сцСны);
  • — objVertex (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΈΠ½Ρ‚СрфСйс IDirect3DVertexDeclaration9 с ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π²Π΅Ρ€ΡˆΠΈΠ½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°).

Π’Π°ΠΊΠΆΠ΅ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ dxGraph содСрТатся ΠΌΠ΅Ρ‚ΠΎΠ΄ initSceneObj для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² сцСны ΠΈ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° эффСктов, Π° Ρ‚Π°ΠΊΠΆΠ΅ initObj для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° загруТаСтся сСтка, Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ эффСкты ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° отобраТСния, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π° ΡΡ†Π΅Π½Π΅ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΡ… ΠΌΠΈΡ€ΠΎΠ²Ρ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. Для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ loadShader, Π° Π΄Π»Ρ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ отобраТСния всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² сцСны — renderAll.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² сцСны ΠΈΠΌΠ΅ΡŽΡ‚ схоТий Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ отобраТСния ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΎΠ΄Π½ΠΈΠΌ эффСктом. Если ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ пространства Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ свой эффСкт, Ρ‚ΠΎ ΡΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прилоТСния Π² Ρ†Π΅Π»ΠΎΠΌ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ρ‚ΠΎ ΡΡ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΈΠ·Π»ΠΈΡˆΠ½Π΅ΠΌΡƒ расходу памяти, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° создаСтся свой экзСмпляр интСрфСйса ID3DEffect. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого создан ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΊΠΎΠΉ интСрфСйс, хранящийся Π² Π΄Π²ΠΈΠΆΠΊΠ΅ прилоТСния, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ссылки Π½Π° Π½Π΅Π³ΠΎ.

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

Для запуска Π΄Π²ΠΈΠΆΠΊΠ° Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для хранСния указатСля Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ€ модуля GraphicModule:

GraphicModule* gm.

Π”Π°Π»Π΅Π΅, послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса Direct3D, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ устройство:

gm = new GraphicModule (dxDev).

Для отобраТСния сцСны Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСния трСбуСтся Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ CreateScene. Π’ Π½Π΅ΠΌ послС Π½Π°Ρ‡Π°Π»Π° формирования сцСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° BeginScene устройства dxDev очищаСтся Π±ΡƒΡ„Π΅Ρ€, Π·Π°Ρ‚Π΅ΠΌ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ renderAll, Π° Π΄Π°Π»Π΅Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сцСны ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ для отобраТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΡΡ†Π΅Π½Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ этапы:

  • — ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива описания Π²Π΅Ρ€ΡˆΠΈΠ½ для отобраТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ²;
  • — Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° сСтки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
  • — Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° эффСктов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°;
  • — Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ отобраТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°;
  • — ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°;
  • — Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ° Π²ΠΈΠ΄ΠΎΠ²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°;
  • — ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²Π΅Ρ€ΡˆΠΈΠ½;
  • — Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° renderAll для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΡΡ†Π΅Π½Π΅.
ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ