自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (20)
  • 收藏
  • 关注

原创 Learning OpenGL : (5) Using OpenGL

<br />1. GLUT<br />OpenGL utility toolkit.<br />Because GLUT was originally not licensed as open source, a new GLUT implementation, freeglut, has sprung up to take its place.<br /> <br /> <br /><br />2. GLEW<br />GLEW make an easy way to obtain full access

2011-03-18 12:36:00 3460 1

原创 Learning OpenGL : (4) What's OpenGL

<br />1. What is OpenGL<br />OpenGL is strictly defined as a software interface to graphics hardware.<br /> <br /> <br />2. Two Forms<br />OpenGl exists in two forms.<br />A software driver and a graphics card in your PC together make up an OpenGL implemen

2011-03-18 10:25:00 3122

原创 Learning OpenGL : (3) 3D Programming Principles

<br />1. Coordinate Clipping<br />In two-dimensional space, the clipping region is the minimum and maximum x and y values that are inside the window.<br /> <br /> <br />2. Viewport<br />The viewport is the region with in the window's client area that is us

2011-03-17 00:18:00 3019

原创 Learning OpenGL : (2) 3D Terminology

<br />1. Rendering<br />The process by which mathematical and image data is transformed into a 3D dimensional image.<br /> <br /> <br />2. Transformation<br />Vertex is moved around in space with a convenient mathematical construct called a transformation

2011-03-16 22:00:00 2671

原创 Learning OpenGL : (1) Concept of 3D

<br />1. Which 3D<br />The term three-dimensional, or 3D, means that an object being described or displayed has three dimension of measurement: width, height, and depth.<br /> <br /> <br />2. True 3D <br />To truly see in 3D, you need to actually view an o

2011-03-16 21:07:00 3306 1

原创 从零实现3D图像引擎:(15)三角形的光栅化

<br />1. 为什么要光栅化一个三角形<br />我们不能总让我们的引擎显示线框,要支持实心颜色、光照还有纹理贴图,这些都需要光栅化一个三角形作为支持。<br /> <br /> <br />2. 三角形的类型<br />为了方便光栅化,一般将三角形分为以下4种:<br /><br /> <br /> <br /> <br />3. 平底三角形光栅化<br />先上图:<br /><br />光栅化平底三角形的原理很简单,就是从上往下画横线。在图里我们取任意的一条光栅化直线,这条直线左边的端点x值为XL

2011-03-08 20:15:00 21212 7

原创 Effective C++ 学习笔记(1) : 语言联邦、弱化预编译器、const、初始化

