我正在寻找一种非常快速的方法来渲染带有SDL2三层的平铺地图.
我正在使用SDL_RenderCopy,但它很慢……
我正在使用SDL_RenderCopy,但它很慢……
解决方法
好的,我找到了我需要的东西,所以我会在这里解释一下.
我实际上有四层,我曾经在一个简单的for循环中渲染它们.
实际上,for循环不是渲染平铺地图的好方法.
最好的方法是在主渲染循环之前将每个图层渲染为大纹理,然后将每个大纹理渲染到屏幕. for循环需要花费大量时间来处理,然而,渲染大纹理非常快.
考虑到“bigTexture”是一个图层,“width”和“height”是该图层的大小,请查看以下代码.
Uint32 pixelFormat; SDL_QueryTexture(tileset,&pixelFormat,NULL,NULL); SDL_Texture *bigTexture = SDL_CreateTexture(renderer,pixelFormat,SDL_TEXTUREACCESS_TARGET,width,height); SDL_SetRenderTarget(renderer,bigTexture); // Put your for loop here
它完成后,我们将图层加载到一个大的纹理中.让我们看看如何呈现它.
SDL_SetRenderTarget(renderer,NULL); // Create a SDL_Rect which defines the big texture's part to display,ie the big texture's part visible in the window. // Display the big texture with a simple SDL_RenderCopy
就这样.您现在能够以非常快的速度渲染平铺地图.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。