рдпрд╣ рдкреЛрд╕реНрдЯ DirectX 9 рдкрд░ рдПрдХ рдХрдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рд▓реЗрдЦ рдХрд╛ рджреВрд╕рд░рд╛ рдФрд░ рдЕрдВрддрд┐рдо рднрд╛рдЧ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓рд╛ рднрд╛рдЧ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде
рдЦреБрдж рдХреЛ
рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВ ред
рд▓реЗрдЦ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА: рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕, рд╡рд░реНрдЯреЗрдХреНрд╕ рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рд╢реЗрдбреНрд╕, рдЗрдлреЗрдХреНрдЯреНрд╕, рдкреЛрд╕реНрдЯ-рдЗрдлреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдмрд╛рдж рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП - рдмрдирд╛рд╡рдЯ рдореЗрдВ рд░реЗрдВрдбрд░ рдХреА рд╕реНрд╡реАрдХреГрддрд┐ред
0. рдореВрд▓ рдЬрд╛рдирдХрд╛рд░реА
рд╕реНрдкреНрд░рд╛рдЗрдЯ
рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдПрдХ рдмрдирд╛рд╡рдЯ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддреА рд╣реИ рдФрд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХрдг рдмрд╕ рдбреЙрдЯреНрд╕ рд╣реИрдВ, рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рдмрдирд╛рд╡рдЯреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛, рдЖрдк рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╛рджрд▓) рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдПрдХ рд╕рд░рд▓ рдмрдирд╛рд╡рдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╕рдордЭ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдкрд┐рдХреНрд╕рд▓ рдХреЗ рдмрдЬрд╛рдп рдмрдирд╛рд╡рдЯ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдореЗрдВ рдЯреЗрдХреНрд╕рд▓реНрд╕ рд╣реИрдВред Direct3D рдХреНрд╖реИрддрд┐рдЬ U рдЕрдХреНрд╖ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ V рдЕрдХреНрд╖ рджреНрд╡рд╛рд░рд╛ рдЧрдард┐рдд рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╡рд░реНрдЯреЗрдХреНрд╕ рд╢реЗрдбреНрд╕
рд╡рд░реНрдЯреЗрдХреНрд╕
рд╢реЗрдбреНрд╕ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖
рдПрдЪрдПрд▓рдПрд╕рдПрд▓ рднрд╛рд╖рд╛ (рдпрд╛ рдЕрд╕реЗрдВрдмрд▓рд░) рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрдЯреЗрдХреНрд╕ рд░реВрдкрд╛рдВрддрд░рдг рдФрд░ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╡рд░реНрдЯреЗрдХреНрд╕ рд╢реЗрдбрд░ рдореЗрдВ, рд╣рдо рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЬрдЧрд╣ рдкрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдЦ рдореЗрдВ, рдмрдирд╛рд╡рдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЯреЗрдХреНрд╕ рд╢реЗрдбреНрд╕ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкрд┐рдХреНрд╕реЗрд▓ рд╢реЗрдбреНрд╕
рд╡рд░реНрдЯреЗрдХреНрд╕ рд╢реЗрдбреНрд╕ рдХреЗ рд╕рдорд╛рди, рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реЗ рдЫрд╡рд┐ рдХреЗ рд░реЗрдЦрд╛рдВрдХрди рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВред рдРрд╕реА shader рдореЗрдВ, рдмрдирд╛рд╡рдЯ, рд░рдВрдЧ рдФрд░ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, shader рдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рд░рдВрдЧ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреЗрдХреНрд╕рдЪрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред
рдкреНрд░рднрд╛рд╡ рдФрд░ рдкреЛрд╕реНрдЯ рдкреНрд░рднрд╛рд╡
рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдФрд░ / рдпрд╛ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╢реЗрдб рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ, рдФрд░ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд░реЗрдВрдбрд░ рдкрд╛рд╕ рд╣реЛрдВрдЧреЗред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдзрдмреНрдмрд╛ рдпрд╛ рдЪрдордХ рдкреНрд░рднрд╛рд╡ред
рдкреЛрд╕реНрдЯ рдЗрдлреЗрдХреНрдЯреНрд╕ рд╕рд╛рдорд╛рдиреНрдп рд▓реЛрдЧреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░реИрд╕реНрдкрд░реНрдб рджреГрд╢реНрдп рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред
1. рдХрдгреЛрдВ рдХрд╛ рдмрдирд╛рд╡рдЯ
рдХрдгреЛрдВ рдореЗрдВ рдмрдирд╛рд╡рдЯ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдордиреЗ рдмрдлрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛:
struct VertexData { float x,y,z; float u,v;
рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп рдорд╛рдиреЛрдВ рдХреЛ рдпреВ рдФрд░ рд╡реА рдХреЛ рд╢реВрдиреНрдп рдкрд░ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдмрдлрд░ рдмрдирд╛рддреЗ рд╕рдордп рдЭрдВрдбреЗ рдХреЛ рдмрджрд▓рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдмрдлрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг:
device->CreateVertexBuffer(count*sizeof(VertexData), D3DUSAGE_WRITEONLY, D3DFVF_XYZ | D3DFVF_TEX0, D3DPOOL_DEFAULT, &pVertexObject, NULL);
рдзреНрд╡рдЬ рдХреЛ рдЬреЛрдбрд╝реЗрдВ D3DFVF_TEX0, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдмрдирд╛рд╡рдЯ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред рд╣рдо рд╢реАрд░реНрд╖ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдХреНрддрд┐ рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдФрд░ рдЕрдм рдпрд╣ рдмрдирд╛рд╡рдЯ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд░реЗрдВрдбрд░ рд╕реНрдЯреЗрдЯреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:
float pointSize = 5;
рдореИрдВ рд╕рднреА рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА MSDN рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
IDirect3DTexture9 *particleTexture = NULL, D3DXCreateTextureFromFile(device, L"particle.png", &particleTexture);
рд╣рдо рдмрдирд╛рд╡рдЯ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрдг рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧрд╛ред
рдпрд╣реА рд╣реИ, рдЕрдм рдЬрдм рдЖрдк рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рд╛рдзрд╛рд░рдг рдбреЙрдЯреНрд╕ рдХреЗ рдмрдЬрд╛рдп рдмрдирд╛рд╡рдЯ рд╡рд╛рд▓реЗ рдХрдг рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдо рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдЫрд╡рд┐ рдкрд░ рдПрдХ рд╕рд░рд▓ рдкреНрд░рднрд╛рд╡ рдЬреЛрдбрд╝реЗрдВрдЧреЗред
рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкрд░рд┐рдгрд╛рдо:
2. рдкреНрд░рднрд╛рд╡
рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП,
рдПрдлрдПрдХреНрд╕ рд╕рдВрдЧреАрддрдХрд╛рд░ рдирд╛рдордХ рдПрдирд╡реАрдЖрдИрдбреАрдЖрдИрдП рд╕реЗ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИред рд╢реЗрдбреНрд╕ рдХреЗ рд╕рдорд░реНрдерд┐рдд рдбрд┐рдмрдЧрд┐рдВрдЧ, 4 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╢реЗрдбреНрд╕, DIrect3D (9, 10) рдФрд░ рдУрдкрдирдЬреАрдПрд▓ред рдореИрдВ рдЗрд╕рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рднрд╛рд╡реЛрдВ рдХреА рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╢реЗрдбрд░ рдПрдХ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред рд╢реАрд░реНрд╖ shader рдХреЛ рд╢реАрд░реНрд╖ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдкрд┐рдХреНрд╕реЗрд▓ рд░рдВрдЧ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдкреНрд░рднрд╛рд╡ рдХреЛ рдХрдИ
рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╣реИ ред рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рднрд╛рд╡ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рднрд╛рд╡ рднреАред
рдкреНрд░рддреНрдпреЗрдХ рддрдХрдиреАрдХ рдореЗрдВ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рджреГрд╢реНрдп рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВред
рдпрд╣ рдЖрдкрдХреЗ рд╕рд░рд▓ рдкреНрд░рднрд╛рд╡ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рдХрдгреЛрдВ рдХреЛ рд░рдВрдЧ рджреЗрдЧрд╛:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда рдЗрд╕ рдЖрд╢рдп рдХрд╛ рдХреЛрдб рдЙрд╕ рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪрд╛ рдерд╛ред рд╣рдордиреЗ рдХреЗрд╡рд▓ рдорд▓реНрдЯреАрдкреНрд▓реА рдмреНрд▓реЗрдВрдб рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рд▓ рд░рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдореНрдорд┐рд╢реНрд░рдг рдЬреЛрдбрд╝рд╛ред рдпрд╣рд╛рдБ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ рд╣реИ:
рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╕рдореНрдорд┐рд╢реНрд░рдг рдореЛрдб рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдореНрдорд┐рд╢реНрд░рдг рдПрдХ рд░рдВрдЧ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдкреВрд░реА рдмрдирд╛рд╡рдЯ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрдгреЛрдВ рдФрд░ рдмрдирд╛рд╡рдЯ рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдорд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд░реЗрдВрдбрд░ рдЯрд╛рд░рдЧреЗрдЯ (рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЯрд╛рд░рдЧреЗрдЯ) рдирд╛рдордХ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддрдХрдиреАрдХ рдХрд╛ рд╕рд╛рд░ рд╕рд░рд▓ рд╣реИ, рд╣рдо рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХреЛ рдПрдХ рдмрдирд╛рд╡рдЯ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА rasterized рдЫрд╡рд┐ рдкрд░ рдкреНрд░рднрд╛рд╡ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдкреВрд░рд╛ рдкреНрд░рднрд╛рд╡ рдХреЛрдб рд╣реИ рдЬреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда float4x4 WorldViewProj; texture Base < string UIName = "Base Texture"; string ResourceType = "2D"; >; sampler2D BaseTexture = sampler_state { Texture = <Base>; AddressU = Wrap; AddressV = Wrap; }; texture Overlay < string UIName = "Overlay Texture"; string ResourceType = "2D"; >; sampler2D OverlayTexture = sampler_state { Texture = <Overlay>; AddressU = Wrap; AddressV = Wrap; };
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛, рджреГрд╢реНрдп рдХрд╛ рдПрдХ рдФрд░ рдЪрд░рдг рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рд╣рдо рдХрдгреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╡реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдмрдирд╛рд╡рдЯ рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреГрд╢реНрдп рдХреЗ рджреВрд╕рд░реЗ рдкрд╛рд╕ рдореЗрдВ, рд╣рдо рд░реИрдЦрд┐рдХ рд▓рд╛рдЗрдЯ рд╕рдореНрдорд┐рд╢реНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐ рдкрд░ рдПрдХ рдФрд░ рдмрдирд╛рд╡рдЯ рд▓рдЧрд╛рддреЗ рд╣реИрдВред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╣рдордиреЗ рдЗрдлреЗрдХреНрдЯреНрд╕ рдмрдирд╛рдП, рдпрд╣ рдЗрдлреЗрдХреНрдЯреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рд╣рдореЗрдВ рдПрдХ рдкреНрд░рднрд╛рд╡ рдХреЛрдб рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрдирд╛рд╡рдЯ рд▓реЛрдб рдХрд░реЗрдВ, рдФрд░ рдПрдХ рдмрдирд╛рд╡рдЯ рднреА рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВрдЧреЗред
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда ID3DXBuffer* errorBuffer = 0; D3DXCreateEffectFromFile(
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрдХрдиреАрдХ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдмрдирд╛рд╡рдЯ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕реНрд╡рдпрдВ рдмрдирд╛рд╡рдЯ, рдореВрд▓ рджреГрд╢реНрдп рдХрд╛ рдЖрдХрд╛рд░ рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕рддрд╣ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рддрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рд╡рдЯ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда рдХреЛрдб рдореЗрдВ рд╣рдордиреЗ
DrawRect () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЖрдпрдд рдЦреАрдВрдЪрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдПрдХ
RenderTexture рдмрдирд╛рд╡рдЯ
рд╕реБрдкрд░рд┐рдВрдкрд▓ рд╣реИред рдпрд╣ рддрдХрдиреАрдХ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдмрдирд╛рд╡рдЯ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рдЖрдЧреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдпрдд рдЬрд┐рд╕реЗ рд╣рдо рдЦреАрдВрдЪрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдкреВрд░реЗ рд╕реНрдХреНрд░реАрди рд╕реНрдерд╛рди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗ, рдЗрд╕рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд╡рд░реНрдЯрд┐рдХрд▓ рдФрд░ рдЖрдпрдд рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛, рддрд╛рдХрд┐ рдЖрд░реНрдЯрд┐рдХрд▓ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рди рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдПрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдХрдгреЛрдВ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рд╣реИ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдкреНрд░рднрд╛рд╡ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: рдкрд╣рд▓реЗ рд╣рдо
рд╢реБрд░реБрдЖрдд () рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ, рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдкреНрд░рддрд┐рдкрд╛рджрди рдкрд╛рд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдлрд┐рд░, рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рд╕ рд╕реЗ рдкрд╣рд▓реЗ,
BeginPass (i) , рдФрд░
EndPass () рдХреЗ рдмрд╛рдж рдХреЙрд▓ рдХрд░реЗрдВред рдЕрдВрдд рдореЗрдВ, рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо
рдПрдВрдб () рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ рд╣реИ:
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░, рдЖрдк рд╕рднреА рдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб
GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред рдзреНрдпрд╛рди рджреЗрдВ, рд╕рдВрдХрд▓рд┐рдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
VisualC ++ Redistributable 2012 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдпреБрдкреАрдбреАрдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдбреА 3 рдбреА 9 рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдирд╛ рд╣реИ, рдпрд╛ рдЬреЛ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдЧрдгрдирд╛ рдЬреАрдкреАрдпреВ рдкрд░ рдХреА рдЬрд╛рдП - рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдХреЗрд╡рд▓ рдбреА 3 рдбреА 10 рдкрд░ред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣,
GitHub рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдбреЗрдореЛ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред GPU рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рд╕рдВрд▓рдЧреНрди рд╣реИрдВ :)