来源:Effective C++ P11 ~ P23级别:200C++没有绝对适当的语言用法注意:C++是一个四大语言联邦国:C、Object-Oriented C++、Template C++、STL。const double AspectRatio = 1.653;注意:常量问题上多用编译器而少用预处理器。预处理会额外增加debug时追踪变量的时间、使程序变胖。除非编译老到对const的处理有额外内存开销,否则没必要定义宏常量。class GamePlayer { static const int Nu

2011-03-07 21:51:00 3158

原创 C++ Primer 学习笔记(2) : 基本语言2

来源:C++ Primer P49 ~ 67级别:100const int i, j = 0;注意:常量在定义时必须初始化。extern const int bufsize = 100;注意:在全局作用域声明的const变量默认为文件内部对象,在加上extern后,可以跨编译单元访问。int & refval = ival;注意:非const引用初始化后,一直绑定到该对象。且类型必须与绑定对象相同。double dval = 1.1;const int &ri = dval;注意:const引用可以绑定到不

2011-03-07 21:15:00 3452

原创 C++ Primer 学习笔记(1) : 基本语言

来源:C++Primer P1 ~ P49级别:100std::endl注意:效果不仅仅是换行,还会刷新缓冲区,以便立即看到结果。在debug过程中的log应该每句都用endl刷新缓冲区,避免因崩溃导致的缓冲区信息丢失,造成调试误导。MS-DOS窗口中输入Ctrl+Z来输入文件结束符注意:在一些简短的小测试程序中,经常会用while (std::cin >> value)来获取输入,这时按回车并不会导致退出循环,按Ctrl+Z则可以达到目的。true和false注意:任何非0值都代表true。0值代表fal

2011-03-07 20:32:00 3009

原创 VC2010中"Include Directories" 和 "Additional Include Directories"的区别

<br />右键一个Project,可以发现有两个地方设置Include的相关目录:<br />1. VC++ Directories -> Include Directories<br />2. C/C++ -> General -> Additional Include Directories<br /> <br />不知道具体有什么区别,后在MSDN上得到答案:<br />“VC++ Directories -> Include Directories” : Directory settings di

2011-03-05 15:50:00 23420

原创 从零实现3D图像引擎:(14)背面消隐的三大陷阱

<br />1. 为什么要背面消隐<br />通过之前的DEMO,能够知道如果在渲染过程中多边形越多,那么要不处理的内容就越多,就越消费计算机的处理能力。对于物体来说,一般我们只看到它面对我们的面,可能不是正对着,但是肯定有很多面是完全背对我们的,我们就应该在渲染时跳过他们。这将减少大约一半的三角形渲染量。原理其实很简单,就是向量与平面的关系,这个原理我在参数化直线与平面的那篇文章中特意推导了整个来龙去脉。<br />我喜欢在2D俯视图中来分析问题,如下图:<br /><br /> <br /> <br /

2011-02-25 11:48:00 13025 10

原创 从零实现3D图像引擎:(13)把宽高比、透视投影矩阵、屏幕变换矩阵说透

<br />1. 问题的引出<br />这个问题的引出又是因为《3D游戏编程大师技巧》这书里面有的问题没讲明白,有的东西又不对。<br />首先宽高比这个名词的出现是因为我们的PC屏幕不是正方形的,屏幕宽度 : 屏幕高度 就是宽高比。但是我们上次搭建的相机系统的视平面是正方形的,那么当很多物体投影到视平面上后,必然最后完成的是一幅正方形的画,而屏幕是长方形的,这时只有两种办法:<br />1) 把照片压扁,这样画上的所有物体都被压扁了。<br />2) 把照片上下多余的两条分别裁下来,只保留屏幕大小的画,这

2011-02-23 16:58:00 8683 8

原创 从零实现3D图像引擎:(12)构建支持欧拉和UVN的相机系统

<br />1. 相机需要哪些参数<br />先看下图了解一下上次我们建立的相机在3D世界中的意义:<br /><br />如Hello3DWorld中介绍的,在相机坐标系下,相机朝向正Z轴,相机有视野角度,因为视野角度,形成了上图的视锥体,视平面就是要被透视投影到的2D平面。<br /> <br />在这幅图里增加了近裁剪面与远裁剪面。他们是做什么的呢?在现实中,我们会发现,离眼睛太远的东西我们就看不到了,离眼睛太近的东西又会挡住大部分景色。于是就定义了远裁剪面和近裁剪面——比近裁剪面还近的物体和比远裁剪

2011-02-21 22:02:00 13574 24

转载 C++运算符优先级列表收藏备查

C++运算符优先级列表收藏备查

2011-02-19 10:43:00 3188

原创 从零实现3D图像引擎:(11)讲解3D变换矩阵的推导

1. 数学分析上一篇中间在做旋转的时候我直接用了旋转变换矩阵,当时觉得很尴尬,因为之前没说过是怎么产生的该矩阵。 1) 矩阵和向量的微妙关系如果您还记得向量加法的几何意义,那么不难看懂下面的等式:      [x]    [x]     [0]    [0]          [1]          [0]          [0]v = [y] = [0] + [y]

2011-02-18 12:36:00 14786 23

原创 从零实现3D图像引擎:(10)Hello3DWorld

<br />1. 数学分析<br />前面我们已经把预先想到的可能会用到的数学工具都封装好了,从这篇开始,应该很少出现一大篇都是数学推导的了,终于看见光明了,这次我们将开始第一个3D程序的编写,所以题目就叫Hello3DWorld吧。<br /> <br />0) 3D程序的本质<br />很多书都会先介绍“3D流水线”的词,但其实明白3D程序的人一下子就知道这是什么,而不了解的人看了这个词也没有意义。其实我也觉得没什么特殊意义,因为所有计算机程序都是一个一个流程执行下来的,不全都是某某流水线么。简单来说,

