自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (9)
  • 收藏
  • 关注

转载 OpenGL ES 2.0 渲染管线

OpenGL ES 2.0实现了可编程的图形管线,比起1.x的固定管线要复杂和灵活很多,由两部分规范组成:OpenGL ES 2.0 API规范和OpenGL ES着色语言规范。下图是OpenGL ES 2.0渲染管线,阴影部分是OpenGL ES 2.0的可编程阶段。

2014-09-17 14:16:38 1848

转载 浅析GCC下C++类对象的内存布局

继承是C++作为OOD程序设计语言的三大特征(封装, 继承和多态)之一, 单一非多态继承是比较好理解的, 本文主要讲解GCC环境下的多重继承和虚拟继承的对象内存布局.一,多重继承先看几个类的定义:class Top{public: int a;};class Left : public Top{public: int b;};class Right : pu

2013-12-12 18:23:16 2485

原创 算法导论 Exercises 23.1

Exercises 23.1 - 算法导论.英文第3版 如有不足或疑问, 欢迎指正. Exercises 23.1-1Let (u, v) be a minimum-weight edge in a connected graph G. Show that (u, v)  belongs to some minimum spanning tree of G.

2013-09-27 13:56:41 12296

转载 OpenGL颜色混合

混合是一种常用的技巧,通常可以用来实现半透明。但其实它也是十分灵活的,你可以通过不同的设置得到不同的混合结果,产生一些有趣或者奇怪的图象。混合是什么呢?混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。假设我们需要绘制这样一个场景:透过红色的玻璃去看绿色的物体,那么可以先绘制绿色的物体,再绘制红色玻璃。在

2013-09-23 15:15:58 1632

转载 OpenGL片断测试

片断测试其实就是测试每一个像素,只有通过测试的像素才会被绘制,没有通过测试的像素则不进行绘制。OpenGL提供了多种测试操作,利用这些操作可以实现一些特殊的效果。我们在前面的课程中,曾经提到了“深度测试”的概念,它在绘制三维场景的时候特别有用。在不使用深度测试的时候,如果我们先绘制一个距离较近的物体,再绘制距离较远的物体,则距离远的物体因为后绘制,会把距离近的物体覆盖掉,这样的效果并不是我们所

2013-09-22 17:51:26 832

转载 欧拉路径, 欧拉回路 USACO Riding the Fences

概念欧拉回路:从图的某一个顶点出发,图中每条边走且仅走一次,最后回到出发点。如果这样的回路存在,则称之为欧拉回路。欧拉路径:从图的某一个顶点出发,图中每条边走且仅走一次,最后到达某一个点。如果这样的路径存在,则称之为欧拉路径。无向图, 欧拉回路存在条件:所有顶点的度数均为偶数。无向图, 欧拉路径存在条件:至多有两个顶点的度数为奇数,其他顶点的度数均为偶数。有向图, 欧拉回路

2013-08-29 18:35:22 1785

原创 算法导论 Exercises 22.5

Exercises 22.5  (22.5-1, 22.5-2, 22.5-3, 22.5-4, 22.5-5, 22.5-6, 22.5-7) - 算法导论.英文第3版 最近看书的同时, 感觉某些练习缺少参考, 所以按部分总结了自己的解答, 也能够强化学习过程. 如有不足或疑问, 欢迎指正. Exercises 22.5-1How can the nu

2013-08-06 14:41:09 5659

转载 无向图判断是否存在环

问题算法导论 (英文第三版) 22.4-3 给出算法判断已知无向图 G = (V, E) 是否存在环. 算法运行时间要求为 O(V), 独立于 |E|.此题关键是算法时间, 判断是否存在环相对简单.分析当DFS(深度优先遍历)时, 如果没有向后边(Back Edge), 则无向图无环.(1) 如果含有向后边, 则无向图存在环.

2013-05-28 17:57:22 3615

原创 有向无环图中, 两点间的简单路径数

