初学Direct X(8) ——碰撞检测】的更多相关文章

初学Direct X(8) --碰撞检测 真正让一个游戏鹤立鸡群的是程序对碰撞的响应有多好,这里介绍两种检测的方法: 1) 基于边框的碰撞检测 2) 基于距离的碰撞检测 1. 基于边框的碰撞检测 1.1 实现的基础 我们将要检测的两个物体(位图)视为两个矩形,在此基础之上,检测两矩形是否有重叠区域.若存在重叠区域,则发生了碰撞:反之则没有.检测两矩形是否有重叠到了Windows API,即IntersectRect,它的定义如下: BOOL IntersectRect( _Out_ LPRECT…
初学Direct X(4) 本文学着做出一个如下的小游戏 游戏方式是使用键盘控制红色的Bucket收集蓝色的炸弹 1.酝酿一下 现在我已经掌握: 将位图文件加载到内存 绘制位图到buckbuffer 获取外设输入 再来几个,获取表面的信息,例如宽和高 D3DSURFACE_DESC desc; source->GetDesc(&desc); 以及获取位图的信息,例如宽和高 D3DXIMAGE_INFO image_info; HRESULT result = D3DXGetImageInfo…
初学Direct X(7) --位图的旋转,缩放以及平移 本文旨在实现通过D3DXMatrixTransformation2D函数实现位图的旋转,缩放以及平移操作,但是具体的原理部分会在后面进一步的探讨. 1. 使用 下面是D3DXMatrixTransformation2D函数的定义: D3DXMATRIX* D3DXMatrixTransformation2D( _Inout_ D3DXMATRIX *pOut, _In_ const D3DXVECTOR2 *pScalingCenter,…
初学Direct X(10) -- D3D基础预备知识 1. 像素格式 D3DFMT_X8R8G8B8(F) X:未加使用 8:8位用于显示 B:用于显示蓝色 F:浮点像素类型 以下三个较为常用,使用其他之前务必验证显卡是否支持 D3DFMT_R8G8B8 D3DFMT_X8R8G8B8 D3DFMT_A8R8G8B8 2. 内存池 定义资源缓存的存储位置 可默认宏为:D3DPOOL_DEFAULT 3. 深度缓存 是只含有特定像素的深度信息而不含图像数据的表面,可用于判断物体的前后显示 D3D…
初学Direct X(9) --文字的显示 本次学习如何使用ID3DXFont创建字体,使得我们可以在任何安装了Windows系统中TrueType字体来打印文字,不过最好使用标准字体,这样文字在每一台PC上的显示才会和计划中的一样. 1. 显示前的准备 就像创建LPDIRECT3DDEVICE9一样,我们需要先声明一个接口: LPD3DXFONT font = NULL; 接着设置创建字体所需要的参数: typedef struct _D3DXFONT_DESCA { INT Height;…
初学Direct X(6) 这一文本应和上一篇放在一起的,但是上一章写着写着发现对Draw绘制透明位图的方式有感觉了,决定就单写一篇,留作笔记了. 那这一篇是记录如何使用位图表来绘制动画帧,想象一下,利用图1制作出来的图2 图1 图2 其实实现的方式不难,回忆一下在Draw函数中,有一个参数为pSrcRect,它可以在我们需要时取出在pTexture中指定的一部分,或者称之为图片单元,或者帧.根据可以取出指定部分的思路,只要计算出来下一帧的位图在pTexture中的坐标即可,帧数为framenu…
初学Direct X(5) 前面学习了使用表面绘制屏幕,但这种方法与另一种比较起来,有着绘图速度颇慢以及缺乏对任何透明类型的支持,这就是前面的篮框以及炸弹会有黑色背景的原因,这种方法就是纹理.他可以绘制出有透明效果的物体,即只显示对象本身的像素而没有背景. 1. 加载带有位图的纹理 应该要让纹理像表面一样有该有的功能,比如将位图加载于纹理上.要做到这个,首先得创建纹理对象,它是LPDIRECT3DTEXTURE9类型: LPDIRECT3DTEXTURE9 texture = NULL; 接着从…
初学Direct X(3) 1.获取外设输入--键盘以及鼠标 无论是获取鼠标还是键盘的设备,首先得初始化DirectInput,不过先把必要的环境先配置好: 所要用到的头文件以及库文件是(相比于前两次): #include <dinput.h> #pragma comment(lib,"dinput8.lib") #pragma comment(lib,"dxguid.lib") 以及要用到的DirectInput对象以及设备(包括键盘和鼠标)对象: L…
初学Direct X (2) 这一次要学习如何现实位图,尽管看过对双缓冲机制还有很多疑问,但是这并不阻碍我对他的入门了解 Direct3D提供了一个双重/后台缓冲区,在调用CreateDevice之时就有了.其运行机制就是,我们需要在其中一个缓冲区上绘制完所需要显示的一切,之后将这个缓冲区快速的复制到另一个缓冲区,因为后者的缓冲区被称为Front Buffer,显示器在刷新之时会直接从中取出数据以显示,而前者就称之为backbuffer 但是,还有一种buffer,是可供我们在内存中进行操作的,…
初学Direct X (1) Direct3D设备用于访问视频卡的帧缓冲区,以及后台缓冲区.由于IDE是vs2013,默认安装了direct 9,只需要在使用头文件(1)并像使用库文件(2)即可 #include <d3d9.h> ------------(1) #pragma comment (lib,"d3d9.lib") ------------(2) 1. 关于Direct3D的接口 编写Direct3D程序的第一步,少不了Direct3D的接口变量和图形设备变量,…