13.07.2015 Views

4 - Xakep Online

4 - Xakep Online

4 - Xakep Online

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Ïðîãðàììèðîâàíèå ãðàôèêèÊóðñ ìîëîäîãî áîéöàÑ ñåãîäíÿøíåãî äíÿ ÿ íà÷èíàþ ðàññêàç î êîäèíãå ãðàôèêè â Delphi ß äîëãî äóìàë,÷òî âûáðàòü, OpenGL èëè DirectX, è âñå æå ïðèøåë ê âûâîäó, ÷òî ëó÷øå îïèñûâàòüèìåííî DX Îí íàìíîãî ñëîæíåå, çàòî áîëåå óíèâåðñàëüíûé (íà ìîé âçãëÿä) Äà èåñëè òû çàõî÷åøü óçíàòü ïðî OpenGL, òî ìîæåøü ïîéòè íà ìîé ñàéò è ñêà÷àòü ñåáåïîëíûé öèêë ñòàòåé ïî ýòîé òåìå Òàì äîñòàòî÷íî èíôû, ÷òîáû èç ïîëíîãî ÷àéíèêàïðåâðàòèòüñÿ â ñàìîâàð :), à çäåñü ÿ ïîâòîðÿòüñÿ íå õî÷ó64ê IntroÊàêè ïðè ëþáîì äðóãîì êîäèíãå, Delphi íàìíîãî îáëåã÷àåò ïðîãðàììèðîâàíèåâ DirectX Ïðè ýòîì ðàçìåð ôàéëà çíà÷èòåëüíî óâåëè÷èâàåòñÿ, ÷òî äëÿìàëåíüêèõ Intro è ïðåçåíòàöèé î÷åíü âàæíî Ïîýòîìó ìû íå áóäåì èäòè ïðîñòûìïóòåì, à áóäåì ñîçäàâàòü ìàëåíüêèå ïðèëîæåíèÿ áåç èñïîëüçîâàíèÿ ïðåèìóùåñòâDelphi, çàòî ñ èñïîëüçîâàíèåì âñåé óáîãîñòè WinAPIß îòêàçàëñÿ îò âèçóàëüíîñòè íå òîëüêî èç-çà áîëüøîãî ðàçìåðà ïîëó÷àåìûõ ôàéëîâÄëÿ ýòîãî áûëî åùå íåñêîëüêî ïðè÷èí:1 ×òîáû ïîêàçàòü òåáå âíóòðåííîñòè ëþáîé ïðîãðàììû Òàê òû ñìîæåøü ïîíÿòü ïðîöåññâûïîëíåíèÿ ïðîã è óçíàòü, êàê ðàáîòàþò âíóòðåííîñòè òâîèõ ëþáèìûõ îêîøåê2 Òàêîé êîä ëåãêî áóäåò ïåðåíåñòè íà äðóãîé ÿçûê (Ñ++ èëè ASM)3 Òàê ìîæíî ïîêàçàòü ëþáèòåëÿì VC++, ÷òî Delphi ñïîñîáåí íå òîëüêî íà Èíåò èáàçû äàííûõ, íî è íà êðóòóþ ãðàôèêóÍåìíîãî èñòîðèèÄàâíûì-äàâíîHorrific aka Ôëåíîâ Ìèõàèë smirnandr@mailru wwwcydsoftcom/vr-onlineìàëåíüêàÿ è ïî÷òè íèêîìó íå èçâåñòíàÿ êîìïàíèÿ Microsoftñîçäàëà Windows Âñå áûëî ïðåêðàñíî, è â íåì âðîäå áû óäîáíî áûëî ðàáîòàòüÍî îêíà àáñîëþòíî íå áûëè ïðåäíàçíà÷åíû äëÿ èãð, à òàê õîòåëîñüïîëó÷èòü â ñâîè ëàïû äåíüãè èãðóíîâ Èíòåðôåéñ Windows, ïîñòðîåííûé íà GDI,áûë òîðìîçíóòûì, è óñêîðèòü åãî íèêàê íå óäàâàëîñüÈ âîò ïðîãðàììåðû ìàëåíüêîé êîìïàíèè ðåøèëè, à ïî÷åìó áû íå ñîçäàòü òàêóþáèáëèîòåêó, êîòîðàÿ ìîãëà áû äàâàòü îïðåäåëåííûì ïðèëîæåíèÿì âñå ðåñóðñûêîìïà è íàèâûñøèå ïðèâèëåãèè? Ñêàçàíî - ñäåëàíî, òàê è ïîÿâèëñÿ DirectX Íî îíïîÿâèëñÿ íå ñ íóëÿ, âåäü ïðîãðàììåðû ìàëåíüêîé êîìïàíèè ñëèøêîì ñëàáåíüêèå,÷òîáû íàïèñàòü òàêîå ñàìîñòîÿòåëüíî :) Çàòî äèðåêòîð áîãàòûé :), êîòîðûé ïðîñòîêóïèë åùå áîëåå ìàëåíüêóþ êîìïàíèþ, óæå ñîçäàâøóþ íå÷òî ïîäîáíîåÍî áèáëèîòåêà âñå ðàâíî áûëà ñëàáîé, ïîòîìó ÷òî ñàì Windows î÷åíü ñèëüíî òîðìîçíóòûéÍî ñëàâà Ãåéòñó, ÷òî ïîÿâèëèñü ãðàôè÷åñêèå óñêîðèòåëè è áèáëèîòåêàïîøëà â ðîñò, ïîòîìó ÷òî ñìîãëà îïåðàòèâíî âñîñàòü â ñåáÿ âñå íåîáõîäèìîå äëÿïîääåðæêè òàêèõ êàðò À ñàìîå ãëàâíîå, ÷òî DirectX äàåò ïðîãðàììåðó áàçîâûé è íåîáõîäèìûéíàáîð âîçìîæíîñòåé âíå çàâèñèìîñòè îò òîãî, ïîääåðæèâàåò âèäåîêàðòàóñêîðåíèå èëè íåò Åñëè êàêîé-òî âîçìîæíîñòè ó óñêîðèòåëÿ íåò, òî DirectX APIïðîñòî ýìóëèðóåò åå ïðîãðàììíî, çàñòàâëÿÿ ïîäíàïðÿ÷üñÿ öåíòðàëüíûé ïðîöDInput8dll - ýòî äëÿ ðàáîòû ñ óñòðîéñòâàìè ââîäàÍó, â îáùåì, âñå â òàêîì äóõå Ìû íà÷íåì èçó÷åíèå ñ 2D ãðàôèêè è, ñîîòâåòñòâåííî,ñ DdrawdllDirectX - ýòî îáúåêòíàÿ áèáëèîòåêà, ïîñòðîåííàÿ ïî òåõíîëîãèè COM Íå ïóãàéñÿ,ÿ ïîñòàðàþñü îáúÿñíèòü âñå êàê ìîæíî ïðîùå, ÷òîáû òû íå îùóòèë âñåõ òðóäíîñòåéCOM êîäèíãà DirectDraw, ãðóáî ãîâîðÿ, ñîñòîèò èç ñëåäóþùèõ îáúåêòîâ:DirectDrawSurface - îáëàñòü âèäåîïàìÿòè Ê íåé ìîæíî îáðàùàòüñÿ íàïðÿìóþ èïðîèçâîäèòü ïðàêòè÷åñêè ëþáûå äåéñòâèÿDirectDrawPalette - èíòåðôåéñ äëÿ ðàáîòû ñ ïàëèòðàìè Îí íóæåí, åñëè òû íàñòðîèëñÿíà 256- èëè, íå äàé áîã, 16-öâåòíóþ èãðóDirectDrawClipper - ýòîò èíòåðôåéñ îòâå÷àåò çà îáðåçàíèÿ Îí íóæåí, åñëè òû ïèøåøüîêîííîå ïðèëîæåíèå  ýòîì ñëó÷àå òåáå ïîíàäîáèòñÿ îáðåçàòü âñå, ÷òî âûõîäèòçà ïðåäåëû îêíàÍà ýòîì òåîðèþ íàäî ïðåêðàùàòü Ïîñòåïåííî ÿ áóäó òåáÿ çíàêîìèòü íå òîëüêî ñïðàêòèêîé, íî è ñ òåîðèåé ïðîãðàììèðîâàíèÿ ãðàôèêè, à ìîæåò áûòü, áóäåò è îòäåëüíàÿñòàòüÿÏîøêîäèìÅñëèòû íå ïðî÷èòàë ñòàòüþ ïî Delphi â ýòîì íîìåðå, òî ñäåëàé ýòî ñåé÷àñÒàì ÿ îïèñàë øàáëîí ìèíèìàëüíîãî ïðèëîæåíèÿ â Delphi, êîòîðûé ìû áóäåìèñïîëüçîâàòü âî âñåõ ïðèìåðàõ ïðè êîäèíãå â DirectX Îòêðîé ñîçäàííûé òàìïðîåêò, ñåé÷àñ ìû åãî áóäåì ïîïîëíÿòüÄëÿ íà÷àëà â ðàçäåë var äîáàâü ñëåäóþùèå ïåðåìåííûå:varFDirectDraw : IDirectDraw7;FPrimarySurface : IDirectDrawSurface7;SurfaceDesc : TDDSurfaceDesc2;hRet : HRESULT;DC : HDC;bltfx : TDDBLTFX;Ñíîâà â øêîëóDirectX - ýòî ãðàôè÷åñêàÿ áèáëèîòåêà ñîñòîÿùàÿ èç íåñêîëüêèõ DLL ôàéëîâ:Ddrawdll - â ýòîì ôàéëå íàõîäÿòñÿ API ôóíêöèè äëÿ ðàáîòû ñ ãðàôèêîé â 2D ðåæèìåDsounddll - çäåñü íàõîäÿòñÿ API ôóíêöèè äëÿ ðàáîòû ñî çâóêîìD3d8dll - ýòî äëÿ ðàáîòû ñ 3D ãðàôèêîé×óòü ïîçæå òû óçíàåøü, çà÷åì îíè íóæíû À ñåé÷àñ ïîéäè â ðàçäåë uses è äîáàâüíåäîñòàþùèå ìîäóëè:uses windows, Graphics, messages, sysutils, DirectDraw;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!