簡體   English   中英

關於下一行圖像動畫的SDL2和C ++

[英]SDL2 and C++ regarding image animation following a line

我正在編寫一個烏龜類,該類可以進行繪畫運動。 我沒有為此使用任何游戲循環。 該烏龜對象的用戶將發出如下命令:

Turtle t;
t.forward(50);
t.left(90);

Turtle構造函數負責窗口和渲染器的創建。 所有交互都是通過編程進行的。 不輪詢任何類型的鍵盤事件。 現在,我可以使用以下代碼渲染螺旋動畫:

int main(int argc, char* args[]){
    Turtle t;
    t.clear();

    t.color("red");
    int numofside = 100;
    t.shape("seaturtle");

    for (int i=0; i<numofside; i++)
    {
      t.forward(i + 5);
      t.left(75);
      SDL_RenderPresent(m_pRenderer);
      SDL_Delay(50);
    }

    SDL_Delay(5000);
    IMG_Quit();
    SDL_Quit();
}

現在的主要問題是如何使座席圖像遵循渲染的線條?

我了解使用幀(循環)在SDL2中制作動畫的概念,即清除屏幕,在當前位置渲染,增加x,y位置。

但是我無法清除屏幕,因為它將清除我已繪制的現有線條。

是否有任何SDL紋理功能可以使圖像顯示和隱藏,而無需刪除整個屏幕? 或有任何想法嗎?

您可以使用XOR繪制“海龜”。 然后重新繪制以擦除它。

您還可以跟蹤繪制的線條,因此,如果刪除顯示,則可以重新繪制所有線條。

或者,您可以使用多個繪圖表面。 一種用於“背景”,一種用於繪制線條,另一種用於“烏龜”。 然后,僅在烏龜表面移動時對其進行繪制/擦除/重新繪制,最后在彼此之上繪制所有圖層以顯示它。 一種多緩沖區方法。

保存您要繪制的內容,例如將它們放入向量中(通過抽象基類DrawInstruction* )。 然后您可以在清除屏幕后重畫。 向量是全局的,或者更好的是,您的Turtle類的成員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM