自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 收藏
  • 关注

转载 临界区,互斥量,信号量,事件的区别(线程同步)

四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。 临界区(Critical Section)保证在某一时刻只有一个线程能访问数据的

2014-07-30 10:30:54 599

转载 多线程编程

#include "stdafx.h"#include #include using namespace std; static int g_iCnt = 100;CRITICAL_SECTION g_CriticalSection;DWORD WINAPI Thread1(LPVOID lpParmeter); DWORD WINAPI Thread2(LPVO

2014-07-29 22:23:11 473

转载 VC 运行时库 /MD、/MDd 和 /MT、/MTd

有段时间在写cuda程序是出现过error LNK2005: _exit 已经在 MSVCRTD.lib(MSVCR71D.dll) 中定义 等类似错误原因应该是在vs2010 工程属性中 c/c++的代码生成(code generation)中的设置与cuda c/c++ Host Runtime library不一样导致的。后来在写opencv程序中的 findcontour(

2014-07-29 21:43:48 671

转载 STL系列十一 随机三趣题——随机重排,文件中随机取一行,生成N个随机数

2014-07-14 00:02 8人阅读 评论(0)收藏 举报目录(?)[+]本文将介绍三个有趣的随机问题,分别是随机重新排列、从文件中随机取一行数据、生成N个随机数。 一.随机重新排列将一个序列打乱并对其进行随机的重新排列,关键在于每种序列的被选择概率要一样,不然有失“公平”。现在让我们来寻找如何保证每种序列被选择的概率一样大的算法。首先假设这个

2014-07-28 21:07:50 382

转载 STL系列之十 全排列(百度迅雷笔试题)

2014-07-13 23:59 9人阅读 评论(0)收藏 举报目录(?)[+]全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。首先来看看题目是如何

2014-07-28 21:06:56 329

转载 STL系列之九 探索hash_set

Title:        STL系列之九 探索hash_setAuthor:     MoreWindowsBlog:       http://blog.csdn.net/MoreWindowsE-mail:     [email protected]:   C++ STL set hash_set 哈希表 链地址法 本文将着重探索hash_set比s

2014-07-28 21:06:14 333

转载 STL系列之七 快速计算x的n次幂 power()的实现

计算x的n次幂最简单直接的方法就是相乘n次,很容易写出程序:[cpp] view plaincopy//计算x^n 直接乘n次 by MoreWindows( http://blog.csdn.net/MoreWindows )  int power1(int x, unsigned int n)  {      int result = 1;      while (

2014-07-28 21:04:16 350

转载 STL系列之八 slist单链表

微软的VS208所使用的PJ STL(注1)中的list是双链表,但在某些场合,一个轻量级的单链表会更加合适。单链表非常常见,这里就不去细说了,本文的slist(single linked list)单链表实现了链表的基本功能,如有需要,以后还会扩充的。slist单链表(带头结点)的示意图如下所示:完整的C++代码如下:[cpp] view plaincopy

2014-07-28 21:03:04 296

转载 STL系列之六 set与hash_set

STL系列之六 set与hash_setset和hash_set是STL中比较重要的容器,有必要对其进行深入了解。在STL中,set是以红黑树(RB-tree)作为底层数据结构的,hash_set是以Hash table(哈希表)作为底层数据结构的。set可以在时间复杂度为O(logN)情况下插入、删除和查找数据。hash_set操作的时间复杂度则比较复杂,这取决于哈希函数和哈希表的负载情况。

2014-07-28 21:02:30 333

转载 STL系列之三 queue 单向队列

queue单向队列与栈有点类似,一个是在同一端存取数据,另一个是在一端存入数据,另一端取出数据。单向队列中的数据是先进先出(First In First Out,FIFO)。在STL中,单向队列也是以别的容器作为底部结构,再将接口改变,使之符合单向队列的特性就可以了。因此实现也是非常方便的。下面就给出单向队列的函数列表和VS2008中单向队列的源代码。单向队列一共6个常用函数(front()、ba

2014-07-28 21:00:26 300

转载 STL系列之二 stack栈

栈(statck)这种数据结构在计算机中是相当出名的。栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了。因此实现非常的方便。下面就给出栈的函数列表和VS2008中栈的源代码,在STL中栈一共就5个

2014-07-28 20:59:53 384

转载 STL系列之五 priority_queue 优先级队列

priority_queue 优先级队列是一个拥有权值概念的单向队列queue,在这个队列中,所有元素是按优先级排列的(也可以认为queue是个按进入队列的先后做为优先级的优先级队列——先进入队列的元素优先权要高于后进入队列的元素)。在计算机操作系统中,优先级队列的使用是相当频繁的,进线程调度都会用到。在STL的具体实现中,priority_queue也是以别的容器作为底部结构,再根据堆的处理规则

2014-07-28 20:59:16 308

转载 STL系列之一 deque双向队列

deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数: deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都是指针,指向另一段(较大的)区域,这个区域称为缓冲区,缓冲区用来保存deque中的数据。因此deque在随机

2014-07-28 20:59:01 283

转载 STL系列之四 heap 堆

下面再介绍STL中与堆相关的4个函数——建立堆make_heap(),在堆中添加数据push_heap(),在堆中删除数据pop_heap()和堆排序sort_heap():头文件 #include 下面的_First与_Last为可以随机访问的迭代器(指针),_Comp为比较函数(仿函数),其规则——如果函数的第一个参数小于第二个参数应返回true,否则返回false。建立堆ma

2014-07-28 20:58:41 350

转载 STL中map、set的数据结构及底层实现

摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值。 vector(向量)——STL中标准而安全的数组。只能在ve

2014-07-28 16:16:53 432

转载 【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

看到在留言中很多朋友提到不太清楚DirectX与游戏引擎的区别的问题,在这里浅墨就专门把自己对游戏引擎的一些理解写成一篇文章,作为我们《Visual C++游戏开发》专栏的游戏引擎导论,也希望能通过这篇文章,能让大家有所启发,对游戏引擎,对渲染流水线的概念有更深刻的认识。文章首先分析了学习游戏引擎的必要性,然后介绍了游戏引擎的概念和相关知识,接着介绍了几款最具人气的开源游戏引擎,然后对市面上存

2014-07-28 16:11:49 1780 1

转载 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

终极解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 “是”改为“否”即可,但是没新建一个项目都要这样设置一次。在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资

2014-07-27 09:59:35 433

转载 Unicode字符集和多字节字符集关系

Unicode字符集和多字节字符集关系在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset)。在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个字符,总共表示128个字符,其中包括了英文字母、数字、标点符号等常用字符。之后,又进行扩展,使用8 bi

2014-07-26 22:25:18 385

转载 Debug与Release版本的区别

由于最近搞了个项目,Debug版本下程序可以正常运行退出,而给QA的Release版本则不能正常的运行退出,调试release版本时,发现Code并没有问题,结果将Release版本的优化选项关闭掉,问题就解决了。本文主要包含如下内容:1. Debug和 Release编译方式的本质区别2.哪些情况下 Release版会出错2.怎样"调试" Release版的程序-------

2014-07-26 22:15:50 359

转载 STL 算法

STL算法概述简介:STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象注意:编译器无法检测出所传递的迭代器是一个无效形式的迭代器,当然也无法给出算法函数错误的提示,因为迭代器并不是真实的类别,它只是传递给函数模板的一种参数格式而已算法的一些限制:1、保证迭代器有效2、区间必须有足够的空

2014-07-26 16:53:12 234

转载 GDI使用经验总结

本人由于工作的原因,对GDI的研究较多,下面是我在使用中的一些经验总结,希望大家有问题的指出问题,如果能对初学者有一点点帮助,我也就算是没有白写此文了!        windows内部对于GDI的操作赋于了很高的权限,但要想做一个好的图形界面,并且占用资源少的图形界面的话,还是要下一番工夫的,下面我总结出来几条:一:双缓冲,这是耳朵听起老茧的东西的,这其中,主要是建立内存兼容DC和内

2014-07-26 15:47:15 442

转载 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)