2011-02-17 14:35:00 8757 4

原创 从零实现3D图像引擎:(9)四元数函数库

<br />1. 数学分析<br />1) 四元数是什么东西?<br />这个东西算盘、矩阵、复数是一类东西,即数学工具,数学家们创造了这个东西来解决一些数学问题。其实四元数是一种超复数,他不是只有一个虚数的复数,而是有三个虚数的复数。我们先回顾一下复数吧。<br /> <br />2) 虚数的来源<br />实数集中没有-1的平方根,因为没有哪个实数的平方等于-1,所以数学家们就创造它——虚数i,并且定义了i * i = -1。<br />所以我们可以计算sqrt(-4)了,sqrt(-4) = 2*i<

2011-02-10 21:24:00 9525 19

原创 从零实现3D图像引擎:(8)参数化直线与3D平面函数库

<br />1. 数学分析<br />1) 参数化直线<br />还记得我们在学习向量时介绍的位移向量吗?参数化直线的原理和他相同。其实所谓参数化直线,就是通过一个参数t来表示直线上的一个线段,当t为0时,则取线段的一端的端点,当t取1时,则取到另一端的端点。如图:<br /><br />核心原理就是向量加法的几何意义,Vd是加数,通过t(从0到1)去乘以这个Vd,则可以描述向量p,而p在某个t时的坐标值,就是从点P1到点P2的线段在t时的坐标值。注意这里我们使用的是图中的p = p1 + t * vd,这

2011-02-10 15:46:00 7217 6

原创 从零实现3D图像引擎:(7)矩阵函数库

<br />1. 数学分析<br />1) 矩阵到底是什么,用它来干嘛?<br /> 千万不要把矩阵想复杂了,说白了,他和算盘是一类东西,矩阵根本就没有实际意义,他就是个数学工具而已,就好像敲算盘,珠子上上下下的按照一定的规律去拨弄,就能得到结果一样,矩阵是数学家们发明的一个工具,这个工具也有一系列规则,通过这些规则也可以计算出一些结果,只不过他不像算盘是用来做数字加减乘除用的,他是用来求解方程组的。学习完了矩阵的运算规则,就可以发现,所有对向量、点坐标的变换都可以通过矩阵运算来完成,这也是为什么3D图像的

2011-02-09 16:35:00 5971 4

原创 从零实现3D图像引擎:(6)向量函数库

1. 数学分析1) 基本定义:向量由多个分量组成,2D/3D向量表示一条有向线段。下面的ux,uy就是两个分量。向量u = ,如果从点P1(x1, y1)指向点P2(x2, y2),则:U = p2 - p1 = (x2-x1, y2-y1) = 向量被定义后,总是相对于原点的,所以可以用一个点来表示从原点指向该点的向量。2) 向量的范数(norm)范数就是向量长度,是从原点到终点的距离。用|u|表示,所以:|U| = sqrt(Ux2 + Uy2)|U| = sqrt(Ux2 + Uy2 + Uz2)3)

2011-02-07 22:46:00 8792 3

原创 从零实现3D图像引擎:(5)3D坐标系函数库

1. 数学分析1) 2D笛卡尔坐标系与2D极坐标系2D笛卡尔坐标系就是平面直角坐标系,不说了。2D极坐标系,是用方向和距离来定义2D空间中的点,而非x,y坐标,如下图:其中极坐标的参数用红色表示,笛卡尔坐标的参数用蓝色字表示。非常显而易见,他们之间的转换关系如下:x = r * cos(theta)y = r * sin(theta)r = sqrt(x2 + y2)theta = arctg(y/x)2) 3D笛卡尔坐标系在2D笛卡尔坐标系上增加了Z轴,形成3D笛卡尔坐标系。分为左手坐标系和右手坐标系。区

2011-02-07 15:47:00 6894 3

原创 C++对某些特性的贬斥

