“排序贴图”是源自于物体远近呈现的一种贴图概念。回忆我们之前笔记的贴图思想,先进行距离比较远的物体的贴图操作,然后再进行近距离物体的贴图操作,一旦定出贴图的顺序之后就无法再改变了。
然而这样的作法在画面上物体会彼此遮掩的情况下就会不适用。也许会出现后面的物体反而遮住了前面的物体的这种不协调的画面。为了避免这种因为贴图顺序而固定而产生的错误画面,必须在每一次窗口重新显示时动态地重新决定画面上每一个物体的贴图顺序。
那么,如何动态决定贴图顺序呢?我们可以采用排序的方式。
为了演示排序如何运用在贴图中,我们举一个例子。假设现在有10只要进行贴图的小牛图案,先把它存在一个数组之中,从2D平面的远近角度来看,Y轴坐标比较小的是比较远的物体。如果我们以小牛的Y轴坐标(要排序的值被我们称作键值)来对小牛数组由小到大进行排序,最后会使得Y轴坐标小的小牛排在数组的前面,而进行画面贴图时则由数组由小到大一个个进行处理,这样便可实现“远的物体先贴图“的目的了。
这里我们使用气泡排序(BubbleSort)作为我们的排序法,因为此方法有程序代码简单,排序效率中等,属于稳定(stable)排序法的特点。这里的稳定排序法的特性,会使得Y轴坐标相同的物体,不必再去考虑它X坐标上的排序。
下面我们贴出以C/C++写出的气泡排序法的代码,对”pop[ ]“数组的各数据成员的Y值为键值来排序,输出的参数为”n“表示要排序的数组大小:
各种排序法为C/C++中比较核心的知识点,还不太熟悉的朋友,可以参看各种C++的教程进行深入学习。在这里我就不多做介绍了。
接下来,我们来利用一个范例来演示气泡排序法在画面上贴图的运用,让动画能呈现出接近真实的远近层次效果。这个范例比较有趣,会产生多只恐龙随机跑动,每次进行画面贴图前先完成排序操作,并对恐龙跑动进行贴图坐标的修正,呈现出比较顺畅真实的动画来。
废话这里就不多说了,直接上已经详细注释的代码(这回的代码量就有些大了,不过我专门注释得更详细了些,其实它比之前的代码还更好懂):
程序运行结果如下:
从图中可以看出,由于贴图前进行了排序操作,因此使得恐龙彼此之间没有错误的遮掩。
我们也可以按自己的喜好,通过设定程序中最前面定义的draNum常数值来改变画面上出现的恐龙数目。
笔记十一到这里就结束了。
本节源代码请点击这里下载: 【Visual C++】Code_Note_11
感谢一直支持【VisualC++】游戏开发笔记系列专栏的朋友们,也请大家继续关注我的博客,我一有空就会把自己的学习心得,觉得比较好的知识点写出来和大家一起分享。
精通游戏开发的路还很长很长,非常希望能和大家一起交流,共同学习和进步。
大家看过后觉得有启发的话可以顶一下这篇文章,让更多的朋友有机会看到它。也希望大家可以多留言来和我探讨编程相关的问题。最后,谢谢大家一直的支持~~~
Theend
分享到:
相关推荐
"游戏开发笔记:Visual C++ 中的排序算法" 在游戏开发中,正确地排序物体的贴图顺序是非常重要的。今天,我们将讨论如何使用 Visual C++ 实现排序算法来解决这个问题。 在游戏开发中,我们经常需要处理大量的物体...
《Visual C++游戏开发经典案例详解》这本书是针对使用Visual C++进行游戏开发的专业指南,旨在帮助读者通过实例学习和掌握C++编程语言在游戏开发中的应用。书中的内容覆盖了从基础到高级的游戏开发技术,包括图形...
在《Visual C++ 游戏编程基础》这本书中,作者深入浅出地介绍了使用Visual C++进行游戏开发的基础知识和技巧。本部分压缩包包含了书中的部分源代码和相关资源,便于读者实践和理解。以下是关于这个主题的一些关键...
《Visual C++ 游戏开发案例实战》是一本专注于利用Microsoft的Visual C++环境进行游戏开发的实践教程。这本书由王浩编著,由清华大学出版社出版,提供了高清且带有书签的阅读体验,方便读者查阅和学习。在本书中,...
Visual+C++游戏编程基础源码Visual+C++游戏编程基础源码Visual+C++游戏编程基础源码Visual+C++游戏编程基础源码Visual+C++游戏编程基础源码Visual+C++游戏编程基础源码Visual+C++游戏编程基础源码Visual+C++游戏编程...
在本资源中,"Visual C++游戏开发案例(赋源码)"是一个针对初学者的教程,旨在帮助读者掌握使用C++进行游戏开发的基础技能。这个教程特别适合那些对编程和游戏开发感兴趣,但经验不足的人群。通过学习,你可以了解...
《Visual C++游戏开发经典案例详解》是一本介绍电脑游戏项目开发的初中级项目实践教程,书中以Visual C++为开发平台,详细介绍从游戏基础知识到游戏项目开发的实用技术。《Visual C++游戏开发经典案例详解》分为16章...
### Visual C++ 游戏开发技术与实例 #### 核心知识点概览 根据所提供的信息,我们可以提炼出以下几个核心知识点: 1. **Visual C++ 在游戏开发中的应用** 2. **游戏开发的基础概念** 3. **游戏编程的技术细节** ...
尽管已经过去多年,Visual C++这个IDE依然不过时,熟练使用它最好的方式就是通过大量的实战,《Visual C++ 6.0开发实例大全_基础卷》从visual c++6.0和C++语法讲起,一步一步带你成为C++大神。
这本书的内容深入浅出,涵盖了从基础到高级的各种技术,旨在帮助读者掌握使用Visual C++进行软件开发的核心技能。 首先,Visual C++是微软公司推出的一种集成开发环境,它集成了C++编译器、调试器以及其他开发工具...
《Visual C++游戏开发技术与实例》是一本深入探讨使用Microsoft Visual C++进行游戏开发的专业教程。本书结合实例,详细讲解了如何利用Visual C++的强大功能来构建游戏应用程序。Visual C++作为一款强大的编程环境,...
在“Visual C++游戏编程基础11”这个主题中,我们将会探讨使用Microsoft的Visual C++集成开发环境(IDE)来构建游戏的基础知识。Visual C++不仅是一个强大的编程工具,而且由于其对DirectX库的支持,它在游戏开发领域...
不过,我将根据标题、描述以及文件名中提及的“Visual C++数据库开发经典实例精解”这一主题,为您提供与该主题相关联的知识点。 Visual C++数据库开发是面向数据库编程的一个领域,主要侧重于使用Visual C++这一...
本书《VISUAL C++游戏开发经典案例详解》是一本专注于Visual C++平台的游戏开发教程,详细讲解了从基础的游戏理论知识到具体游戏项目开发的全过程。本书通过7个经典游戏案例,帮助读者深入理解游戏开发的核心技术和...
visual c++ 游戏开发案例教程 part 2
在深入探讨Visual C++游戏编程基础之前,我们首先需要理解什么是C++以及它在游戏开发中的重要性。C++是一种强大的、面向对象的编程语言,以其高效性、灵活性和广泛的库支持而闻名,使得它成为游戏开发者的首选工具。...
该例程首先讲解了动画的基础知识,然后通过实例代码,展示了如何使用Visual C++创建动画游戏。下面是对该例程的详细解释: 一、动画基础 动画是游戏的基础,了解动画的原理是学习游戏编程的前提。动画可以分为三种...
《Visual C++游戏编程基础 PDF+源码》是一本专注于教授使用Visual C++进行游戏编程的教程书籍。Visual C++是微软公司推出的一个集成开发环境(IDE),它提供了编写Windows平台应用程序所需的工具,尤其在游戏开发...
《Visual C++游戏编程基础》是一本面向初学者的书籍,旨在帮助读者掌握使用Microsoft的Visual C++环境进行游戏开发的基础知识。通过本书的源码,我们可以深入学习C++编程语言,了解游戏开发的基本概念和技术。 C++...