众所周知,GUI是游戏中不可缺少的元素,这篇文章中,我们首先了解了游戏GUI界面的知识与相关概念,然后一起设计了一个封装好GUI图形界面的C++类。这个类有着非常强的扩展性,使用也是极其方便,很适合二次开发。先看一张实现的效果图吧:其中的背景音乐,游戏图标和背景图片都出自育碧公司的招牌式大作《刺客信条》。程序的窗口大小已经被浅墨调成了1366 x768,现阶段比

2014-07-25 23:00:26 1160

转载 【Visual C++】游戏开发五十五 浅墨DirectX教程二十二 水乳交融的美学:alpha混合技术

在这篇文章里面,我们一起非常详细地探讨了Direct3D中Alpha混合相关的内容。首先是认识了Alpha通道与混合技术,然后结识了融合因子,了解了融合运算方式和融合因子的取法,以及Alpha的三处来源,接着是大家喜闻乐见的极易上手的使用三部曲,最后依旧是详细注释的程序源码的欣赏,程序截图和每文一语栏目。 放截图吧,不过为了不毁三观,我们还是先放原版带纹理的截图:对比图

2014-07-25 22:59:40 850

转载 【Visual C++】游戏开发五十七 浅墨DirectX教程二十四 打造游戏GUI界面(二)