0. 问题的引入一直觉得我的3DLIB里面的.h文件的这段代码很别扭:namespace _CPPYIN_3DLib{ // 全局变量 static IDirect3DDevice9* pDevice = 0; static IDirect3DSurface9* pSurface = 0; static D3DLOCKED_RECT lockedRect; // 函数声明 bool Init3DLib(HINSTANCE hInstance, HWND hWnd, int w

2011-02-06 10:58:00 3729 3

原创 从零实现3D图像引擎:(4)三角函数库

3D图形中常用的三角函数库

2011-02-04 16:40:00 21732 28

原创 从零实现3D图像引擎:(3)超级重要的2D矩形裁剪

1. 数学分析为什么我们要画2D直线,要做2D的直线-矩形裁剪?原因很简单,无论游戏世界是2D的还是3D的,最终都要投影到玩家的屏幕上,3D的东西最终要是要投影到视平面上。所以3D游戏仍然有很多东西要在2D视平面上做。对于3D游戏的裁剪就有两种方法:一是在3D空间做裁剪,利用视域体的各个面与三角形中直线的关系来做,这叫做立方体空间裁剪;另一种是,把3D物体先投影在2D视平面上,然后在视平面上对2D直线做矩形裁剪,叫作图像空间裁剪。三角形都是由直线组成的,屏幕是矩形的,所以用矩形裁剪一条直线是非常重要的,而且

2011-02-04 13:00:00 11812 6

原创 从零实现3D图像引擎:(2)画2D直线不简单

<br />1. 数学分析<br />1) 画直线的问题<br />本来我以为画直线会很容易,随便拿个直线公式,遍历X求Y画出来不就完了么,但事实并非如此。以2D直线为例,因为3D直线也只是多引入了个Z坐标而已。关键的问题:我们在数学中所学的直线是基于实数域的,而在计算机屏幕上,所画的直线是基于正整数域的,可以想象这么一个情形,在直线的某一点X=1,Y=0.01时,在屏幕上如何画呢?下图对比了实数域的直线,与基于正整数域的直线:<br /><br />为什么直线在正整数域是不连续的呢,还记得斜率的的定义么:

2011-02-03 16:20:00 12672 7

原创 从零实现3D图像引擎:(1)环境配置与项目框架

<br />0. 要学懂3D程序设计,必然要精通3D相关的线性代数、3D几何、复分析等相关知识,我也因为如此才开始这个博客系列的写作,不自己实现,就不是自己的东西,从今天开始,将会把所学的数学知识,从数学推导到代码实现的心得全部记录于此。最终得到一个独立的3D图像引擎,也就完成了对3D图像知识的基本学习。<br /> <br />1. 文章布局。除了本文,所有文章都将由3部分组成。<br />1) 数学理论推导。<br />2) 不参看任何示例,只根据数学原理进行的代码实现。<br />3) 项目代码下载。

2011-02-01 23:30:00 10931 6

原创 从零开始重写KOK1(万王之王1) —— (4)遮挡、阻挡与寻路

<br />0. 上篇文章,人物已经可以正确的朝向和移动了,这次我们要添加几个石头,并且达到以下效果<br />1) 人物和石头根据站位可以正确产生遮挡效果<br />2) 人物被石头阻挡住,即不能穿过石头<br />3) 当鼠标点击石头后面时,人物可以自动绕过石头走过去<br />效果截图:<br /><br />可直接运行版本下载:>>点击进入下载页面<<<br /> <br />1. 物件管理器与遮挡<br />因为我们之前只有玩家一个物体,所以在画物体的时候直接调用player.draw()就可以了

2011-02-01 14:25:00 8830 10

原创 裸辞三月之痒

