自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分割窗口CSplitterWnd

在使用CuteFtp或者NetAnt等工具的时候,一般都会被其复杂的界面所吸引,在这些界面中窗口被分割为若干的区域,真正做到了窗口的任意分割。那么我们自己如何创建类似的界面,也实现窗口的任意的分割呢?在VC6.0中这就需要使用到CSplitterWnd类。CSplitterWnd看上去像是一种特殊的框架窗口,每个窗口都被相同的或者不同的视图所填充。当窗口被切分后用户可以使用鼠标移动切分条来调整窗口

2008-12-26 10:05:00 955

原创 游戏引擎全剖析(四)

第4部份: 模型与动画,细节级别 角色建模与动画  你的角色模型在屏幕上看起来怎么样,怎样容易创建它们,纹理,以及动画对于现代游戏试图完成的`消除不可信`因素来说至关重要。角色模型系统逐渐变得复杂起来, 包括较高的多边形数量模型, 和让模型在屏幕上移动的更好方式。  如今你需要一个骨骼模型系统,有骨架和网格细节层次,单个顶点骨架的评估,骨架动画忽略,以及比赛中停留的角度忽略。而这些

2008-12-22 13:43:00 564

原创 OPENGL帧缓存和动画

作为最后一关,我们将架设自己即时光影的动画,让没有VOODOO的玩家看看OPENGL 这震撼(至少我是这么认为的吧)的效果。 我们前面(好象是第三还是第四次)讲过如何用几何变换实现动画。那时的效果现在看肯定不尽人意,因为频繁的闪烁不是我们需要的。因为那时(到这之前也是)采用的是单缓存模式。对正在显示的部分边计算边修改必然造成速度瓶颈,出现闪烁。一般正规的动画制作在实现上都是通过双缓存实现的(硬

2008-12-22 13:28:00 741

转载 vs2008 添加全局变量

用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。   一、在应用程序类中定义   用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。我们可以把需要全局访

2008-12-12 16:22:00 6824 1

转载 STL vector 用法介绍

这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法

2008-12-03 00:44:00 596

转载 C++中的类型重定义

这几天工作时碰到一个C++的编译错误(我使用的是Visual C++ 7.0),说是有一个类重复定义,仔细想想我们的这个项目也是做了好几个Release了,内部代码应该不会有这样的低级错误,真把类型给重复定义了,检查结果正如我预料的一样。就这样,我左右没找到原因,被一个编译错误给卡在那里了。(在我的概念中,程序错误的等级为:编译错误->链接错误->逻辑错误,此错误属于最低级)。这时我仔细看了一下错

2008-12-02 10:24:00 859 1

原创 strcat函数实现

char* myStrcat(char *a, const char *b){ assert(a != NULL && b != NULL); char *c = a; while(*c) {      c++; //找到a串的尾 } while(*c++ = *b++);     return a;} 将b的内容连接到a尾,a的内存空间不能太小

2008-10-24 00:05:00 401

原创 strcpy函数实现

char *strcpy(char *strDest, const char *strSrc);{    assert((strDest!=NULL) && (strSrc !=NULL));     char *address = strDest;                       while( (*strDest++ = * strSrc++) != ‘/0’ )  

2008-10-23 23:15:00 434

原创 strcmp函数的实现

int mystrcmp(const char *str1, const char *str2){ assert(NULL != str1 && NULL != str2); for(int i=0; *(str1+i) != /0 || *(str2+i) != /0 ; ++i)//这里地址操作不能用str1++自增量,需要设置一个变量 {    if(*(str1+i) > *(st

2008-10-23 23:05:00 352

原创 数组排序

#includevoid mysort(int array[10]); //冒泡排序void main(){ int array[10] = {28,48,8,18,38,58,68,98,88,78};// int len=sizeof(array)/sizeof(array[0]); 可测出数组的元素数目/* for(int i = 0; i  {  for(int j = i

2008-10-22 19:57:00 373

转载 [VC/C++]debug与release的区别

一、Debug 和 Release 编译方式的本质区别  Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。  Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但

2008-10-22 16:50:00 545

原创 一个应用单链表基本算法的综合程序

#include #include #include #define N 10 typedef struct node{char name[20];struct node *link;}stud;stud * creat(int n){stud *p,*h,*s;int i;if((h=(stud *)malloc(sizeof(stud)))==NULL){printf("不能分配内存空

2008-10-22 16:04:00 801

原创 循环链表及双向链表的c语言实现

一、循环链表循环链表是与单链表一样,是一种链式的存储结构,所不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者表头结点,从而构成一个环形的链。循环链表的运算与单链表的运算基本一致。所不同的有以下几点:1、在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为NULL。此种情况还使用于在最后一个结点后插入一个新的结点。 2、在判断是否到表尾时,是判断

2008-10-22 16:02:00 630

转载 C 单链表的基本运算

二、单链表的基本运算建立了一个单链表之后,如果要进行一些如插入、删除等操作该怎么办?所以还须掌握一些单链表的基本算法,来实现这些操作。单链表的基本运算包括:查找、插入和删除。下面我们就一一介绍这三种基本运算的算法,并结合我们建立单链表的例子写出相应的程序。1、查找对单链表进行查找的思路为:对单链表的结点依次扫描,检测其数据域是否是我们所要查好的值,若是返回该结点的指针,否则返回NULL。因为在单链

2008-10-22 15:59:00 886

转载 c语言-单链表的建立

一、单链表的建立有了动态内存分配的基础,要实现链表就不难了。所谓链表,就是用一组任意的存储单元存储线性表元素的一种数据结构。链表又分为单链表、双向链表和循环链表等。我们先讲讲单链表。所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分:1、数据域:用来存储本身数据2、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。例:typedef struct node

2008-10-22 15:57:00 1970

空空如也

空空如也

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

TA关注的人

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