解决屏幕滚动问题的最佳方法是什么? 而且,如何仅显示我的地图(地形)的正确“部分”?
答案 0 :(得分:2)
在常规GUI开发中,方法是使用ViewPort。不确定您的平台细节,但ViewPort负责用户可以看到的内容,同时跟踪ViewPort适合的较大“大地图”的位置。在常规GUI编程中,您可以使用滚动条移动,但您可能需要自己管理移动它。
ViewPort的基本前提是文档比用户看到的要大得多。我猜测Sdl.NET本身没有这样的构造。 (我找不到API文档)。你可以自己创建一个,它将负责将背景的右侧部分或大地图映射到屏幕本身。 ViewPort只需几个点即可跟踪屏幕的左上角和屏幕的右下角。给自己一些方法来移动ViewPort并确保它在Big Map的边界内。
之后,这只是将它们捆绑在一起的问题。
在场景中拥有所有对象的树并不罕见,这样您就可以确保只显示应该在屏幕中的对象。这将有助于您的“绘制”功能自动地将背景和视口内的任何前景元素进行blit。
答案 1 :(得分:1)
这听起来像是使用四元图的好机会。这将允许您“切割”大地图并在运行中加载“碎片”
答案 2 :(得分:1)
我只是用谷歌搜索了一下,发现了这个,这可能是你想要的: http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/gfxsdl/tut6
查找DrawImg
和DrawScroll
函数。