XPos := NewXPos; ZPos := NewZPos;
end;
end;
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
Result := DIKeyboard.GetDevicestate(SizeOf(KeyBuffer), @KeyBuffer);
if KeyBuffer[DIK_ESCAPE] and $80 <> 0 then begin // Esc
Close;
Exit;
end;
// ΠΠ°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ° "Π²ΠΏΡΠ°Π²ΠΎ", Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅
if KeyBuffer[DIK_RIGHT] and $80 <> 0 then begin
XPos := XPos - sin(RotY) * 0.05;
ZPos := ZPos - cos(RotY) * 0.05;
end;
// ΠΠ°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ° "Π²Π»Π΅Π²ΠΎ"
if KeyBuffer[DIK_LEFT] and $80 <> 0 then begin
XPos := XPos + sin(RotY) * 0.05;
ZPos := ZPos + cos(RotY) * 0.05;
end;
// ΠΠ°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ° "Π²Π½ΠΈΠ·"
if KeyBuffer[DIK_DOWN] and $80 ΠΎ 0 then begin
XPos := XPos + sin(RotY - Pi / 2) * 0.05;
ZPos := ZPos + cos(RotY - Pi / 2) * 0.05;
end;
// ΠΠ°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ° "Π²Π²Π΅ΡΡ " if KeyBuffer[DIK_UP] and $80 <> 0 then begin
XPos := XPos + sin(RotY + Pi / 2) * 0.05;
ZPos := ZPos + cos(RotY + Pi / 2) * 0.05;
end;
// ΠΠ°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ° "F", ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ FPS
if KeyBuffer[DIK_F] and $80 <> 0 then begin
flgFPS := not flgFPS; // ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π°Π³Π°
Sleep (50); // ΠΠ°Π»Π΅Π½ΡΠΊΠ°Ρ ΠΏΠ°ΡΠ·Π°
end;
// ΠΠ»Π°Π²ΠΈΡΠ° <Page Up>, Π³ΠΎΠ»ΠΎΠ²Ρ Π·Π°Π΄ΠΈΡΠ°Π΅ΠΌ Π²Π²Π΅ΡΡ
if KeyBuffer[DIK_PRIOR] and $80 <> 0 then begin
Lookupdown := Lookupdown + 0.05;
if Lookupdown > 1 then Lookupdown := 1;
end;
// ΠΠ»Π°Π²ΠΈΡΠ° <Page Down>, Π³ΠΎΠ»ΠΎΠ²Ρ ΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ Π²Π½ΠΈΠ·
if KeyBuffer[DIK_NEXT] and $80 <> 0 then begin
Lookupdown := Lookupdown - 0.05;
if Lookupdown < -1 then Lookupdown := -1;
end;
end;
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΡΡΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, Π½Π΅Ρ Π»ΠΈ Π½Π° ΠΏΡΡΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΡ, ΡΡΠ΅Π½Ρ ΠΊΠΎΠΌΠ½Π°ΡΡ ΠΈΠ»ΠΈ ΡΡΠΈΠΊΠ°. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ ΡΠ°ΠΊΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠΆΡ, ΠΈ ΠΈΠ³ΡΠΎΠΊ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· Π²ΡΠ΅ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΡ. ΠΠΏΡΡΠΊΠ°Ρ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠΈΠ»ΡΠ½ΠΎ Π»ΠΈ ΠΎΠ½Π° Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ Π»ΠΈ ΠΏΡΡΡ, Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄: Π² Π·Π°Π΄Π½Π΅ΠΌ Π±ΡΡΠ΅ΡΠ΅ ΡΡΠ΅Π½Π° Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΊΠ΅, Π²Π·Π³Π»ΡΠ΄ Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. ΠΠ»Π°Π· Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»Ρ ΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΏΠΎΠ»Ρ, ΠΈ Π²ΡΡΡΠ½ΡΠ΅ΠΌ ΡΠ²Π΅Ρ ΡΠΎΡΠΊΠΈ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΡΡΠΌΠΎ ΠΏΠΎ Ρ ΠΎΠ΄Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΠ» ΠΎΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΡΠ°ΡΠ½ΡΠΌ, Π° ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΡ ΠΈ ΡΠΎΠ½ - ΡΠΈΠ½ΠΈΠΌ, ΡΠΎ ΡΠΈΠ½ΠΈΠΉ ΡΠ²Π΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠ³ΡΠΎΠΊ Π²ΠΏΠ»ΠΎΡΠ½ΡΡ ΠΏΠΎΠ΄ΠΎΡΠ΅Π» ΠΊ Π½Π΅ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΠΎΠΌΡ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΡ ΠΈΠ»ΠΈ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΠΊΡΠΎΡΠ°:
function TfrmD3D.TestRender (const XPos, ZPos, RotY : Single) : BOOL;
var
i : Integer; matView : TD3DMatrix; d3dlr : TD3DLOCKED_RECT;
dwDstPitch : DWORD; DWColor : DWORD;
Π : Byte; // ΠΠΎΠ»Ρ ΡΠΈΠ½Π΅Π³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ
begin
Π := 0; // ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
// Π‘ΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΠ΅Π½Ρ ΠΈΠ· Π½ΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΊΠΈ, ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ - Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΏΠΎΠ»Ρ
SetViewMatrix(matView, D3DVector(XPos, 0,1, ZPos),
D3DVector(XPos + cos(RotY), 0.1,
ZPos -sin(RotY)), ZVector); // Π£ΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Ρ
with FD3DDevice do begin
Clear(0, nil, D3DCLEAR_TARGET or D3DCLEAR_ZBUFFER,
$000000FF, 1.0, 0); BeginScene;
// ΠΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ ΡΠ²Π΅ΡΠ°
-SetRenderState(D3DRS_LIGHTING, DWORD (False)); // ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΡΡΡΠ·Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π²Π΅ΡΡΠΈΠ½ SetRenderState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
SetTransform(D3DTS_VIEW, matView);
SetStreamSource(0, FD3DVB, SizeOf(TNormDiffTextVertex));
SetVertexShader(D3DFVF_NORMDIFFTEXTVERTEX); SetTransform(D3DTS_WORLD, IdentityMatrix);
end;
// Π ΠΈΡΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠ½Π°ΡΡ
for i := 0 to NumTriangles - 1 do with FD3DDevice do
DrawPrimitive(D3DPT_TRIANGLELIST, 1*3, 1);
with FD3DDevice do begin
EndScene;
// ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°Π΄Π½Π΅ΠΌΡ Π±ΡΡΠ΅ΡΡ
GetBackBuffer (Π, D3DBACKBUFFER_TYPE_MONO, FD3SurfBack);
SetRenderState(D3DRS_LIGHTING, DWORD (True));
end;
// ΠΠ°ΠΏΠΈΡΠ°Π΅ΠΌ Π·Π°Π΄Π½ΠΈΠΉ Π±ΡΡΠ΅Ρ
FD3SurfBack.LockRect (d3dlr, nil, D3DLOCK_READONLY);
dwDstPitch := d3dlr.Pitch;
// ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΄ΠΎΠ»Ρ ΡΠΈΠ½Π΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠ΅ case
FD3DfmtFullscreen of D3DFMT_X8R8G8B8 : begin
DWColor := PDWORD (DWORD(d3dlr.pBits) + TestPointY * dwDstPitch +
TestPointX * 4)^; Π := DWColor and $lf;
end;
D3DFMT_R5G6B5 : begin
DWColor := PDWORD (DWORD(d3dlr.pBits) + TestPointY * dwDstPitch +
TestPointX * 2}Π; Π := DWColor and $lf;
end;
end;
FDSSurfBack.UnLockRect;
// ΠΠ΅Ρ ΡΠΈΠ½Π΅Π³ΠΎ ΡΠ²Π΅ΡΠ°, Π·Π½Π°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈ
Result := not (Π <> 0);
end;
Π‘ΠΈΠ½ΠΈΠΉ ΡΠ²Π΅Ρ Π²Π·ΡΡ ΠΌΠ½ΠΎΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ Π΅Π³ΠΎ Π²ΡΡΠ΅Π·ΠΊΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ DWColor.
ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ 24-Π±ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΎΡΠΌΠ°ΡΡ D3DFMT_R8G8B8, ΡΠΎ Π₯-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π½Π°Π΄ΠΎ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π½Π° 3, ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ ΠΎΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π° Π² ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ° Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Ρ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΡΠΌΠΈ Π±Π΅ΡΠ΅ΡΡΡ ΠΎΠ΄Π½Π° - ΠΏΠΎΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΠΊΡΠ°Π½Π° ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ, Π½Π° 10 ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² Π²ΡΡΠ΅ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΠ°Π½Π°:
ScreenWidth := GetSystemMetrics(SM_CXSCREEN);
ScreenHeight := GetSystemMetrics(SM_CYSCREEN);
TestPointX := ScreenWidth div 2;
TestPointY := DWORD{ScreenHeight - 10);
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π·Π΄Π΅ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ - ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ ΡΠ°ΠΌΡΠΉ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΡΠΉ. ΠΠ° Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΏΡΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π°ΡΡΠΈ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ, ΠΈ ΡΠΎΠ³Π΄Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ²Π΅Ρ ΡΠΎΡΠΊΠΈ "ΠΏΠΎΠ΄ Π½ΠΎΠ³Π°ΠΌΠΈ". Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΈΡΠ° ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ, ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΡΡΠ΅Ρ. ΠΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ³ΡΠΎΠΊΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π±ΡΠ΄Π΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ, ΡΠ°Π·Π»ΠΈΡΠ°Ρ ΠΏΠΎ ΠΎΡΡΠ΅Π½ΠΊΠ°ΠΌ Π²ΡΡΠΎΡΡ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΠΉ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ° Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΠ³ΡΠΎΠΊΠ° Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠΎΡΠΊΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΊΠΈ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ Π²ΡΡΠΎΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ ΡΠΏΡΠΎΡΠ΅Π½ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ , ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π΄Π°Π»Π΅ΠΊ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Ρ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ²ΠΎΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΡΡΠ΅ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΈΡΠΎΠ½ΠΈΠ΅ΠΉ ΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Π½Π°ΡΠΈ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π³ΠΈ Π² Π·Π°Ρ Π²Π°ΡΡΠ²Π°ΡΡΠ΅ΠΌ ΠΌΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΠΈΠ³Ρ, Π½ΠΎ Π²Π΅Π΄Ρ Π½Π°ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΊΡΠ»ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²ΠΈΡΡ ΡΠ΅Π±Π΅ ΠΎΠ±Π΅Π΄, Π²Π΅Π΄Ρ ΡΠ°ΠΊ? Π ΡΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΊΡΠ»ΠΈΠ½Π°ΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΡΡΡΡ Π½Π°ΡΠ΅ ΠΊΡΡΠ°Π½ΡΠ΅, Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π³ΠΎΠ»ΠΎΠ΄Π½ΡΠΌΠΈ. ΠΠ° ΡΡΠΎΠΌ ΠΏΡΠΎΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠ³ΡΡ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π΄Π°Π»ΡΡΠ΅ ΠΆΠ΅ Π½Π°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°ΡΡΡΡ. ΠΠΎ ΡΡΠ° ΡΠ΅ΠΌΠ° ΠΈΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, Π° Π΄Π°Π½Π½Π°Ρ ΠΊΠ½ΠΈΠ³Π° Π½Π° ΡΡΠΈΡ ΡΠ»ΠΎΠ²Π°Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ.
Π§ΡΠΎ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅
Direct3D ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΌΠ°ΡΡΠΎΠΉ ΡΡΠ΅Π΄ΡΡΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΡΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈ Π² Π½Π°ΡΡΠΎΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΠΈΡ Π΄ΠΎΠ»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΌΠ°Π½ ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ²Π΅ΡΠ°.
Π Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ Π²Π°ΠΆΠ½ΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ, ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡΠΈΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΡΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡΡ .
ΠΠ°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ Π³Π»Π°Π²Π° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°Π΄Π΅ΡΡΡ, ΠΊΠ½ΠΈΠ³Π° ΠΏΡΠΈΠ½Π΅ΡΠ»Π° Π²Π°ΠΌ ΠΏΠΎΠ»ΡΠ·Ρ ΠΈ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ Π²Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΈ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ ΡΠΎ ΠΌΠ½ΠΎΠΉ: [email protected]
Π‘ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΎΠΉ Π²Ρ Π½Π°ΡΠ°Π»ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ DirectX, Π½ΠΎ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²Π²ΠΎΠ΄Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π»ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΡΠΎΠ»ΠΈΠΊΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠΉ ΡΠ΅ΠΌΡ. Π Π½Π΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅Ρ Π½ΠΈ ΡΠ»ΠΎΠ²Π° ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Direct3DX, Π° ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Π°Ρ ΡΠ΅ΠΌΠ°. ΠΡΠΊΠ°Π·Π°Π»ΡΡ Ρ ΠΎΡ Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠΎΠ»ΡΠΊΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° Delphi, Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΎΠ½Π° Π»ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΠΊΠ½ΠΈΠ³ΠΈ Π²Π°ΠΌ Π»Π΅Π³ΠΊΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ, ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΏΡΠΎΡΠ°ΡΡΠ΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ΅ΠΊΡΡΡΡ.
ΠΠ½ΠΈΠ³Π° Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ, Π½ΠΎ ΡΠ΅ΠΌΠ° Π΅Π΅ Π½Π΅ Π·Π°ΠΊΡΡΡΠ° Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΉ, ΠΈ, Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ°, Π²Ρ ΠΏΠΎΠΆΠ΅Π»Π°Π΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ Π½Π΅ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅Π΅. Π― Ρ ΠΎΡΡ ΡΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π΅ΡΠ΅ ΠΌΠ°ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠΎΠΌΠΈΠΌΠΎ Π°Π΄ΡΠ΅ΡΠΎΠ², ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Ρ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΡΠ»ΠΎΠΊ.
ΠΠ ΠΠΠΠΠΠΠΠ 1
ΠΠ»ΠΎΡΡΠ°ΡΠΈΠΉ
2D Graphics
ΠΠ²ΡΠΌΠ΅ΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ Π² ΡΠ°ΠΊΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ.
3D Graphics
Π’ΡΠ΅Ρ ΠΌΠ΅ΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Π΅ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ΅Π½Ρ.
Alpha
ΠΠ»ΡΡΠ°. ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ. Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π²Ρ ΠΎΠ΄ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ Π°Π»ΡΡΠ°-ΠΊΠ°Π½Π°Π»ΠΎΠΌ.
Alpha blending
ΠΠ»ΡΡΠ°-ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅. Π‘ΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²Π΅ΡΠΎΠ² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠ° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΡΠ²Π΅ΡΠΈΠ²Π°Π½ΠΈΡ.
Alpha channel
ΠΠ»ΡΡΠ°-ΠΊΠ°Π½Π°Π». ΠΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ-ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠΌ. ΠΠ»ΡΡΠ°-Π±ΡΡΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΠ°Π·ΠΌΡΡΠΈΡ Π³ΡΠ°Π½ΠΈΡ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΌΠ°Π½Π°.
Ambient
ΠΠΊΡΡΠΆΠ°ΡΡΠ°Ρ ΡΡΠ΅Π΄Π°. ΠΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π΅ΡΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²ΠΎ Π²ΡΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ , Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡΡΡ Ρ ΡΠ°Π²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡΡ.
API (Application Programming Interface)
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π°Π±ΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ.
Back buffer
ΠΡΠΎΡΠΈΡΠ½ΡΠΉ Π±ΡΡΠ΅Ρ. ΠΠΈΠ΄Π΅ΠΎΠ±ΡΡΠ΅Ρ Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ° Π°Π½ΠΈΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠΎΡΠΎΠ²ΡΠΉ Π²ΡΠΎΡΠΈΡΠ½ΡΠΉ Π±ΡΡΠ΅Ρ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ (Front buffer) ΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½.
BitBLT (Bit BLock Transfer)
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΡΠ°ΡΡΠΊΠ°ΠΌΠΈ ΠΏΠ°ΠΌΡΡΠΈ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
Bitmap
ΠΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠΉ Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ². Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·Π° ΡΠ°ΡΡΡΠ°.