问题算法导论 (英文第三版) 22.4-2已知有向无环图 G = (V, E) 和两点 s, t. 给出一个线性时间的算法, 返回在 G 中 s 到 t 的简单路径数. 例如下图 (算法导论 Figure 22.8), 该有向无环图存在4条简单路径从点 p 到 点 v :  po, pory, posry 和 psry.分析可以考虑深度优先遍历, 从

2013-05-23 17:19:20 9888 2

原创 查找有向图中 Universal Sink

问题算法导论 (英文第三版) 22.1-6 看到该问题:"以邻接矩阵表示的图的多数算法, 时间需求都是O(V2),但有一些例外,查找有向图中是否存在 Universal Sink(顶点入度|V|-1, 出度0), 时间需求是O(V)."int i = 1;int j = 1;while (j <= n){ if (G(i, j)) i++; else j++

2013-04-03 17:58:39 1914

转载 图论之拓扑排序

邻接表邻接矩阵用二维数组即可存取,比较简单,但除完全图外,一般的图不是任意两个顶点都相邻接,因此邻接矩阵也有很多零元素,特别是当n 较大而边数相对完全图的边(n-1)又少得多时,邻接矩阵仍是很稀疏,这样浪费存储空间。邻接表(Adjacency List)是图的一种顺序存储与链式存储结合的存储方法,类似于树的孩子链表表示法。由于它只考虑非零元素,因而节省了零元素所占的存储空间。它对于

2013-03-14 14:27:20 1489

转载 Bezier曲线原理

原理:贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由 Paul de Casteljau 于1959年运用de Casteljau 算法开发,以稳定数值的方法求出贝塞尔曲线。线性贝塞尔曲线给定点 P0、P1,线性贝塞尔曲线只是一条两点之间的直线。这条线由下式给出:且其等

2013-02-22 18:07:56 2154

转载 VS中Debug与Release的区别

对于VS的使用者来说, 常会遇到的编译问题时, Debug版本运行正常, 但在Release版本则不稳定或无法运行. 以下是对Debug版本和Release版本区别的分析:Debug 通常称为调试版本, 它包含调试信息, 并且不作任何优化, 便于程序员调试程序. Release 称为发布版本, 它往往是进行了各种优化, 使得程序在代码大小和运行速度上都是最优的, 以便用户很好地使用.D

2012-12-31 17:25:15 1405

转载 bat批处理 set命令

set 功能一览[设置变量]格式: set 变量名=变量值  或   set 变量名=%变量名%详细:  被设定的变量以%变量名%引用[取消变量]格式: set 变量名=详细: 取消后的变量若被引用%变量名%将为空[展示变量]格式: set 变量名详细: 展示以变量名开头的所有变量的值[列出所有可用的变量]格式: set[

2012-12-27 15:53:51 6092

转载 bat批处理 for命令

格式: FOR [参数] %%变量名 IN  (相关文件或命令)   DO 执行的命令   作用: 对一个或一组文件, 字符串或命令结果中的每一个对象执行特定命令, 达到我们想要的结果。   注意: 在批处理文件中使用 FOR 命令时, 指定变量请使用 %%variable, 而不要用 %variable. 变量名称是区分大小写的, 所以 %%i 不同于 %%I.   关于: FO

2012-12-27 13:04:46 1262

转载 Big Endian与Little Endian区别

Byte Endian是指字节在内存中的组织, 所以也称它为Byte Ordering或Byte Order.对于数据中跨越多个字节的对象, 我们必须为它建立这样的约定:(1)它的地址是多少?(2)它的字节在内存中是如何组织的?针对第一个问题,有这样的解释:对于跨越多个字节的对象,一般它所占的字节都是连续的,它的地址等于它所占字节最低地址. (链表可能是个例外,但链表的地址

2012-12-27 10:42:27 999

转载 SVN的标准目录结构: trunk, branches, tags

我们在一些著名开源项目的版本库中,通常可以看到trunk,branches, tags等三个目录。由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在,这是因为这三个目录反映了软件开发的通常模式。trunk是主分支,是日常开发进行的地方。branches是分支,一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branch

2012-10-15 18:18:47 1125

转载 浅谈C/C++内存泄漏及其检测工具

对于一个C/C++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如 Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中已经比

2012-09-21 14:43:11 2426

转载 C/C++二进制,八进制, 十进制和十六进制的表示方法

C/C++语言本身支持的三种输入是: 1. 十进制。如56。 2. 十六进制,以0x开头,比如0x7a。输出十六进制hex关键字格式化,如cout3. 八进制,以0开头,比如030。输出八进制用oct关键字格式化,如cout如下示例程序:#includeusing namespace std;void main(){ int a,b,c; a=

2012-09-14 00:53:25 58035 1

转载 C/C++带括号四则运算

(1).首先从string读入表达式,取出每一个字符后装入deque容器coll1中(源码在后面)。(2).从该容器取出每一个元素,利用栈将中缀表达式转换成后缀表达式(可参考:http://blog.csdn.net/anye3000/article/details/7939203),将后缀表达式装入容器coll3中。(3).最后从coll3中取出元素逐一处理,既使用逆波兰式求值(如下图)

2012-09-04 11:26:06 19966 2

转载 利用栈将 (中缀表达式) 转换成 (后缀表达式)

目的:将中缀表达式(即标准形式的表达式)转换为后缀式。例子:a+b*c+(d*e+f)*g转换成abc*+de*f+g*+ 转换原则:1.当读到一个操作数时,立即将它放到输出中。操作符则不立即输出,放入栈中。遇到左圆括号也推入栈中。2.如果遇到一个右括号,那么就将栈元素弹出,将符号写出直到遇到一个对应的左括号。但是这个左括号只被弹出,并不输出。

2012-09-03 18:54:28 5738

转载 C/C++预处理指令

预处理指令 (Preprocessor Directives)预处理指令是我们写在程序代码中的给预处理器(preprocessor)的命令,而不是程序本身的语句。预处理器在我们编译一个C++程序时由编译器自动执行,它负责控制对程序代码的第一次验证和消化。所有这些指令必须写在单独的一行中,它们不需要加结尾的(;)分号。#define在这个教程的开头我们已经提到了一种预处理指令

2012-08-13 17:51:09 807

转载 表驱动

表驱动方法表是几乎所有数据结构课本都要讨论的非常有用的数据结构。表驱动方法出于特定的目的来使用表,下面将对此进行讨论。程序员们经常谈到"表驱动"方法,但是课本中却从未提到过什么是"表驱动"方法。表驱动方法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或case)来把它们找出来的方法。事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的

2012-07-12 11:07:26 808

转载 std::tr1::function

使用std::tr1::function对象代替虑函数在 C++的TR1中(Technology Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类的非静态成员函数时。可以参考Scott Meyers. . Item 35.下面具体说明其使用方法。1. 指向全局函数或静态成员函数时

2012-06-21 19:45:46 808

转载 关于函数对象和调用操作符

函数对象和调用操作符可以为类类型的对象重载函数调用操作符。一般为表示操作的类重载调用操作符。例如,可以定义名为 absInt 的结构,该结构封装将 int 类型的值转换为绝对值的操作:struct absInt {int operator() (int val) {return val }};这个类很简单,它定义了一个操作:函数调用操作符

2012-06-21 18:39:23 952

转载 DLL编程的导入导出,__declspec(dllimport),__declspec(dllexport)

在Windows DLL编程时,可使用__declspec(dllimport)关键字导入函数或者变量。 __declspec(dllimport),函数的导入 当你需要使用DLL中的函数时,往往不需要显示地导入函数,编译器可自动完成。但如果你显示地导入函数,编译器会产生质量更好的代码。由于编译器确切地知道了一个函数是否在一个DLL中,它就可以产生更好的代码,不再需要间接的

2012-04-20 15:35:35 13309

转载 动态链接库DLL基础编程

(由于原文部分代码在VC下存在书写方式及编译问题,所以进行了修正)本文对通用的DLL技术做了一个总结,并提供了源代码打包下载,下载地址为:http://www.blogjava.net/Files/wxb_nudt/DLL_SRC.rarDLL的优点简单的说,dll有以下几个优点:1) 节省内存。同一个软件模块,若是以源代码的形式重用,则会被编译到不同的可执行程序中

2012-04-20 14:38:00 1566

转载 CloseHandle(),TerminateThread(),ExitThread()的区别

线程的handle用处:线程的handle是指向“线程的内核对象”的,而不是指向线程本身.每个内核对象只是内核分配的一个内存块,并且只能由内核访问。该内存块是一种数据结构,它的成员负责维护对象的各种信息(eg: 安全性描述,引用计数等)。CloseHandle()在CreateThread成功之后会返回一个hThread的handle,且内核对象的计数加1,CloseHandl

2012-04-17 18:34:32 64195 11

转载 C++多线程编程简单实例

C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数HANDLE CreateThread(     LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD    SIZE_T dwStackSize,

2012-04-17 16:43:25 18689 5

转载 sizeof与strlen的区别与联系

一、sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所

2012-02-23 17:06:42 931

转载 C语言常用转义字符表

字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。在C程序中使用转义字符\ddd或者\xhh可以方便灵活地表示任意字符。\ddd为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制ASCII码值。\x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制ASCII码值。使用转义字符时需要注意以下问题:1)

2011-12-08 10:52:33 1926

转载 选择、插入、冒泡排序(Selection,Insertion,Bubble)

说明选择排序(Selection sort)、插入排序(Insertion sort)与冒泡排序(Bubble sort)这三个排序方式是初学排序所必须知道的三个基本排序方式,它们由于速度不快而不实用(平均与最快的时间复杂度都是O(n2)),然而它们排序的方式确是值得观察与探讨的。方法选择排序将要排序的对象分作两部份,一个是已排序的,一个是未排序的,从后端未排序部份

2011-11-08 20:33:26 2327

转载 斐波那契查找(FibonacciSearch)

说明二分搜寻法每次搜寻时,都会将搜寻区间分为一半,所以其搜寻时间为O(log(2)n),log(2)表示以2为底的log值,这边要介绍的费氏搜寻,其利用费氏数列作为间隔来搜寻下一个数,所以区间收敛的速度更快,搜寻时间为O(logn)。方法该方法稍有些繁琐,对照代码更容易理解。费氏搜寻使用费氏数列来决定下一个数的搜寻位置,所以必须先制作费氏数列,这在之前有提过;费氏搜寻会先透过公式计

2011-11-07 19:04:13 923

转载 插补法查找(InterpolationSearch)

说明如果待查找的数据分布平均的话,可以使用插补(Interpolation)法查找,在搜寻的对象大于500时,插补法查找会比二分法查找来的快速。方法插补法查找是以数据分布的近似直线来作比例运算,以求出中间的索引并进行数据比对,如果取出的值小于要寻找的值,则提高下界,如果取出的值大于要寻找的值,则降低下界,如此不断的减少搜寻的范围,所以其本原则与二分法查找是相同的,至于中间值的寻

2011-11-07 16:34:10 3147

转载 基数排序(RadixSort)

说明在之前所介绍过的排序方法,都是属于「比较性」的排序法,也就是每次排序时 ,都是比较整个键值的大小以进行排序。这边所要介绍的「基数排序法」(radix sort)则是属于「分配式排序」(distribution sort),基数排序法会使用到「桶子」(bucket),顾名思义,它是透过键值的部份信息,将要排序的元素分配至某些「桶」中,藉以达到排序的作用,基数排序法是属于稳定性的排

2011-11-07 15:31:01 816

转载 合并排序(MergeSort)

说明之前所介绍的排序法都是在同一个数组中的排序,考虑今日有两组或两组以上的数据,它可能是不同数组中的数据,或是不同档案中的数据,如何为它们进行排序?解法可以使用合并排序法,合并排序法基本是将两组已排序的数据合并,并进行排序,如果所读入的数据尚未排序,可以先利用其它的排序方式来处理这两组数据,然后再将排序好的这两组数据合并。有人问道,如果两组数据本身就无排序顺序,何不将所

2011-11-03 20:46:05 884

转载 顺序查找(LinearSearch)

说明搜寻的目的,是在数据中寻找指定的数据,而当中顺序搜索是最基本的搜寻法,只要从数据开头寻找到最后,看看是否找到数据即可。(这里跟原文有所区别,顺序查找不需要[已排序数据])方法初学者看到顺序搜索,多数都会使用以下的方式来进行搜寻:while(i if(number[i] == k) {printf("找到指定值");break;}i++;}

2011-11-03 20:15:05 4053

转载 二分法查找(BinarySearch)

说明如果搜寻的数列已经有排序,应该尽量利用它们已排序的特性,以减少搜寻比对的次数,这是搜寻的基本原则,二分搜寻法是这个基本原则的代表。方法在二分搜寻法中,从数列的中间开始搜寻,如果这个数小于我们所搜寻的数,由于数列已排序,则该数左边的数一定都小于要搜寻的对象,所以无需浪费时间在左边的数;如果搜寻的数大于所搜寻的对象,则右边的数无需再搜寻,直接搜寻左边的数。所以在二分搜寻

2011-11-03 19:38:29 855

转载 快速排序(QuickSort)

快速排序法(一)说明快速排序法(quick sort)是目前所公认最快的排序方法之一(视解题的对象而定),虽然快速排序法在最差状况下可以达O(n2),但是在多数的情况下,快速排序法的效率表现是相当不错的。快速排序法的基本精神是在数列中找出适当的轴心,然后将数列一分为二,分别对左边与右边数列进行排序,而影响快速排序法效率的正是轴心的选择。这边所介绍的第一个快速排序法版本,是在多数的教科书

2011-08-16 18:35:21 1080

转载 堆积排序(HeapSort) - 改良的选择排序

说明选择排序法的概念简单,每次从未排序部份选一最小值,插入已排序部份的后端,其时间主要花费于在整个未排序部份寻找最小值,如果能让搜寻最小值的方式加 快,选择排序法的速率也就可以加快,Heap排序法让搜寻的路径由树根至最后一个树叶,而不是整个未排序部份,因而称之为改良的选择排序法。方法Heap排序法使用Heap Tree(堆积树),树是一种数据结构,而堆积树是一个二元树,也就是每一个

2011-08-12 17:19:59 1298

Lua程序设计[CHM]

Lua程序设计,Programming in Lua中文版,chm格式

2011-07-09

ogre 1.7.0 API手册[CHM]

ogre 1.7.0 API使用手册,chm格式[英文].详细介绍ogre引擎中每个类及成员用处

2010-11-01

DirectX9.0中文帮助文档

PDF清晰格式 DirectX SDK Summer 2004 中文帮助文档(翻译),与October 2006文档内容相差不大。是学习DirectX的理想材料。

2009-10-27

Apress Pro OGRE 3D Programming

Sep.2006版本,英文高清PDF. 关于OGRE游戏引擎,300多页短小精干,但是可以快速了解这款开源引擎的设计和构架,以及使用方法.

2009-10-24

Introduction to 3D Game Programming with DirectX 9.0

电子书(英文版) 学习Direct3D的经典入门教材,下载后可能需要重新修改文件名,因为下载过程中文件名有变化。

2008-10-24

游戏引擎j介绍[word文档]

对游戏引擎进行一个全面的介绍以及主要功能。

2008-07-11

IceSword120-冰刃

IceSword是一斩断黑手的利刃(所以取这土名,有点搞e,呵呵)。它适用于Windows 2000/XP/2003操作系统,用于查探系统中的幕后黑手(木马后门)并作出处理,当然使用它需要用户有一些操作系统的知识。<br>

2008-05-11

FLV2AVI

一款集flv播放、转换为一体的小巧工具软件,可以将flv(flash video)视频文件转换至avi/wmv/mp3/mp4/mpg/psp格式,具有批量转换功能,支持网上所有flv文件。软件操作简单,使用方便,无需安装,为绿色软件,直接解压至任意目录即可使用。

2008-05-11

空空如也

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

TA关注的人

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