- 博客(33)
- 资源 (6)
- 收藏
- 关注
原创 Symbian绘图编程
Symbian绘图编程 Symbian OS中,在可显示窗体上画图是通过图形设备(graphics device)和图形上下文(graphics context)来实现。一、图形设备 图形设备是对呈现图形的设备(屏幕、打印机等)的抽象。它提供了一组独立于设备的接口,应用程序使用这些接口,通过图形上下文(graphics context)来画图。图形设备是画图的中介,图形上下
2010-02-03 21:22:00
1357
1
原创 Symbian绘图编程
Symbian绘图编程 Symbian OS中,在可显示窗体上画图是通过图形设备(graphics device)和图形上下文(graphics context)来实现。一、图形设备 图形设备是对呈现图形的设备(屏幕、打印机等)的抽象。它提供了一组独立于设备的接口,应用程序使用这些接口,通过图形上下文(graphics context)来画图。图形设备是画图的中介,图形上下
2010-02-03 20:22:00
1403
1
原创 S60应用程序框架
S60应用程序框架一、Symbian OS 工程结构1、目录结构 Includes:系统提供的公共头文件。 data:资源目录,存放程序资源文件(.rss/.rls/_reg.rss)。 help:帮助文件目录,存放帮助文件。 inc:项目相关的头文件。 src:项目相关的源文件。 gfx:存放程序图标。 group:项
2010-01-28 21:29:00
880
原创 XNA中的拾取与碰撞检测
一、 拾取与碰撞检测1、 碰撞检测XNA中的碰撞检测是通过测试两个物体的包围盒或者包围球是否相交来实现的。XNA为模型的每个Meshe建立一个包围盒和包围球。(1)、获取包围球 BoundingSphere c1BoundingSphere = model1.Meshes[i].BoundingSphere; BoundingSphere c
2008-10-04 17:48:00
2650
原创 XNA中的摄像机
XNA中摄像机是通过View和Projection来体现的,其中View矩阵用于实现世界坐标到摄像机坐标的转换。Projection是投影矩阵,用于完成摄像机坐标系到屏幕坐标系的转换。根据面向对象的思想及程序重用性和可维护性的需要可以将有关摄像机的操作封装到一个摄像机类中,同时提供第一人称、第三人称摄像机。1、 View的创建 public st
2008-10-04 17:47:00
1458
原创 XNA中的显示
XNA中的显示可分为2D图片的显示和模型的显示。1、2D图片的显示 XNA中2D图片是通过精灵(SpriteBatch)来显示的的。 (1)、在类中声明精灵对象 SpriteBatch spriteBatch;
2008-10-04 17:45:00
1018
原创 完成端口
完成端口一、什么是完成端口从本质上讲,完成端口是一种异步I/O技术,它提供一个内核对象,可以关联多个I/O设备,同时关联一个线程池,线程池中的线程通常处于睡眠状态,当有I/O出现时,完成端口唤醒等待线程队列中的线程进行处理。完成端口有着良好的伸缩性灵活性以及较高的效率,一般用来创建大型的服务器。我们知道,一个服务器应用程序结构可以分为串行模式和并发模式。在串行模式中,一次只能处理
2008-10-04 17:40:00
1481
原创 函数的效率
一、函数、宏、内联函数1、 函数调用函数的开销大致可分两个部分:传递参数的开销和保存当前程序上下文信息所花费的开销。对于传递参数的开销而言,传递的参数越多开销就越大;对于保存当前程序上下文所花费的开销而言,函数越复杂需要花费的开销就越大。2、 宏宏在某种程度上可以代替函数,避免函数调用带来的开销。定义完宏之后,在编译程序时,用替代字符串代替程序中的宏。 对
2008-10-04 17:30:00
1108
原创 基本编程语句的效率特性
基本编程语句的效率特性一、选择语句的效率特性1、 充分考虑if语句中逻辑表达式的执行效率if中的逻辑表达式的运算遵循一下两个原则:1、表达式从左到右求值。2、当确定结果后,将不再进行计算。对于逻辑(&&)与而言,当出现表达式为假时停止运算;对于逻辑或(||)而言,当出现表达式为真时停止以后的运算。例子://不充分逻辑与 char str[] =
2008-10-04 17:30:00
1113
原创 C++内存区域
C++内存区域程序由代码和数据组成,其中代码存储在代码区中,数据根据类型的不同存储在不同的区域中,C++中可分为全局/静态区、常量数据区、栈区和堆区等。1、 全局/静态区及常量数据区该存储区主要用于存储全局变量、静态变量以及字符串常量等。在程序编译阶段已经分配完毕。且字符串常量存储区是不可修改的内存区域。2、 栈区栈区用于存储函数内部的局部变量或者函数参数等。该部
2008-10-04 17:28:00
1309
原创 高效使用C/C++变量
高效使用C/C++变量1、 由于变量类型而引效率问题在加法、减法以及乘法运算中,对整型的操作效率明显高于针对浮点型和双精度类型的操作效率,因此,在循环中运用整型运算代替浮点型和双精度类型,将会提高程序的效率。例子:双精度类型运算:double s = 2.5;for(int i = 0; i {s *= 3;}转化为整型后的运算: i
2008-10-04 17:28:00
1103
原创 C/C++中类的存储方式
C/C++中类的存储方式一、简单对象的存储1、 基本类型对齐原则:Char 1Short 2Int 4Long 4Float 4Double 82、 结构体类型对齐原则:以最大成员类型的对齐方式为准,即当需要增长时,增长最
2008-10-04 17:27:00
3786
原创 写时拷贝技术与共享节
写时拷贝技术与共享节一、写时拷贝技术当为正在运行的应用程序创建新进程时,系统将打开用于表示可执行文件映射文件的文件映射对象的另一个内存映射视图,并创建一个新进程对象和一个新线程对象,同时将新进程ID和新线程ID赋予这些对象,通过内存映射文件,同一个应用程序的多个正在运行的实例(进程)共享RAM中相同的代码和数据,大大的提高了系统的性能。但是这要求所有实例都将该内存是只读或只执行的,否
2008-10-04 17:25:00
1457
原创 堆的使用
一、 堆的概述从内部来讲,堆时保留的地址空间的一个区域,保留区域中大多数页面没有被提交物理存储器,当从堆中分配越来越多的内存时,堆管理器把更多的物理存储器提交给堆。物理存储器总是从系统的页文件中分配的。当进程初始化时,系统在进程地址空间中创建一个堆,该堆称为进程的默认堆,该队地址空间区域的大小未1M,许多系统函数需要使用一些临时内存块,这些内存块时从进程的默认堆中分配的。默认堆
2008-10-04 17:25:00
1174
原创 虚拟内存使用
虚拟内存使用一、 简介Windows提供了3中进行内存管理的方法,包括:虚拟内存:一般用来管理大型数据结构,受到硬盘调页文件的支持内存映射文件:常用来管理大型数据流和多进程共享。内存堆:最适合用来管理大量的小对象。二、 虚拟内存的使用1、我们可以在进程的地址空间中保留一个区域:PVOID VirtualAlloc( P
2008-10-04 17:24:00
848
原创 内存映射文件
内存映射文件一、 内存映射文件简介与虚拟内存一样,内存映射文件也可以用来保留一个地址空间的区域,并将物理存储器提交给该区域,与虚拟内存的差别在于,物理才能出奇来自一个已经位于磁盘上的文件,而不是系统的也文件,一旦该文件被映射,就可以访问它,就如同整个文件已经加载内存一样。内存映射文件可用于3个不同的目的:第一:系统使用内存映射文件加载.exe和dll文件,从而节省了也文件空
2008-10-04 17:24:00
1886
原创 操作系统内存管理
操作系统内存管理一、 进程的虚拟地址空间每个进程都被赋予自己的虚拟地址空间,对于32位进程来说,这个地址空间为4G,因此进程中的地址可以为0X00000000至0XFFFFFFFF之间的任何一个值。其中4G空间中的低区的2G空间留给进程使用,而高区的2G空间则留给系统使用。在Windows2000下,分区情况为:1、 NULL指针分配的分区NULL指针分配的分区占据
2008-10-04 17:23:00
7594
1
原创 虚拟内存状态
一、 获取系统信息我们可以调用系统信息获取函数来获得本系统的页面大小、分配粒度的大小等信息。系统信息获取函数:VOID GetSystemInfo(LPSYSTEM_INFO psinf);参数类型:LPSYSTEM_INFO psinf 用于返回系统信息的数据结构所包含信息:dwPageSize:CPU页面的大小lpMinimumApplicationAd
2008-10-04 17:21:00
1377
原创 XNA中如何更新模型信息
一、 更新更新是整个XNA游戏开发的重点,它代表了整个游戏的运行逻辑,从技术上讲可分为输入设备的获取和模型的变换两个方面。1、 获取输入设备的输入信息XNA目前主要支持三种输入设备:Xbox 360控制器、鼠标、键盘。我们暂时主要用到鼠标和键盘。(1)、鼠标状态的获取XNA鼠标包含左键、右键、中键的信息(ButtonState.Pressed、ButtonStat
2008-09-26 20:03:00
2253
原创 XNA中如何导入资源
导入资源XNA中可以加载2D图片、3D模型、字体等资源。 1、2D图片的加载 (1)、声明保存2D图片的对象: Texture2D catTexture; (2)、从解决方案中通过添加现有项的方法将需要加载的图片信息导入XNA中。 (3)
2008-09-26 19:56:00
1264
原创 XNA概述
XNA概述一、XNA开发环境1、Visual Studio Express 20052、Microsoft Direct X SDK 20053、VS80sp14、XNA Game Studio 2.0二、XNA概述XNA是集成到Visual C# Express里面的一套组件和模版,它所包含的XNA Framework提供了一套功能丰富的游戏开发相关程序框架,包含了一
2008-07-21 10:08:00
1296
原创 重叠I/O模型
一、 异步IO 说到重叠模型首先还是提一下异步IO比较好,因为从本质上讲,重叠模型也是一种异步IO模型。 我们知道,相对于计算机执行的其他操作而言,设备IO(文件、管道、套接字等)是比较慢的。于是在多线程结构中就考虑到采用异步的方式进行设备读写操作,即我们告诉系统对设备的读写数据,而同时应用程序的其他代码继续执行,直到获取设备操作完毕的系统通知。 在进行异步I
2008-02-04 12:30:00
852
原创 线程与内核对象的同步
一、简介 互锁函数家族只能在单值上运行,根本无法使线程进入等待状态;关键代码段只适用于对单个进程中的线程实施同步;我们可以使用内核对象来实现线程同步。二、等待函数 使用等待函数可以使线程进入等待状态,直到一个特定的内核对象变为已通知状。(1)、等待单个事件 DWORD WaitForSingleObject( HANDLE
2008-02-04 12:23:00
1119
原创 用户方式中线程同步
一、线程同步 在多线程的环境中,如果没有同步机制来保证后果是不堪设想的,线程同步主要表现在两个方面,在操作系统课程中都讲过,分别是: 1、进程间互斥:使得多个线程能够共享资源而破坏资源。例如,同时有两个线程对同一个文件进行写操作,我们必须保证,在一个时间只有一个线程能够对该文件进行写操作。 2、进程间同步:进程的运行有先后关系,例如,一个线程放苹果,一个线程吃苹果,
2008-02-04 12:20:00
1155
原创 Windows多线程编程
一、 线程的概念 进程是操作系统分配资源的单位,而线程是操作系统调度的单位,进程是静态的,而线程是活动的。与进程一样,线程由两部分构成。 1、线程的内核对象(TCB),一个数据结构,操作系统通过它对线程实施管理,同时也是系统用来存放线程统计信息的地方。 2、线程堆栈,用于维护线程爱执行代码时需要的所有函数的参数和局部变量。二、 与线程相关的API1、 创建线
2008-02-04 12:15:00
2959
原创 Windows多进程编程
一、进程的概念 进程是是一个正在运行的程序的实例(飘~~~),是系统分配资源的单位(线程是执行的单位),包括内存,打开的文件、处理机、外设等,进程由两部分组成: 1、进程的内核对象:即我们通常所讲的PCB(进程控制块),该结构只能由该内核访问,他是操作系统用来管理进程的一个数据结构,操作系统通过该数据结构来感知和管理进程;它的成员负责维护进程的各种信息,包括进程的状态(创建、
2008-02-04 12:10:00
25547
3
原创 PE文件格式分析之一
PE文件格式,是Win32环境自带的执行体文件格式。个人理解主要是指.exe文件和.dll文件,不知道是否正确,若不对还望大侠们指正,不多说了,风飘雪大哥在加密解密中说的很详细,先写一个vc编写的基于控制台的PE文件格式分析程序,通过内存映射实现。^_^ ^_^ ^_^先创建一个PE格式分析类:头文件:PeLook.h#pragma once#include #incl
2007-07-08 20:33:00
1432
原创 sniff嗅探器设计与实现
呵呵,很老得技术了, 不过自己这两天写了一个,大伙见笑了。Sniff的实现主要分为三步:1、将网卡设置为混杂模式2、捕获IP数据包3、分析IP数据包以下是实现/////////////////////////////////////////////////////////////////////////////////// MySniff.h//////
2007-06-05 20:07:00
2107
原创 OpenSG节点核心
OpenSG节点核心一、变换核心1、变换核心 图形的变换是通过变换核心实现的,先定义一个节点,将该节点的核心设为变换核心,在变换核心中放置变换矩阵,并将需要变换的图形作为该变换节点的子节点,此时变换节点的所有字节点均根据变换节点的核心中变换矩阵完成图形变换。具体步骤如下:1、定义变换矩阵:Matrix m;2、对变换矩阵进行变换,使之满足变换要求。3、定义变换核
2007-04-12 20:22:00
1284
原创 openSG程序简单框架
openSG程序简单框架1、包含所需的基本的头文件#include //OpenSG的基本配置#include //OpenSG窗体#include #include #include //OpenSG屏幕管理2、引入OpenSG命名空间OPG_USING_NAMESP
2007-04-12 20:20:00
1931
转载 glut库下的主要函数
glut库下的主要函数一 、初始化1、void glutInit(int* argc,char** argv)这个函数用来初始化GLUT库。对应main函数的形式应是:int main(int argc,char* argv[]);这个函数从main函数获取其两个参数。2、void glutInitWindowSize(int width,int height);
2007-04-12 20:18:00
1930
原创 OpenSG基础
一、OpenSG中的基本数学类型1、基本数据类型(Datatypes)为了开发跨平台的程序,OpenSG定义自己的基本数据类型1、整型[U]intN: N = {8,16,32,64} U : unsigned 无符号整型2、浮点型 RealN N= {32,64,128}二、OpenGL中的结构类型1、向量(数组)1、向量
2007-04-07 20:36:00
2676
原创 vs.net2003下配置openSG
1、配置环境变量工具——〉选项——〉项目包含文件中添加OpenSG的include文件夹的路径:C:/Program Files/OpenSG/include库文件中添加OpenSG的lib文件夹的路径:C:/Program Files/OpenSG/lib2、添加预处理文件项目属性页——〉C/C++——〉预处理器——〉预处理器定义:WIN32_WINDOWS
2007-04-07 19:15:00
1097
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人