рдФрд░ рдлрд┐рд░, рд╣реЗрдмреНрд░рд╛рд╡реЗрдЯреНрд╕ рдХреЛ рдирдорд╕реНрдХрд╛рд░!

рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ - рдореИрдВрдиреЗ XNA рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдХреВрд▓ рдЧреЗрдо рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА
рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛
рд╢реБрд░реВ рдХреА , рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕реНрдЯреВрдбрд┐рдпреЛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЦреБрдж рдХреЛ 2 рдбреА рдЧреЗрдо рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд▓реЗрдВрдЧреЗред
рдЗрд╕ рдмрд╛рд░, рд╣рдо рдбреНрд░рд╛ рдкрд░ рдПрдХ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рд░рдЦреЗрдВрдЧреЗ рдФрд░ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдХрдг рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдЦреЗрдВрдЧреЗред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреМрди рд╕реЗ рд╡рд┐рд╖рдп рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ:
- SpriteBatch.Begin () рдФрд░ spriteBatch.Draw () рддрд░реАрдХреЗ
- рдХрдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛:
- рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ shader рдХреНрдпрд╛ рд╣реИ?
- рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рд╣реИ
- RenderTarget2D рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛
рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдбрд┐рд╕реНрдореЗрдВрдореЗрдиреИрдЯ-рдореИрдк рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдЯрд░реНрдмрд┐рдВрдЧ рд╢реЗрдбрд░
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдкрд╣рд▓реЗ рд╕рд┐рджреНрдзрд╛рдВрдд, рдлрд┐рд░ рдХреЛрдб
pies ред
SpriteBatch.Begin () рд╡рд┐рдзрд┐
рд╣рдордиреЗ рдЪрд░реНрдЪрд╛ рдХреА рдХрд┐
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдХреИрд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЖрдЗрдП рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВ:
spriteBatch.Begin ()
spriteBatch.Begin(SpriteSortMode, BlendState, SamplerState, DepthStencilState, RasterizerState, Effect, Matrix);
рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рдХреБрдЫ рдХреИрд╕реЗ рдЦреАрдВрдЪрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐ рдЕрдзрд┐рднрд╛рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд╣рдо рд╕рдм рдХреБрдЫ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
SpriteSortMode - рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ред рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред
BlendState рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
Additive - "рдПрдбрд┐рдЯрд┐рд╡ рдорд┐рдХреНрд╕" рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧред рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рддрд╛ рд╣реИред
AlphaBlend - "рдЕрд▓реНрдлрд╛ рдорд┐рд╢реНрд░рдг" рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧред рд╕реБрдкрд░рдЗрдореЛрдЬрд╝ рдПрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд╕рд░реЗ рдкрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИред
NonPremultiplied - "рдЧреИрд░- premultipled рдЕрд▓реНрдлрд╛ рдХреЗ рд╕рд╛рде рд╕рдореНрдорд┐рд╢реНрд░рдг" рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧ, рдбреНрд░рд╛ рдЕрд▓реНрдлрд╛ рдЕрд▓реНрдлрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИред
рдЕрдкрд╛рд░рджрд░реНрд╢реА - "рдЕрдкрд╛рд░рджрд░реНрд╢реА рдорд┐рд╢реНрд░рдг" рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдирд╛, рдПрдХ рдХреЛ рджреВрд╕рд░реЗ рдкрд░ рдлреИрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рдЦрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ "рдУрд╡рд░рд░рд╛рдЗрдЯрд┐рдВрдЧ"ред
SamplerState рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
AnisotropicClamp - anisotropic рдЫрд╛рдирдиреЗ рдФрд░ TextureUV - рдХреНрд▓реИрдВрдк рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ
AnisotropicWrap - anisotropic рдЫрд╛рдирдиреЗ рдФрд░ TextureUV - рд▓рдкреЗрдЯреЗрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ
...
рдореЛрдЯреЗ рддреМрд░ рдкрд░,
рдХреНрд▓реИрдореНрдк - рдмрдирд╛рд╡рдЯ рдХреЛ рдлреИрд▓рд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЯрд╛рдИрд▓реНрд╕ (рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ)ред
рд╣рдо рдмрдирд╛рд╡рдЯ 55x20 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ (рдХреНрд▓реИрдВрдк) рдкрд╛рдВрдЪ рдмрд╛рд░ рдлреИрд▓рд╛рддреЗ рд╣реИрдВ, рдЕрдВрддрд░
рдЕрдирд┐рд╕реЛрдЯреНрд░реЛрдкрд┐рдХ / рд░реИрдЦрд┐рдХ, рдкреНрд╡рд╛рдЗрдВрдЯ :
рдЕрдирд┐рд╕реЛрдЯреНрд░реЛрдкрд┐рдХ / рд░реИрдЦрд┐рдХ :
рдмрд┐рдВрджреБ :
рдбреЗрдкреНрде рд╕реНрдЯреИрдВрд╕рд┐рд▓рд╕реНрдЯреЗрдЯ - рдлрд┐рд░ рд╕реЗ рдЫрдВрдЯрдиреА, рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
RasterizerState - 2D рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдкреНрд░рднрд╛рд╡ - рдПрдХ рд╢реЗрдбрд░ (рдкреНрд░рднрд╛рд╡) рдЬреЛ рдЦреАрдВрдЪреА рдЧрдИ рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ред
рдореИрдЯреНрд░рд┐рдХреНрд╕ - рдПрдХ рд╡рд╕реНрддреБ рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк 2 рдбреА рдХреИрдорд░рд╛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)
рдЙрд╕ рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рд╢реБрд░реБрдЖрддреА рдФрд░ рдЕрдВрдд рдХреЗ рдмреАрдЪ рд╢рд╛рдорд┐рд▓ рд╣реИред
SpriteBatch.Draw () рд╡рд┐рдзрд┐
spriteBatch.Draw(Texture2D texture, Vector2D position, Rectangle sourceDest, Color color, float angle, Vector2D origin, Vector2D scale, SpriteEffects effects, float layerDepth);
рдмрдирд╛рд╡рдЯ - рдмрдирд╛рд╡рдЯ рд╣реА, рдЬрд┐рд╕реЗ рд╣рдо рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред
рд╕реНрдерд┐рддрд┐ - рд╕реНрдХреНрд░реАрди рдкрд░ рд╕реНрдерд┐рддрд┐ (рджреБрдирд┐рдпрд╛, рдЕрдЧрд░ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ: "рдХреИрдорд░рд╛")ред
sourceDest - рдмрдирд╛рд╡рдЯ рд╕реЗ рдПрдХ рдЖрдпрдд (рдмрдирд╛рд╡рдЯ рдХрд╛ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рдЬреЛ рд╣рдо рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдпрджрд┐ рд╕рднреА, рддреЛ
рдирдпрд╛ рдЖрдпрдд (0, 0, width_texture, height_texture )
рд░рдВрдЧ - рд╡рд╕реНрддреБ рдХрд╛ рд░рдВрдЧред
рдХреЛрдг - рдШреБрдорд╛рд╡ рдХрд╛ рдХреЛрдгред
рдЙрддреНрдкрддреНрддрд┐ - рдмрдирд╛рд╡рдЯ рдХреА рддрдерд╛рдХрдерд┐рдд рдСрдлрд╕реЗрдЯ рдпрд╛ "рджреНрд░рд╡реНрдпрдорд╛рди рдХрд╛ рдХреЗрдВрджреНрд░"ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ NxM рдкрд┐рдХреНрд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рд╡рдЯ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред
рд╕реНрдХреЗрд▓ - X рдФрд░ Y рдореЗрдВ рдмрдирд╛рд╡рдЯ рдХрд╛ рдЖрдХрд╛рд░
рдкреНрд░рднрд╛рд╡ - рдПрдХ рдмрдирд╛рд╡рдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рднрд╛рд╡, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдЖрдк рдЗрд╕рдХреА рджрд░реНрдкрдг рдЫрд╡рд┐ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдпрд░рдбреЗрдк - рдкрд░рдд рдХреА рдЧрд╣рд░рд╛рдИред
рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ - рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ред
рдХрдг рдкреНрд░рдгрд╛рд▓реА
рдЪрд▓реЛ рдХрдгреЛрдВ рдХреА рдПрдХ рд╕рд░рд▓ рдкреНрд░рдгрд╛рд▓реА рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рдирд┐рд╢рд╛рди (рдирд┐рд╢рд╛рди, рдЯреНрд░реЗрди, рдкреВрдВрдЫ) рд╣реИ, рдЬреЛ рдорд╛рдЙрд╕ рдХреЗ рдЖрдВрджреЛрд▓рди рд╕реЗ рд░рд╣реЗрдЧрд╛ред
рдЕрдЧрд▓рд╛ рдХреЛрдб рд╣реИред
рд╣рдо рдПрдХ рдирдпрд╛ рдХрдг рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ, рдпрд╣ рд╣рдорд╛рд░рд╛ рдПрдХрд▓ рдХрдг (рдзреБрдЖрдВ, рдЪрд┐рдВрдЧрд╛рд░реА,
рдкреИрд╕рд╛ ) рд╣реЛрдЧрд╛, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; using System.Diagnostics; namespace ParticleSystem { public class Particle { public Texture2D Texture { get; set; }
рдЕрдм, рдЖрдкрдХреЛ рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЦреЗрд▓ рдХреЗ рд╕рднреА рдХрдгреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗ, рдЪрд▓реЛ рдЗрд╕реЗ рдХрдг рдХрдг рдХрд╣рддреЗ рд╣реИрдВ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реВрдЪреА:
using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; using System.Diagnostics; namespace ParticleSystem { class ParticleController { public List<Particle> particles; private Texture2D dot;
рдФрд░ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдореЗрдВ, рд╣рдо рд▓реЛрдбрдХреЙрдиреНрдЯреЗрдВрдЯ, рдЕрдкрдбреЗрдЯ, рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдбреНрд░рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЙрд╕реА рд╕рдордп рдкреНрд░рддреНрдпреЗрдХ рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рдХрдгреЛрдВ рдХреА рдкреАрдврд╝реА рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
particleController.EngineRocket(new Vector2(Mouse.GetState().X, Mouse.GetState().Y));
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдорд╛рдЙрд╕ рдХреЛ рд╣рд┐рд▓рд╛рддреЗ рд╣реИрдВ, рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ:

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдФрд░ рднреА рд╕реБрдВрджрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╢реЗрдб рдЬреЛрдбрд╝реЗрдВред рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХрд╛ рдЖрдпрддрди рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
рдореИрдВ
рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░
рдбреЗрдореЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реВрдВред
рдЕрдЧрд▓реА рдмрд╛рд░ рддрдХ;)UPD: рд▓реЗрдЦ рдХрд╛
рджреВрд╕рд░рд╛ рднрд╛рдЧред