hello,我们又如约相见了。:)上一讲中我们已经实现了一个简单的GUI系统,显示出了游戏的GUI主菜单页面,而本篇文章的主要目的是在之前GUI系统的基础上,实现GUI中多个页面间的切换和返回,更具有实用意义。首先依然是放出截图吧,首先是主菜单页面: 【开始新游戏】界面: 【载入游戏】界面: 【选项】界面: 嗯,做出来的效果还

2014-07-25 22:58:47 970

转载 【Visual C++】游戏开发五十四 浅墨DirectX教程二十一 视觉的诡计:公告板(Billboard)技术

I'm back~,这段时间大家久等了~现在大家看到的,就是【Visual C++】游戏开发系列文章第三季中作为正式回归的第一篇文章了。在这篇文章中,我们一起详细探讨了游戏编程中公告板技术的方方面面,有“深入”的过程分析,也有“浅出”的大家喜闻乐见的使用方法几步曲,最后依旧是一个注释详细的示例程序将这一节的内容融会贯通,且文章最后附有这篇博文配套示例程序的源代码下载。首先放一张截图吧:

2014-07-25 22:58:41 1926

转载 【Visual C++】游戏开发五十一 浅墨DirectX教程十九 网格模型进阶之路

最近几个星期,不停地收到大家的评论和邮件,大家都说希望浅墨早点讲骨骼动画。本来按浅墨拟定的写作计划是把骨骼动画放到很后面,因为骨骼动画知识需要前面的网格模型知识为基础,知识量本身有些大,很可能要占很多次更新的篇幅。但是看到大家一致的评论,都说非常期待骨骼动画。那就好吧,我们就来开始慢慢讲。一路披荆斩棘,把网格模型相关知识讲完,然后消灭掉骨骼动画这个看似很难的大块头。其实骨骼动画学起来并不难

2014-07-25 22:55:09 1791

转载 【Visual C++】游戏开发五十 浅墨DirectX教程十八 雪花飞扬:实现唯美的粒子系统

本篇文章中,我们将一起探讨三维游戏中粒子系统的方方面面,首先对粒子系统的基本概念特性做一个全面的认知,然后我们依旧是把粒子系统封装在一个C++类中,模拟了三维游戏中唯美的雪花飞扬的景象,让我们之前的综合三维游戏场景更加炫。依旧是放出一张本篇文章的配套程序的截图:这个帅气的大天使为我们唯美的雪花飞扬示例程序平添了几分霸气有木有? PS:示例程序的源代码在文章末尾提供下载

2014-07-25 22:54:25 1752

转载 【Visual C++】游戏开发五十三 骨骼动画学习资料推荐&打包下载

