首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

XNA 基礎(02):繪製基礎與 SpriteBatch 詳解

     編輯:關於.NET

繪製是圖形引擎核心。XNA 使用 SpriteBatch 繪製 Sprite(精靈),外觀由 Texture2D 等紋理決定。

素材管道

將圖片、模型、聲音等素材透過 Content Pipeline 於編譯期轉為 XNA 可識別格式。專案預設 Content 資料夾存放素材,各素材有唯一 AssetName。

Texture2D texture = Content.Load<Texture2D>(@"Image\logo"); // 在 LoadContent 中呼叫

透明繪製

兩種方式:圖片本身透明背景,或將透明區設為純洋紅色(255,0,255)。需 SpriteBlendMode.AlphaBlend(預設)。

層深度

預設按呼叫順序決定遮蓋關係。可在 Draw 指定 layerDepth(0~1)控制繪製順序。

標準渲染流程

protected override void Draw(GameTime gameTime) {
    GraphicsDevice.Clear(Color.Black);
    spriteBatch.Begin();
    spriteBatch.Draw(...);
    spriteBatch.End();
    base.Draw(gameTime);
}
  1. GraphicsDevice.Clear() 清除背景
  2. SpriteBatch.Begin() 通知顯示卡準備繪製
  3. 多次 Draw() 繪製所有元件
  4. SpriteBatch.End() 結束繪製
  5. 顯示卡呈現結果

SpriteBatch.Begin 多載參數

  • SpriteBlendMode:色彩混合模式(預設 AlphaBlend)
  • SpriteSortMode:排序模式(關聯層深度)
  • SaveStateMode:是否保存圖形裝置狀態
  • TransformMatrix:旋轉、縮放變換矩陣

Draw 核心參數

Draw(Texture2D texture, Vector2 position, Rectangle? sourceRectangle,
     Color color, float rotation, Vector2 origin, float scale,
     SpriteEffects effects, float layerDepth)
  • texture:紋理
  • position:左上角位置
  • sourceRectangle:來源紋理區域(null 為整張)
  • color:色彩調制
  • rotation/origin/scale/effects:旋轉中心、縮放、翻轉
  • layerDepth:層深度

為何每幀全螢幕重繪?

追蹤局部變更需複雜管理器,且移動 Sprite 會露出被遮擋物件,連鎖效應極難處理。每幀全螢幕重繪反而簡單高效。

下一節將講解幀率相關知識。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved