gpt4 book ai didi

c++ - SDL2 和 C++ 关于图像动画跟随一条线

转载 作者:行者123 更新时间:2023-11-28 02:04:19 26 4
gpt4 key购买 nike

我正在编写一个允许绘图移动的海龟类。我没有为此使用任何游戏循环。此乌龟对象的用户将发出如下命令:

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贴图函数可以在不删除整屏的情况下实现图片的显示和隐藏?或者有什么想法吗?

最佳答案

您可以使用异或来绘制“乌龟”。然后重绘它以将其删除。

您还可以跟踪绘制的线条,这样您就可以在删除显示时重新绘制它们。

或者您可以使用多个绘图表面。一种用于“背景”,一种用于您绘制的线条,一种用于“海龟”。然后你只在海龟移动时绘制/删除/重绘海龟表面,最后将所有层绘制在彼此之上以显示它。一种多缓冲区方法。

关于c++ - SDL2 和 C++ 关于图像动画跟随一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38205580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com