随笔分类 - 读书笔记
《逐梦旅程 WINDOWS游戏编程之从零开始》笔记10——三维天空的构建&三维粒子的实现&多游戏模型的载入
摘要:第23章 三维天空的构建 目前描述三维天空的技术主要包括三种类型,直接来介绍使用最广泛的模拟技术,详细的描述可以见作者的博文。 天空盒(Sky Box),即放到场景的是一个立方体。它是目前使用最广泛的三维天空模拟技术,网络上素材丰富,所以这次就用教大家用天空盒来模拟三维天空。天空盒经常是由24个顶点
阅读全文
《逐梦旅程 WINDOWS游戏编程之从零开始》笔记9——游戏摄像机&三维地形的构建
摘要:第21章 游戏摄像机的构建 之前的程序示例,都是通过封装的DirectInput类来处理键盘和鼠标的输入,对应地改变我们人物模型的世界矩阵来达到移动物体,改变观察点的效果。其实我们的观察方向乃至观察点都是没有变的,变的只是我们3D人物的位置。说白了就是用D3DXMatrixLookAtLH在资源初始
阅读全文
《逐梦旅程 WINDOWS游戏编程之从零开始》笔记8——载入三维模型&Alpha混合技术&深度测试与Z缓存
摘要:第17章 三维游戏模型的载入 主要是如何从3ds max中导出.X文件,以及如何从X文件加载三维模型到DirextX游戏程序里。因为复杂的3D物体,要用代码去实现,那太反人类了,所以我们需要一些建模软件。 对于3ds max,要到出.X文件,要装个Panda插件。然后就是作者推荐的一个3D模型资源网
阅读全文
《逐梦旅程 WINDOWS游戏编程之从零开始》笔记7——DirectInput&纹理映射
摘要:第15章 DirectInput接口 DirectInput作为DirectX的组件之一,依然是一些COM对象的集合。DirectInput由IDirectinput8、IDirectInputDevice8和IDirectInputEffect这3个接口组成。其中IDirectInput8作为Di
阅读全文
《逐梦旅程 WINDOWS游戏编程之从零开始》笔记6——四大变换&光照与材质
摘要:第13章 四大变换 在Direct3D中,如果为进行任何空间坐标变换而直接绘图的话,图形将始终处于应用程序窗口的中心位置,默认这个位置就成为世界坐标系的原点(0,0,0)。而且我们也不能改变观察图形的视角方向。默认情况下的观察方向是世界坐标系的z轴正向方向。 世界变换运算是为了能在世界空间中的指定位
阅读全文
《逐梦旅程 WINDOWS游戏编程之从零开始》笔记5——Direct3D中的顶点缓存和索引缓存
摘要:第12章 Direct3D绘制基础 1. 顶点缓存 计算机所描绘的3D图形是通过多边形网格来构成的,网网格勾勒出轮廓,然后在网格轮廓的表面上贴上相应的图片,这样就构成了一个3D模型。三角形网格是构建物体模型的基本单元,而一个三角形有3个顶点,为了能够使用大量三角形组成三角形网格来描述物体,需要首先定
阅读全文
《逐梦旅程 WINDOWS游戏编程之从零开始》笔记4——Direct3D编程基础
摘要:第11章 Direct3D编程基础 2D游戏是贴图的艺术,3D游戏是渲染的艺术。这句话在我学过了之前的GDI编程之后,前一句算是有所体会,现在是来理解后一句的时候了。 安装DirectX SDK配置啥的就不说了,直接进入正题,先来个典型的Direct3D程序框架图: 主要分为5个部分: 创建一个Wi
阅读全文
《逐梦旅程 WINDOWS游戏编程之从零开始》笔记2——透明贴图,动画技术
摘要:第5章 透明贴图 像这样直接贴图会产生这种情况,所以我们需要透明贴图。 透明遮罩法:主要利用BitBlt函数中Raser(光栅)值的运算,需要准备素材图和遮罩图: 这个方法的原理解释见书131页。 示例程序: 1 #include <windows.h> 2 3 #define WINDOW_WID
阅读全文
《逐梦旅程 WINDOWS游戏编程之从零开始》笔记3——输入消息处理,物理建模与粒子系统初步
摘要:第7章 Windows游戏输入消息处理 1. 键盘消息处理 之前提到的窗口过程函数有两参数与消息输出有关——wParam和llParam 当键盘消息触发时,wParam的值为按下按键的虚拟键码,lParam则存储按键的相关状态的信息,因此,如果要对键盘输入的消息进行处理,就可以用一个switch来判
阅读全文
《逐梦旅程 WINDOWS游戏编程之从零开始》笔记1——创建窗口&GDI
摘要:第1章 创建窗口 步骤: 窗口类的设计 窗口类的注册 窗口的正式创建 窗口的显示与更新 消息循环体系 窗口过程函数处理消息 1. 设计:使用WNDCLASSEX结构体,这里注意的是C++中的结构体中的成员默认是共有的,所以可以直接通过 . 来调用。 关于这个结构体的具体说明见msdn文档:https
阅读全文
《java并发编程实战》读书笔记13--Java内存模型,重排序,Happens-Before
摘要:第16章 Java内存模型 终于看到这本书的最后一章了,嘿嘿,以后把这本书的英文版再翻翻。这本书中尽可能回避了java内存模型(JMM)的底层细节,而将重点放在一些高层设计问题,例如安全发布,同步策略等。它们的安全性都来自于JMM。本章将介绍Java内存模型的底层需求以及所提供的保证。 16.1 什
阅读全文
《java并发编程实战》读书笔记12--原子变量,非阻塞算法,CAS
摘要:第15章 原子变量与非阻塞同步机制 近年来,在并发算法领域的大多数研究都侧重于非阻塞算法,这种算法用底层的原子机器指令(例如比较并交换指令)代替锁老确保数据在并发访问中的一致性。 15.1 锁的劣势 这个不多说了,详细见p262 15.2 硬件对并发的支持 独占锁是一项悲观的技术,它假设最坏的情况。
阅读全文
《java并发编程实战》读书笔记11--构建自定义的同步工具,条件队列,Condition,AQS
摘要:第14章 构建自定义的同步工具 本章将介绍实现状态依赖性的各种选择,以及在使用平台提供的状态依赖机制时需要遵守的各项规则。 14.1 状态依赖性的管理 对于并发对象上依赖状态的方法,虽然有时候在前提条件不满足的情况下不会失败,但通常有一种更好的选择,即等待前提条件为真。依赖状态的操作可以阻塞知道可以
阅读全文
《java并发编程实战》读书笔记10--显示锁Lock,轮询、定时、读写锁
摘要:第13章 显示锁 终于看到了这本书的最后一本分,呼呼呼,真不容易。其实说实在的,我不喜欢半途而废,有其开始,就一定要有结束,否则的话就感觉哪里乖乖的。 java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile。java5.0增加了一种新的机制:Reen
阅读全文
《java并发编程实战》读书笔记9--并发程序的测试
摘要:第12章 并发程序的测试 大致分为两类:安全性测试和活跃性测试 12.1 正确性测试 找出需要检查的不变性条件和后验条件。接下来将构建一组测试用例来测试一个有界缓存。程序清单12-1给出了BoundedBuffer的实现,其中使用Semaphore来实现缓存的有界属性和阻塞行为。 BoundedBu
阅读全文
《java并发编程实战》读书笔记8--死锁,性能与可伸缩性,锁粒度锁分解锁分段
摘要:第10章 避免活跃性危险 10.1 死锁 -10.1.1 锁顺序死锁 最简单的一种死锁形式: -10.1.2 动态的锁顺序死锁 可以通过下面的方法来解决: -10.1.3 在协作对象之间发生死锁 -10.1.4 开放调用 如果在调用某个方法时不需要持有锁,那么这种调用就被称为开放调用。 -10.1.
阅读全文
《java并发编程实战》读书笔记7--线程池的使用
摘要:第8章 线程池的使用 8.1 在任务与执行策略之间的隐性耦合 虽然Executor框架为制定和修改执行策略都提供了相当大的灵活性,但并非所有的任务都适用所有的执行策略。有些类型的任务需要明确地指明执行策略: 依赖性任务 使用线程封闭机制的任务 对响应时间敏感的任务 使用ThreadLocal的任务
阅读全文
《java并发编程实战》读书笔记6--取消与关闭
摘要:第7章 取消与关闭 这章的主要内容是关于如何使任务和线程安全,快速,可靠的停止下来。 7.1 任务取消 在Java中没有一种安全的抢占方式来停止线程,但是可以使用一些协作机制,比如: 让素数生成器运行1秒后取消(并不会刚好在运行1秒后停止,因为在请求取消的时刻和run方法中循环执行下一次检查之间可能
阅读全文
《java并发编程实战》读书笔记5--任务执行, Executor框架
摘要:第6章 任务执行 6.1 在线程中执行任务 第一步要找出清晰的任务边界。大多数服务器应用程序都提供了一种自然的任务边界选择方式:以独立的请求为边界。 -6.6.1 串行地执行任务 最简单的任务调度策略是在单个线程中串行地执行各项任务。 虽然简单明了,但是每次只能处理一个请求。当服务器正在处理请求时,
阅读全文
《java并发编程实战》读书笔记4--基础构建模块,java中的同步容器类&并发容器类&同步工具类,消费者模式
摘要:上一章说道委托是创建线程安全类的一个最有效策略,只需让现有的线程安全的类管理所有的状态即可。那么这章便说的是怎么利用java平台类库的并发基础构建模块呢? 5.1 同步容器类 包括Vector和Hashtable,此外还包括在JDK1.2中添加的一些功能相似的类,这些同步的封装器类由Collecti
阅读全文