posted @ 2011-05-17 00:18 +石头+ 阅读(1506) 评论(0) 推荐(1)
摘要:
首先来说为什么要使用完成端口:原因还是因为为了解决recv方法为阻塞式的问题,WinSocket封装的WSARecv方法为非堵塞的方法。int WSARecv( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags, LPWSAOVERLAPPED lpOve... 阅读全文
摘要:
为什么要采用Socket模型,而不直接使用Socket?原因源于recv()方法是堵塞式的,当多个客户端连接服务器时,其中一个socket的recv调用时,会产生堵塞,使其他链接不能继续。这样我们又想到用多线程来实现,每个socket链接使用一个线程,这样效率十分低下,根本不可能应对负荷较大的情况。于是便有了各种模型的解决方法,总之都是为了实现多个线程同时访问时不产生堵塞。此篇文章介绍其中两种常... 阅读全文
posted @ 2011-05-13 20:57 +石头+ 阅读(2859) 评论(0) 推荐(1)
摘要:
在游戏中,触发事件以及发出命令是以消息的形式发出的,所以判断是否有消息产生,就从消息队列中逐个遍历。然而消息队列中不是一直都有消息,当队列中没有消息时,为了防止不继续遍历消息队列,我们用内核对象的同步方式,当有消息插入时激活,消息为空时挂起。下面为封装的消息队列类,以后还会继续完善。#define MAXMESSAGE 1024class CXMessageList{public: CXMessa... 阅读全文
posted @ 2011-05-09 22:39 +石头+ 阅读(487) 评论(1) 推荐(0)
摘要:
多线程是提高程序效率的有效手段,在游戏中也十分的常用。1.在游戏开始时加载资源时,多线程是非常常用的。主界面显示等待的画面,多线程中这时进行资源的加载(地图资源, 地图上的对象资源。。)2.在正常的渲染逻辑中,如果把游戏的更新在多线程中运行,游戏的效率将有很大幅度的提升。我们将多线程封装成一个类,方面使用。class CXMultThread{public: CXMultThread(void){... 阅读全文
posted @ 2011-05-09 17:40 +石头+ 阅读(3138) 评论(0) 推荐(0)
摘要:
游戏开发中,免不了有对char*的操作,以及对List的使用。如果不封装关于此方面的类的话,在使用的时候,将十分的不方便,比如对char*的连接,赋值等等操作。这里是CEasyStr和CEasyList类的具体代码:#include "EasyList.h"CEasyNode::CEasyNode(void){ pre=NULL; data=NULL; next=NULL;}CEasyNode::... 阅读全文
posted @ 2011-04-25 22:22 +石头+ 阅读(697) 评论(0) 推荐(0)
摘要:
普通的射线碰撞只关心世界矩阵,鼠标的点选关心投影矩阵,视图矩阵,世界矩阵,和物体本身。 bool CMeshBaseOBJ::CheckMouseHit( POINT point ){ D3DXVECTOR3 DIR, RAY; D3DXMATRIX m, mtView, mtProj; mDVC->GetDVC()->GetTransform(D3DTS_VIEW, &mtView); mDVC... 阅读全文
posted @ 2011-04-25 00:21 +石头+ 阅读(201) 评论(0) 推荐(0)
摘要:
检查射线碰撞主要用到的是Direct中的D3DXIntersect函数。HRESULT D3DXIntersect( __in LPD3DXBASEMESH pMesh, //碰撞模型的Mesh __in const D3DXVECTOR3 *pRayPos, //射线的位置 __in const D3DXVECTOR3 *pRayDir, //射线的方向 __out BOOL *pHit, //... 阅读全文
posted @ 2011-04-22 20:29 +石头+ 阅读(1129) 评论(0) 推荐(0)
摘要:
对于一个顶点来说,有三种方式可以添加颜色。顶点结构中包含有颜色材质和光照纹理//制定Alpha来源Device->SetRenderState(D3DRS_TEXTUREFACTOR, col); //factor为设置一种颜色,存储在内存中,不是物体本身的颜色Device ->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR); //... 阅读全文
posted @ 2011-04-08 18:12 +石头+ 阅读(754) 评论(0) 推荐(0)
摘要:
X乘的应用:坦克等4个着地面的物体在经过斜坡时,上方向不再是垂直地面,否则的话将出现前两个轮子进入到斜坡里面的情况。我们这样处理,通过一开始的前进向量和斜坡的法线向量做差乘,计算出右方向的向量,再由右方向和斜坡法线做差成得出需要的平行斜面向上的向量:D3DXVECTOR3 MapNormal(1, 1, 1); D3DXVec3Normalize(&MapNormal, &MapNormal); ... 阅读全文
posted @ 2011-03-15 16:42 +石头+ 阅读(1731) 评论(0) 推荐(0)
摘要:
思路:根据镜子的平面和茶壶的位置,计算出茶壶的映像,这时映像有的是在镜子的范围内,有的是在镜子以外的范围上显示。为了只在镜子的范围内显示茶壶,所以在深度缓存中把镜子范围内标记为0x1。然后在值设置为0x1的位置上绘制茶壶。 //1.启用模板缓存,并对相关的绘制状态进行设置 g_d3dDevice->SetRenderState(D3DRS_STENCILENABLE, true); //启用模板缓... 阅读全文
posted @ 2011-03-11 00:42 +石头+ 阅读(592) 评论(0) 推荐(0)
浙公网安备 33010602011771号