<br />    刚起,昨晚很晚才睡,和父亲谈了很久。<br />    都说婚姻有七年之痒,我觉得裸辞也有三月之痒。<br />    当初为了做游戏,一点杂念都没有,立刻辞职,当天我就写下了为找下一份工作的求职信,只为记住这份心情:<br /> <br />{<br />    游戏是一个行业,更是一个的事业,游戏不仅是能力足够就能做好的。而应是一群为做出真正的好游戏不惜将灵魂付诸其中的人们共同的目标。<br />    对于这个目标,我晚了。大学毕业后,做了一年政府项目,做了小两年的飞信……最开始是

2011-02-01 11:16:00 4577 52

原创 从零开始重写KOK1(万王之王1) —— (3)优化玩家移动与精确8方向朝向

0. 回顾与分析在第1篇文章中,我们是对移动目标与玩家坐标做差,然后按照各个方向的可能性进行if判断,来决定人物的方向,在第一篇的DEMO中,可以发现,只有当人物正好在正斜方(45度的4个斜方向,或者说是n*pi/4时),人物才会斜着站,否则都是上下左右4个方向的朝向。对人物的移动方面,我们是x没达到目标则加上RunSpeed,y也如此。这样的结果是,人物斜着走将会非常快。所以我们优化代码以达到两个目的:(1)人物的朝向是将一个圆分成16份,每个方向占两份,使人物朝向正确的角度。(2)人物的RunSpeed

2011-01-20 18:56:00 22574 20

原创 从零开始重写KOK1(万王之王1) —— (2)优化地图加载

本来想在第2篇说明物体遮挡与寻路的开发过程,但是因为我把这问题想简单了,现在已经完成了遮挡与寻路,但是中间的过程非常多,第一篇文章的系统结构需要做一些修改才可以,这里先说一下地图加载的相关问题。首先是效果图:可直接运行版本下载:>>点击进入下载页在第一篇文章《从零开始重写KOK1(万王之王1) —— (1)让人物可在地图上使用鼠标跑动》中,地图是这样的过程加载的:1. 在Map对象初始化时将每个小图个加载到一个整体的大地图中,如图:2. 在玩家位置作出修改后,也修改屏幕矩形左上角的位置,因为玩家是在中间,所

2011-01-20 14:48:00 7616 7

转载 Diablo世界观与剧情综合说明

研究了几天Diablo2的技术,今天突然对剧情产生了浓厚的兴趣,虽然从1代,到地狱火,到2代,再到破坏之王一路玩下来,但一直没有太明白剧情,今天各处搜索学习,终于稍稍有所了解,所有的文章内容均为转贴,我将他们按顺序编排了一下,我找到的文章中已经不知道作者是谁了~1. 在Diablo1开始前的故事    天堂与地狱的战斗(末日之战)在人类出现之前就已经开始,延续了数千年,其时天使和恶魔中都英雄辈出,可创造者BLIZZARD小组设定的平衡度太高,这两帮人谁也奈何不了谁,于是死伤无数。其中Diablo(迪亚波罗)

2011-01-12 00:30:00 7337 2

原创 从零开始重写KOK1(万王之王1) —— (1)让人物可在地图上使用鼠标跑动

从飞信裸辞已经2个月了,因为对游戏的爱,和做出好玩的游戏这个梦想。《Windows游戏编程大师技巧》(以下简称《大师》)这书已经读完,DEMO也都搞清楚了,为了确实的掌握2D游戏的技术,决定完成一个完整的KOK1咒术师打钱坑的DEMO,也是作为我踏入游戏开发行业的简历附加DEMO。【广告】对游戏有爱的游戏公司(北京)缺人(2D/3D游戏程序员)的话请随时把我拉走。这个系列文章将记载在这个DEMO开发过程中的一点一滴,废话不说了,进入正题。0. 本期功能(1)人物可以在地图上通过鼠标右键控制走动(2)地图可以

2011-01-11 11:49:00 8352 9

原创 使用dinput鼠标的相对模式达到绝对定位

0. 当打算写KOK1的DEMO的鼠标管理模块时,是这么想的,获取到鼠标在视窗中的绝对位置(相对于窗口0,0点的坐标),然后来推算这个位置在地图上的坐标,然后让玩家走过去。存在如下几种方案: 使用Windows的系统鼠标指针,GetWindowPos来获得指针的位置,以及一些Win32API来获取指针的状态。这种问题就是在游戏中,基本上都不会去使用鼠标的指针样子,甚至静态图片也不行,通常都是动画,通过反复的修改窗口鼠标的样子的方式来实现动画性能太差。 微软提供了DirectInput,作为专门在游戏中使用的

2011-01-10 22:08:00 6506

原创 当你的程序在朋友的机器上显示丢失msvcr100d.dll的时候

0. 给朋友发了个DEMO,收到提示:丢失 msvcr100d.dll1. 一看是运行库文件,赶紧让朋友下载并安装vc++ 2010 redistribution,朋友反馈还是提示丢失这个dll文件2. 把我本地的这个dll拷贝到他机器里,提示成功3. 太奇怪了啊,这玩意就是vc++运行库文件啊,为啥装了redistribution还不成呢4. 我注意到了这个文件名的100后面带着一个d字,让我想起了debug~5. 在VC里面找设置,终于发现了:Property->C/C++->Code Generati

2011-01-10 16:46:00 28310 5

原创 #include到底该写在哪

1. 大学学C/C++的时候,大家写.h文件的时候,发现有符号这个文件里没有,就会#include相关的头一下;写.cpp文件的时候,发现有符号这个文件里没有也会#include一下,一直没有出什么问题。2. 再晚些知道了#include是预编译,就是copy一个文件的全部内容到当前#include语句的位置而已,而编译器根本不去编译.h,以及他里面到底是啥。然后隔了很久没用C/C++做很较复杂的程序,直到今天……封装整个DirectDrawManager的时候,我SB了。我想:“反正.h不去编译,我就把.

2011-01-06 18:46:00 6737 2

原创 实现一个均匀Tile的卷轴显示引擎

游戏的卷轴效果主要有两种形式,一种是将游戏分为若干个场景的页面卷轴,比如FC上的洛克人,当人物走到边缘时,就会切换整个场景;一种就是魂斗罗式的那种均匀平铺的卷轴,这种卷动更为平滑。因为我要用在2.5D显示引擎中,只能选择第二种卷轴技术——均匀tile卷轴。1. 卷轴要卷动哪些东西首先要清楚卷动的是什么东西,比如下面的一个KOK1的截图:这是一个典型的2.5D游戏界面,这个界面上的所有元素全都是由位图所组成的,但是不难分析出实际要卷动的只有地面的位图。因为传送门和柱子、树等等都是可以遮挡住人的,即渲染顺序是:

2011-01-03 20:00:00 2338

原创 32BPP窗口模式下24位位图的像素操作(2)

等测距卷轴的逻辑写的差不多了,结果发现之前写的位图至显示表面的代码有些问题,所以重写了一个函数,给定一个表面,基于表面的尺寸和传入的坐标,直接在BITMAP24_PTR上取图,取图后的表面直接就可用,先给出完整代码:int PickBitmap(LPDIRECTDRAWSURFACE7 lpdds, BITMAP24_PTR bitmap, LONG ddsWidth, LONG ddsHeight, LONG cx, LONG cy){ LONG bitmapWidth = bitmap->inf

2011-01-02 22:51:00 1902

原创 DirectDraw7的INITGUID问题

今天对之前学习的知识进行整理,开始搭建一个简单的2D等轴测(2.5D)引擎,没想到LINK的时候遇到一个尴尬的问题,所以当遇到下面两种错误提示的时候,希望能帮到你。1. 第一种最简单,就是忘记在#include 之前加#define INITGUID了。编译器会报下面的错误:error LNK2001: unresolved external symbol _IID_IDirectDraw7加上就好了。2. 第二种就是在封装DirectDraw相关视频库时容易出现的重复定义错误,如下一共17个:error

2010-12-31 14:00:00 2379

原创 确定窗口实际用户区的一些问题

1.RECT的两个坐标属性不同于索引一个左上角在0,0点,宽度为400,长度为300的窗口,他的RECT就是{0,0,400,300},而不是{0,0,399,299},因为x轴上从0到399的宽度是399而不是400。为什么说这个问题呢,因为在你将任何RECT结构发送给大多数DirectDraw函数时,他一般包含左上角,但不包含右下角。这是两个独立的问题,但在同一场景下使用,容易造成概念混乱。2.窗口调整为正确的用户区如果你希望的用户区是400*300,但是使用CreateWindowEx创建的400,3

2010-12-28 12:40:00 1633 2

原创 32BPP窗口模式下24位位图的像素操作(1)

刚学习了几天DirectDraw,书中作者示例多是8位调色板的全屏程序,而且是读取8位位图,可以很方便的使用SetDisplayMode来改变显示模式,按字节写入像素。而在窗口模式中,现在普遍的32BPP和使用24位位图就没有那么方便了,而且书中没有很完整的示例。使用窗口模式的DirectDraw主要有以下几个问题:1.24位位图的像素格式到32位像素格式的转换2.不能使用Flip,需要使用Blt从离屏表面来复制到主显示表面。3.确定真正的用户窗口。4.剪裁。后3个问题书中给了很好的示例,但是对于第1点,像

2010-12-27 22:41:00 4261 2

3D图形库实心渲染源代码

3D图形库实心渲染源代码 平底三角形 平顶三角形 任意三角形 物体实心渲染

2011-03-08

3D图形库背面消隐的三大陷阱示例源代码

3D图形库背面消隐的三大陷阱示例源代码 1.用视线来算 2.注意统一顶点存储顺序 3.注意顶点存储顺序、叉乘计算顺序、视线方向之间的联系

2011-02-25

3D图形库宽高比透视与屏幕变换示例源代码

3D图形库宽高比透视与屏幕变换示例源代码 3D 图形 宽高比 透视投影 视口变换 屏幕的宽和高不一致影响的事情有两件,一:相机的宽视野和纵视野不一致。二:变换到屏幕坐标系时需要平移的位移不相同。

2011-02-23

3D图形库欧拉与UVN相机示例源代码

3D图形库欧拉与UVN相机示例源代码 支持欧拉与UVN相机 支持互转

2011-02-21

3D图形库旋转矩阵的应用示例源代码

3D图形库旋转矩阵的应用示例源代码 绕X,Y,Z轴同时旋转矩阵的生成 金字塔旋转DEMO示例

2011-02-18

3D图形Demo示例Hello3DWorld源代码

3D图形Demo示例Hello3DWorld 世界变换 相机变换 透视变换 屏幕变换 多边形、物体、相机初步结构 实线、虚线渲染

2011-02-17

3D图形库四元数相关函数示例源代码

3D图形库四元数相关函数示例源代码 使用旋转轴与旋转角度构建旋转四元数 四元数四则运算、共轭、逆……

2011-02-10

3D图形库参数化直线与3D平面示例源代码

3D图形库参数化直线与3D平面示例源代码 参数化直线与3D平面结构 计算参数 计算交点

2011-02-10

3D图形相关矩阵函数库示例源代码

3D图形相关矩阵函数库示例源代码 1*3 3*3 1*4 4*4 矩阵加法、乘法、转置、求逆矩阵、求行列式

2011-02-09

3D图形库向量函数库示例源代码

3D图形库向量函数库示例源代码 向量加减 点积 叉乘 归一 求范数 求夹角余弦

2011-02-08

3D坐标系转换示例源代码

3D坐标系转换示例源代码 笛卡尔坐标 极坐标 3D柱面坐标 3D球面坐标 的推导 与转换函数

2011-02-07

快速求三角函数示例源代码

快速三角函数代码 对整度数查表,对浮点度数线性插值

2011-02-07

矩形裁剪直线示例源码

直线被矩形裁剪的示例的源代码 核心算法 空间分析 特殊情况的排除

2011-02-04

直线矩形裁剪完整示例

直线矩形裁剪完整示例,使用Cohen-Sutherland算法

2011-02-04

Cohen-Sutherland裁剪

使用Cohen-Sutherland裁剪直线

2011-02-04

Bresenham画直线

Bresenham画直线 3D 图形 直线

2011-02-03

CPPYIN3D图像库_20110201A

CPPYIN3D图像库_20110201A

2011-02-01

KOK1_SRC_20110120

从零开始重写KOK1(万王之王1) —— (2)优化地图加载 SRC

2011-01-20

KOK1_SRC_20110111

KOK1_SRC_20110111 1 SRC 让人物可在地图上使用鼠标跑动

2011-01-11

KOK1_BIN_20110111

从零开始重写KOK1 1 BIN 让人物可在地图上使用鼠标跑动

2011-01-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除