随笔分类 -  DirectX

摘要:原文地址:http://www.cnblogs.com/lancidie/archive/2011/03/22/1991316.htmlD3DXCOLOR* D3DXColorAdd //两个颜色的组合值D3DXCOLOR* WINAPI D3DXColorAdjustContrast( //调整颜色对比度D3DXCOLOR *pOut,const D3DXCOLOR *pC,FLOAT c);D3DXCOLOR* WINAPI D3DXColorAdjustSaturation( //调整颜色饱和度D3DXCOLOR *pOut,const D3DXCOLOR *pC,FLOAT s);D3 阅读全文
posted @ 2013-03-30 17:16 冷夜 - 网游编程技术 阅读(433) 评论(0) 推荐(0)
摘要:typedef struct _D3DPRESENT_PARAMETERS_{ UINT BackBufferWidth; UINT BackBufferHeight; D3DFORMAT BackBufferFormat; UINT BackBufferCount; D3DMULTISAMPLE_TYPE MultiSampleType; DWORD MultiSampleQuality; D3DSWAPEFFEC... 阅读全文
posted @ 2013-03-28 15:56 冷夜 - 网游编程技术 阅读(4480) 评论(0) 推荐(0)
摘要:为了便于说明,首先假设存在下列的顶点缓冲和索引缓冲 vb= { {-1.0, 1.0, 0.0}, index 0 { 1.0, 1.0, 0.0}, index 1 { 1.0,-1.0, 0.0}, index 2 {-1.0,-1.0, 0.0}, index 3 {-2.0, 2.0, 0.0}, index 4 { 2.0, 2.0, 0.0}, index 5 } 和对应该顶点缓冲的一组索引缓冲ib 初学D3D,DrawIndexedPrimitive这个函数是个难点,主要是MSDN中的解释不是很明确,这个函数共6个参数,下面对这6个参数进行一下详细的解释。 参数1:D3DPR.. 阅读全文
posted @ 2013-03-21 16:59 冷夜 - 网游编程技术 阅读(434) 评论(0) 推荐(0)
摘要:原理:什么是Quadtrees? 由于3D图形卡消费市场的变革,现在3D游戏越来越流行了,他们中大部分是第一人称射击游戏,这 是一个很好的理由,这个理由是室内环境,当和室外环境相比它非常简单。对于室外环境,它没有方便 的通往下一关的楼梯,门,或墙来阻挡你的视线。室外环境都是连续的。对于传统的几何学来说这是非 常棘手的,请打入quadtrees来学习下面的知识。 注意:下面的图示都是从上到下看一个3D地形,方格显示了在X和Y轴上的地形,并看不见现 实中的物体高度,因为我们是顺着Y轴看的。Figure 1 设想你的地形是一个非常大的方格,在一个X和Z的面上扩展,如图1。我们有一个摄象... 阅读全文
posted @ 2013-01-30 17:06 冷夜 - 网游编程技术 阅读(1291) 评论(0) 推荐(0)
摘要:Lambert模型(漫反射)环境光:Iambdiff = Kd*Ia其中Ia 表示环境光强度,Kd(0<K<1)为材质对环境光的反射系数,Iambdiff是漫反射体与环境光交互反射的光强。方向光:Ildiff = Kd * Il * Cos(θ)其中Il是点光源强度,θ是入射光方向与顶点法线的夹角,称入射角(0<=A<=90°),Ildiff是漫反射体与方向光交互反射的光强,若 N为顶点单位法向量,L表示从顶点指向光源的单位向量(注意顶点指向光源),则Cos(θ)等价于dot(N,L),故又有:Ildiff = Kd * Il * dot(N,L)最后综合环境 阅读全文
posted @ 2012-10-16 17:50 冷夜 - 网游编程技术 阅读(901) 评论(0) 推荐(0)
摘要:转之:http://www.cnblogs.com/hust-ruan/archive/2011/12/09/2282035.html左右手坐标系众所周知,OpenGL使用的是右手坐标系,而Direct3D使用的是左手坐标系。除了上面Z轴的方向不一样外,左右手坐标系的还有其他区别:正向旋转方向:在左手系中用Left-Hand Rule判别,正方向是顺时针方向。在右手系中,用Right-Hand Rule判别,是逆时针方向。叉积的方向:在右手坐标系中,叉积的方向通过Right-Hand Rule确定,而在左手坐标系中,叉积的方向则由Left-Hand Rule 确定。World Space 坐标 阅读全文
posted @ 2012-09-10 09:42 冷夜 - 网游编程技术 阅读(620) 评论(0) 推荐(0)
摘要:多边形可以分解为多个三角形,所以只用实现三角形的填充即可实现多边形的填充,三角形主要分为3类:A左边长B右边长C平底或平顶。平底或平顶三角形比较简单,填充他们只要分别根据两边的斜率求出Y坐标每增加一个单位相应的X坐标,这样就能求出相应的一对一对左右坐标,然后连接这连个坐标,最后就能实现三角形的填充。具体的分析过程请查阅:Windows游戏编程大师技巧 第八章效果图: 代码并未经过优化,可能存在很多BUG,只用于演示用代码://画平底或平顶填充三角形bool CEnginApp::DrawSolidPloygon(ScPoint spoint[],int lenth,UNINT *vb_star 阅读全文
posted @ 2012-09-06 11:23 冷夜 - 网游编程技术 阅读(585) 评论(0) 推荐(0)
摘要:Bresenham画圆算法不失一般性,假设圆的圆心位于坐标原点(如果圆心不在原点,可以通过坐标平移使其与原点重合),半径为R。以原点为圆心的圆C有四条对称轴:x = 0, y = 0, x = y和x = -y。若已知圆弧上一点P1=C(x, y),利用其对称性便可以得到关于四条对称轴的其它7个点,即: P2=C(x,-y), P3=C(-x, y), P4=C(-x,-y), P5=C(y,x), P6=C(-y,x), P7=C(y,-x), P8=C(-y,-x)。这种性质称为八对称性。因此,只要扫描转换八分之一圆弧,就可以通过圆弧的八对称性得到整个圆。【Bresenham... 阅读全文
posted @ 2012-09-03 15:52 冷夜 - 网游编程技术 阅读(28317) 评论(2) 推荐(0)
摘要:对线段进行裁剪,返回裁剪后的线段,完全自己想的没什么优化,应该还有些BUG暂时不做深究,效果图如下未裁剪:裁剪后:代码://点typedef struct sc_point{ int x,y; sc_point(){x=0;y=0;};}ScPoint;//线typedef struct sc_line{ ScPoint point1,point2;}ScLine;bool CEnginApp::ClearLine(const ScLine *line,ScLine &line2){ if (!line) return false; int x1=0,x2=0,y1=0,y2=0,te 阅读全文
posted @ 2012-08-31 13:39 冷夜 - 网游编程技术 阅读(465) 评论(0) 推荐(0)
摘要:现在的计算机的图像的都是用像素表示的,无论是点、直线、圆或其他图形最终都会以点的形式显示。人们看到屏幕的直线只不过是模拟出来的,人眼不能分辨出来而已。那么计算机是如何画直线的呢,其实有比较多的算法,这里讲的是Bresenham的算法,是光栅化的画直线算法。直线光栅化是指用像素点来模拟直线,比如下图用蓝色的像素点来模拟红色的直线。给定两个点起点P1(x1, y1), P2(x2, y2),如何画它们直连的直线呢,即是如何得到上图所示的蓝色的点。假设直线的斜率0<k>0,直线在第一象限,Bresenham算法的过程如下:1.画起点(x1, y1).2.准备画下一个点,X坐标加1,判断如 阅读全文
posted @ 2012-08-21 10:25 冷夜 - 网游编程技术 阅读(25718) 评论(0) 推荐(1)
摘要:屏幕坐标是相对于屏幕左上角的,而窗口坐标是相对于窗口用户区左上角的 GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。 GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。 ClientToScreen把客户区坐标系下的RECT坐标转换为屏幕坐标系下的RECT坐标. ScreenToClient把屏幕坐标系下的REC... 阅读全文
posted @ 2012-08-15 10:02 冷夜 - 网游编程技术 阅读(377) 评论(0) 推荐(0)
摘要:lpitch是结构体DDSURFACEDESC2的一项,这个结构体描述了页面/表面的一些信息。 lpitch一般译做步幅(stride)或内存宽度(memory width)。注意,它与DDSURFACEDESC2结构体中的另一项dwWidth的意义是不一样的。 lpitch的单位是字节,dwWidth的单位是像素。所以,一个640×480×8(640×480个像素,每像素用8位,即一个字节表示)页面,dwWidth=640 像素(字节)。但是,此时Lpitch不一定就等于640(字节)!同样一个640×480×16的页面,它的Lpitch值也 阅读全文
posted @ 2012-08-14 17:24 冷夜 - 网游编程技术 阅读(663) 评论(0) 推荐(0)
摘要:效果图:代码: hdc=BeginPaint(hwnd,&scPaint); if (hdc) { //输出文本 SetTextColor(hdc,RGB(255,0,0)); SetBkColor(hdc,RGB(0,255,0)); SetBkMode(hdc,TRANSPARENT); TextOut(hdc,10,100,"Welcome!",8); ... 阅读全文
posted @ 2012-08-14 14:58 冷夜 - 网游编程技术 阅读(17777) 评论(0) 推荐(0)
摘要:1.通过HDC加载//载入位图HBITMAP hBitmap;hBitmap = (HBITMAP)LoadImage(NULL, "test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);HDC hdcImage;HDC hdc;BITMAP bm;lpBackBuffer->Restore();hdcImage = CreateCompatibleDC(NULL);SelectObject(hdcImage, hBitmap);GetObject(hBitmap, sizeof(bm), &bm);lpBackBuf 阅读全文
posted @ 2012-08-07 14:59 冷夜 - 网游编程技术 阅读(1726) 评论(0) 推荐(0)
摘要:1.DC 设备上下文(Device Context)设备上下文是一种包含有关某个设备(如显示器或打印机)的绘制属性信息的 Windows 数据结构。所有绘制调用都通过设备上下文对象进行,这些对象封装了用于绘制线条、形状和文本的 Windows API。设备上下文允许在 Windows 中进行与设备无关的绘制。设备上下文可用于绘制到屏幕、打印机或者图元文件。HDC是DC的句柄,API中的一个类似指针的数据类型.2.CreateCompatibleDC函数原型:HDC CreateCompatibleDC(HDC hdc);参数:hdc:现有设备上下文环境的句柄,如果该句柄为NULL,该函数创建一 阅读全文
posted @ 2012-07-30 15:31 冷夜 - 网游编程技术 阅读(720) 评论(0) 推荐(0)
摘要:BMP文件存储结构的格式可以在Windows中的WINGDI.h文件中找到定义。BMP文件总体上由4部分组成,分别是位图文件头、位图信息头、调色板和图像数据,如表5-1所示。表5-1 BMP文件的组成结构位图文件头(bitmap-file header)位图信息头(bitmap-information header)彩色表/调色板(color table)位图数据(bitmap-data)下面来详细看一下每个组成部分的细节。1.位图文件头(bitmap-file header)位图文件头(bitmap-file header)包含了图像类型、图像大小、图像数据存放地址和两个保留未使用的字段。打 阅读全文
posted @ 2012-07-28 15:21 冷夜 - 网游编程技术 阅读(330) 评论(0) 推荐(0)
摘要:记录一些常用的代码功能段便于自己以后查找使用:1.常用宏和函数#define SafeRelease(lpx) if(lpx!=NULL){lpx->Release();lpx=NULL;}//释放COM#define DD_Call(callcode) if(FAILED(callcode))return DD_FALSE //安全创建#define DD_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); } //初始化结构体#defin 阅读全文
posted @ 2012-07-28 10:25 冷夜 - 网游编程技术 阅读(1119) 评论(0) 推荐(0)
摘要:1.DirectDrawCreateEx() 连接报错 ,要加入dxguid.lib2.返回错误代码:DXGetErrorString(hret) , 要加入DxErr.lib3.锁定的表面不可以进行BLT操作4.BLT的RECT参数,如果left>right 或者 top<bottom会报DDERR_INVALIDRECT错误5.窗口模式下不可以设置页面flip置换技术6.D3D的头文件和库文件#include "d3dx9.h"d3d9.lib d3dx9.lib winmm.lib dinput8.lib dxguid.lib 阅读全文
posted @ 2012-07-26 17:44 冷夜 - 网游编程技术 阅读(373) 评论(0) 推荐(0)