授之以鱼,不如授之以渔。知道大家普遍对骨骼动画很感兴趣。浅墨想了一下,如果依旧是这样一周一更新来写骨骼动画的话,不花几个月,是讲不完的。所以,这次就给大家推荐几本学习游戏动画方面全面和经典和书籍,打包了整理好供大家下载学习(下载地址在文章末尾)。其中有中文版的《DirectX高级动画制作》,它的讲解版本为DirectX 9.0b,不是我们现在占有率最高的DirectX 9.0c,但这无伤大

2014-07-25 22:54:08 780

转载 【Visual C++】游戏开发五十二 浅墨DirectX教程二十 骨骼动画来袭(一)

这是答应大家的讲解骨骼动画的文章的N部曲的第二篇。这篇文章里,我们对现行的三种模型动画技术进行了概述,然后对X文件构成进行了详细的剖析,最后放出了骨骼动画的第一个示例程序,载入了《诛仙》中陆雪琪非常优雅的”剑舞“动画。伊人在漫天雪花之中翩翩剑舞,非常有意境:)。先上几张截图来一睹陆雪琪舞剑的风采吧: 示例程序源代码在文章末尾提供下载。好吧,咱们开始正

2014-07-25 22:53:20 1420 1

转载 【Visual C++】游戏开发四十八 浅墨DirectX教程十六 三维地形系统的实现

上个星期浅墨写的介绍三维摄像机的文章和示例程序放出以后,大家似乎都表现出了很高涨的热情,不少朋友评论或者给浅墨发邮件问什么时候讲地形和天空顶。本来浅墨是准备这个星期就开始讲可编程渲染流水线的,看大家这么强烈的要求,浅墨决定干脆把准备在后面讲的地形天空一气呵成,跟在摄像机后面一起讲了得了。所以,这篇文章就诞生了。先上一张配套示例程序的截图: 修改顶点间距和缩放比例可以得到更广阔,更陡峭的

2014-07-25 22:52:40 1433

转载 【Visual C++】游戏开发笔记四十七 浅墨DirectX教程十五 翱翔于三维世界:摄像机的实现

本篇文章中,我们以核心思想为突破口,从原理介绍到一个C++类的写法,一步一步带领大家实现了一个第一人称三维摄像机的C++类。然后我们在这个摄像机类的帮助下,放出了一个几乎贯穿了我们之前学到的所有DirectX相关知识的“三维场景漫游”示例程序,算是对我们之前学的固定功能流水线这套渲染体系的总结。这个“三维场景漫游”示例程序的代码量有一千行,包括了Direct3D初始化,DirectInput输入处

2014-07-25 22:51:41 1767

转载 【Visual C++】游戏开发四十九 浅墨DirectX教程十七 三维天空的实现

这篇文章里,浅墨准备跟大家一起探讨一下三维天空的几种实现方式,然后在几种方式之中选择最常用的一种进行重点突破,用一个C++类把这种三维天空的实现方式封装起来。这样以后要使用三维天空来辅助绘制某个游戏场景的话,准备好天空的纹理图,然后简单地敲几行代码,调用一下这个天空类中我们亲手写出来的函数就搞定了。先放一张程序截图: 程序源码在文章末尾有给出下载地址。

2014-07-25 22:51:13 1449

转载 【Visual C++】游戏开发笔记四十五 浅墨DirectX教程十三 深度测试和Z缓存专场

在游戏三维场景中,想创造出唯美而具画面感和真实感的画面,常常需要绘制大量的物体。而这些物体之间通常都存在着遮挡的关系,离观察点较远的物体,会因为近处物体的遮挡而不可见,或者只有部分可见。在Direct3D中,微软为我们提供了,深度缓存(或称Z缓存),配套着深度测试技术,来专门实现这种效果。下图是本篇文章配套程序的一个截图,可以发现,利用了深度测试,才能让战士与这个矩形墙面水乳交融,表达出这个战士似

2014-07-25 22:50:02 886

转载 【Visual C++】游戏开发笔记四十四 浅墨DirectX教程十二 网格模型和X文件使用面面观

在本篇文章中,我们一起详细探索了Direct3D网格相关的知识,对当前两款主流的三维建模软件(3DS Max和Maya)进行了介绍,了解了如何从3DS Max 中导出X文件,以及如何从X文件加载三维模型到DirectX游戏程序中。文章最后,我们依旧配了一个比较好玩的demo来让大家对本篇文章所学的知识融会贯通,最后提供了这个demo详细注释的源代码下载。首先我们复习一个之前讲过

2014-07-25 22:49:16 1784

转载 【Visual C++】游戏开发笔记四十六 浅墨DirectX教程十四 模板测试与镜面特效专场

上篇文章中我们讲解了深度缓存的方方面面,有不少朋友都评论或者发邮件跟浅墨说接下来讲一讲和深度缓存情同手足的模板缓存相关的技术,于是,这篇文章就诞生了。这篇文章可是费了浅墨不少脑细胞啊,写了周末整整一天,一万多字,从早上11点写到晚上12点- -。这篇文章的主角模板技术整体来说比深度测试技术难理解,文中有不懂的地方大家可以多看几遍,最好是结合文章后面我们提供的配套示例程序的代

2014-07-25 22:48:31 1091

转载 【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩:纹理映射技术(二)

本篇文章里,我们首先对Direct3D之中固定功能流水线中的纹理映射相关的知识进行了详尽的剖析,然后我们将DirectInput这套游戏输入控制领域一手遮天的API用一个C++类进行了抽象和封装,这样之后我们用起来会显得非常便捷。希望在学习抽象和封装这套API的时候,大家能领悟到那些只能意会不可言传的宝贵编程思想。 文章末尾依旧是提供文章配套详细注释的demo源代码的欣赏,并在文章末尾给出

2014-07-25 22:48:28 1476

转载 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场

在本篇文章中,我们一起详细探索了DirectInput这套在PC游戏即时控制方面一手遮天的API。下面先来看一下这篇一万多字文章的大体脉络。首先我们对DirectInput接口进行了整体上的讲解,然后深入DirectInput的使用步骤进行具体的探索,最后浅出,归纳出DirectInput使用五步曲,方便大家的快速掌握。文章最后,我们配了一个比较好玩的demo来让大家对本篇文章所学的DirectI

2014-07-25 22:47:24 4502 1

转载 【Visual C++】游戏开发笔记四十 浅墨DirectX教程之八 绘制真实质感的三维世界:光照与材质专场

本篇文章里,我们对Direct3D之中固定功能流水线中的3D光照编程相关的知识进行了详尽的剖析,文章末尾依旧是提供文章配套的详细注释的demo源代码的欣赏,并在文章末尾提供了源代码下载。 一、引言光,乃万物之源。我们根本无法想象,这个美丽怡人的世界,如果没有光的陪伴,会是怎样的一副满目疮痍。计算机3D世界作为现实世界的高度逼真的模仿,必然也少不了光的陪伴。回

2014-07-25 22:45:49 1218

转载 【Visual C++】游戏开发笔记三十九 浅墨DirectX教程之七 他山之石:几种几何体的快捷绘制法

本篇文章里,我们对Direct3D之中几种几何体的简洁绘制方法进行了详细的剖析,最后依旧是提供文章配套的详细注释的demo源代码的欣赏,并在文章末尾提供了源代码下载。(这标题有些歧义的,这个几种是修饰几何体的,而绘制的方法只有一种 :D) 首先需要跟大家道声歉,上个周末因为浅墨个人的原因。没把想写的内容的思路整理好,所以就停更了一次。 好了,别的废话咱不说了,下面直奔本周主题~ 

2014-07-25 22:45:04 952

转载 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩:纹理映射技术(一)

本篇文章里,我们对Direct3D之中固定功能流水线中的纹理映射相关的知识进行了详尽的剖析,文章末尾依旧是提供文章配套详细注释的demo源代码的欣赏,并在文章末尾给出了源代码的下载地址。由于纹理映射相关知识体系比较繁杂,所以需要分次进行介绍,此为上篇。 一、引言 江山如此多娇,风景如画。万物都有其独特的特点。真实世界中的物体,在计算机三维世界中如果单

2014-07-25 22:44:13 1680

空空如也

空空如也

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

TA关注的人

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