- 博客(226)
- 资源 (22)
- 收藏
- 关注
转载 c++ virtual总结
<br />c++是一门面向对象的语言,但是它和c#,java不同,它没有反射机制。没有反射机制使得c++在语言的一些设计方面与其他语言有点不一样,主要体现在智能化方面,许多东西得程序员明确指定,例如本文要讲的virtual关键字。virtual是在运行时才体现的,而c++在运行时无法使用反射来确定当前类的父类是否有此方法,此方法是否被重载等信息,所以必须在写代码时用virtual来明确指明,然后通过编译器做一些特殊处理(也就是使用虚表)。 <br />我们见到virtual最多的地方是在c++里面的多态实
2011-03-31 21:09:00 1248
转载 C++ 虚拟继承
<br />C++中虚拟继承的概念<br />为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。<br />class 派生类名:virtual 继承方式 基类名<br />virtual是关键字,声明该基类为派生类的虚基类。<br />在多继承情况下,虚基类关键字的作用范围和继承方式关键字相同,只
2011-03-31 21:05:00 1595
转载 c++注意点
<br />一 编程设计<br /> 1.将程序划分为多个子系统,包括子系统间的接口和依赖关系、子系统间的数据流、在各子系统间的来回输入输出、以及总的线程模型。<br /> 2.各个子系统的具体细节,包括进一步细分的类、类层次体系、数据结构、算法、特定的线程模型和错误处理。<br />二 设计流程<br /> 1.需求:功能需求和性能需求。<br /> 2.设计步骤<br /> (1)把程序划分为通用功能子系统,并明确子系统的接口和交互。<br />
2011-03-31 20:30:00 1257
转载 C++ 明智地使用多继承
<br />要看是谁来说,多继承(MI)要么被认为是神来之笔,要么被当成是魔鬼的造物。支持者宣扬说,它是对真实世界问题进行自然模型化所必需的;而批评者争论说,它太慢,难以实现,功能却不比单继承强大。更让人为难的是,面向对象编程语言领域在这个问题上至今仍存在分歧:C++,Eiffel和the Common LISP Object System (CLOS)提供了MI;Smalltalk,Objective C和Object Pascal没有提供;而Java只是提供有限的支持。可怜的程序员该相信谁呢?<br /
2011-03-31 20:13:00 1483
转载 C++箴言:谨慎使用多继承
<br /> 触及 multiple inheritance (MI)(多继承)的时候,C++ 社区就会鲜明地分裂为两个基本的阵营。一个阵营认为如果 single inheritance (SI)(单继承)是有好处的,multiple inheritance(多继承)一定更有好处。另一个阵营认为 single inheritance(单继承)有好处,但是多继承引起的麻烦使它得不偿失。在本文中,我们的主要目的是理解在 MI 问题上的这两种看法。 <br /><br /> 首要的事情之一是要承认当将 MI
2011-03-31 20:11:00 1505
转载 C++多继承
<br /> 多继承可以看作是单继承的扩展。所谓多继承是指派生类具有多个基类,派生类与每个基类之间的关系仍可看作是一个单继承。<br /><br /> 多继承下派生类的定义格式如下:<br /><br /> class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…<br /> {<br /> <派生类类体><br /> };<br /><br /> 其中,<继承方式1>,<继承方式2>,…是三种继承方式:public、private、protected之一。
2011-03-31 20:08:00 1261
转载 C++多继承的细节
<br />这几天写的程序应用到多继承。<br />以前对多继承的概念非常清晰,可是很久没用就有点模糊了。重新研究一下,“刷新”下记忆。 <br />假设我们有下面的代码: <br />#include <stdio.h> <br />class A <br />{ <br />private: <br /> char data; <br />public: <br /> A(){data = 'A';} <br /> virtual void Show(){printf("A/n");}; <
2011-03-31 20:06:00 1361
转载 C++类的大小——sizeof()
<br />先看这么个问题——已知:class CBase<br />{<br />int a;<br />char *p;<br />};<br />那么运行cout<<"sizeof(CBase)="<<sizeof(CBase)<<endl;之后输出什么?<br />这个应该很简单,两个成员变量所占的大小有嘛——8。可由时候人就是爱犯这个错误:这么简单的问题人家会问你?再想想……好像C++类里面有个什么 函数指针,也应该占字节吧!?什么指针来着?忘了(还是水平低不扎实)!流汗中……算了姑且认为是构造
2011-03-31 20:01:00 3595 3
转载 C++类的实例化后占内存的大小计算
闫一伟 2010-04-06 <br /> 在初学面向对象的程序设计语言时,很多人或多或少的都有些疑问,为什么写出来的代码与最终生编译成的代码大相径庭呢?我们并不知道编译器在后台做了什么工作,这些都是由于我们仅停留在语言层的原因,所谓语言层就是会一些基本的语法法则,但并不知道要为什么这么做。下面就介绍下编译器这方面的一个具体功能。<br /> 首先:要知道什么是类的实例化,所谓类的实例化就是在内存中分配一块地址。 <br /> <br /> 例一: <br />#include<io
2011-03-31 20:00:00 2027
转载 通用性与性能间的妥协-Direct3D 10
<br /> 在过去的10年中,OpenGL与Direct3D的渲染管道模型都已经取得了重大的进展,自2002年的DirectX 9.0到DirectX 9.0c便是管道模型从固定管道到可编程管道的过渡。这之间每一步的变化都反映出设计者通用性、性能和成本上所做出的妥协。<br /><br /> Intel的G965图形芯片便是这种妥协的最好诠释之一,其先进的内部硬件设计中有许多可编程的渲染元件,但在那之外还不得不保留了许多专用的处理单元。<br /> GPU与CPU在计算范畴的最大区别在于有绪计算以及
2011-03-30 21:42:00 1805
转载 shader model
Shader Model(在3D图形领域常被简称SM)就是“优化渲染引擎模式”。事实上,Shader(渲染或称着色)是一段能够针对3D对象进行操作、并被GPU所执行的程序。通过这些程序,程序员就能够获得绝大部分想要的3D图形效果。在一个3D场景中,一般包含多个Shader。这些Shader中有的负责对3D对象表面进行处理,有的负责对3D对象的纹理进行处理。早在微软发布DirectX 8时,Shad
2011-03-30 21:40:00 2724
转载 Shader Model4.0统一渲染架构
微软的DirectX 9.0c距今离它的诞生已经有2年的光景,DX9.0c给我们带来了全新的Shader Model3.0技术,也使得3D画面较以往了有了质的突破,DirectX 9.0c是截至至今微软历史上寿命最长的一代API,而图形技术的发展是不会停下脚步的,2006年微软发布了全新的DirectX 10.0,仅从版本上看比9.0c相差一级,但是DirectX 10.0带给我们的又将是一个全新
2011-03-30 21:36:00 4291
转载 Direct3D 10 Shader Model 4.0
作者:David Blythe本文版权归原作者所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,不清楚的地方请大家以原著为准。欢迎大家和我多多交流。翻译:claymanBlog:http://blog.csdn.net/soilworkemail:clayman_joe@yahoo.com.cn 4.Shader Model 4.0
2011-03-30 21:35:00 2417
转载 图形领域GPU标准之战逐鹿并行计算
<br /> <br />没有哪一个领域能像图形工业一样充满了机遇与挑战,过去nVIDIA与ATI激烈的竞争成为产业发展的动力,在AMD接手ATI后nVIDIA更换了对手,但竞争的实质并没有改变。通过市场竞争带动产业发展已经成为过去式,图形工业回到了正确的轨道上,即以应用需求来主导硬件的发展—今天,DirectX 10游戏带来更逼真的画面细节,游戏工业希望有朝一日能实现电影级渲染,这意味着GPU必须具有更强大的能力。而在GPU发展的过程中,硬件工业发现GPU不仅仅可以用来渲染3D场景,更可以利用超强的浮点计
2011-03-30 21:27:00 1989 1
转载 Ogre的GPUProgram的参数管理
<br />首先分享一个我做的图,没有严格按照UML规范,主要是要表达这样的一个意思而已。 <br /><br />[原图:http://ishare.iask.sina.com.cn/f/7863351.html ]<br /> 首先需要明确一些这样的信息:<br /> 1.每个高级Shader语言都可以编译成汇编代码的形式。在cg中我们使用cgGetProgramString,DX有API可以用:D3DXAssembleShader。<br /> 2. 每个Shader的
2011-03-30 21:18:00 1842
转载 帧速
<br />简介定义<br /> 动态画面每秒钟展现的帧数,用于衡量视频信号传输的速度,单位为帧/秒(fps)。 主要领域<br /> 涉及帧速的领域主要包括电影、电视、计算机图形学。 详细解释电影中<br /> 电影中的帧速一般被描述为“XX格每秒” ,电影发明初期使用16格画面每秒标准,目前绝大多数国家的电影标准为24格每秒,少数国家为25格每秒。 PAL制式电视<br /> PAL制式电视的帧速为25帧每秒,但是每个独立的帧要分两步扫描展现,分别为奇数行和偶数行扫描,因此其场频为50Hz。对于
2011-03-30 21:10:00 1633
转载 显卡结构与工作原理解读
什么是显卡?<br /> 显卡的工作非常复杂,但其原理和部件很容易理解。在本文中,我们先来了解显卡的基本部件和它们的作用。此外,我们还将考察那些共同发挥作用以使显卡能够快速、高效工作的因素。<br /><br /> 显示卡(videocard)是系统必备的装置,它负责将 CPU 送来的影像资料(data)处理成显示器(monitor) 可以了解的格式,再送到显示屏 (screen) 上形成影像。它是我们从电脑获取资讯最重要的管道。因此显示卡及显示器是电脑最重要的部份之一。我们在监视器上看到的图像是由很多
2011-03-30 21:01:00 2898
转载 认识显存的五“兄弟”
<br />转载请注明出处 电脑报(http://www.icpcw.com) <br />2009年第49期D版 责任编辑: 王宇<br />四川 均儿<br /><br /><br /> 自从AMD的HD5000系列显卡和NVIDIA的GT240显卡开始在市场上大面积铺货以来,关于GDDR5显存的话题就不断。仿佛显存不同,显卡的性能就大相径庭,显存真的有这么大的能量?面对各类显存,很多同学都感到一头雾水,今天的课堂上我们就来认识一下显存的五“兄弟”。<br /><br />显存在
2011-03-30 20:53:00 2011
转载 对D3D中AGP显存、内存、显存三种内存的解释
<br />三种内存AGP内存(非本地显存),显存(本地内存),系统内存,其中我们都知道系统内存就是咱那内存条,那这AGP内存是个啥玩意啊?其实是因为在以前显卡内存都很小,那时还是在显存是16M,32M为主流的时候,如果你运行一个需要很多纹理的3D程序,那么显存一会就不够用了,那该咋办呢?只好问系统内存借点用用了!这就是AGP内存的由来,在我们电脑BIOS中有个设置AGP Aperture的选项,这里就是设置显卡可以使用系统内存的最大允许值,通常是设置为64M。注意,这里只是说最大允许值,并不是一开机他就把
2011-03-30 20:46:00 2639 1
转载 D3DPOOL(资源池)
<br />D3DPOOL定义了资源对应的内存类型,资源可以是texture surface, vertex buffer等,有以下几种POOL类型 <br />D3DPOOL_DEFAULT <br />D3DPOOL_MANAGED <br />D3DPOOL_SYSTEMMEM <br />D3DPOOL_SCRATCH <br />D3DPOOL_FORCE_DWORD D3DPOOL_DEFAULT <br />资源被存储在最适合给定资源访问的内存中,这通常是显存,包括本地显内存和AGP内存,D3
2011-03-30 20:40:00 2480
转载 D3DPOOL和D3D资源
<br />D3D资源管理<br />资源分类 <br /> 顶点缓冲(VertexBuffer)<br /> 索引缓冲(IndexBuffer)<br /> 纹理(Texture)<br />资源存储 <br /> 显存(Video Memory)<br /> 通过AGP直接访问的内存(AGP Aperture,也叫做非本地显存)<br /> 系统内存(System Memory)<br />性能权衡 <br />
2011-03-30 20:39:00 2023
转载 使用 C++ 编写内核模式驱动程序的优点与缺点
<br />C++ 及其对象特性似乎与 Microsoft Windows Driver Model (WDM) 和 Windows Driver Foundation (WDF) 驱动程序的语义非常吻合。但是,对于内核模式驱动程序,C++ 语言的一些特性可能导致难以发现和解决的问题。为了帮助您进行合理选择,本文将与您分享来自 Microsoft 关于使用 C++ 为 Windows 家族操作系统编写内核模式驱动程序的调查的见解和建议。<br />此信息适用于以下操作系统:<br />Microsoft W
2011-03-30 11:15:00 5128
转载 罕见内核驱动C++编程实例 new/delete方法
<br /> 很少有专题讲内核中的C++编程,中文资料恐怕更是罕见。由于C++的普及性、与C的亲密关系,以及大部分情况下程序员都使用C++编译器编译C程序的事实,当初学者听说内核中“不容易”(笔者也听说过“无法”二字)用C++进行编程时,会大吃一惊。不管是说者无意,还是听者有心,Windows内核的现状,决定了C语言是内核编程的首选。<br /> 其实内核驱动中也能使用C++,也能使用类,但和用户程序中的用法有一些区别,一些特殊的地方需要特别注意。从笔者的经验来看,WDK给出的AVStream小端口驱动
2011-03-30 10:34:00 3604
转载 二叉树
二叉树是一棵节点都不能有多于两个儿子的树。这一章,主要学习二叉树的种类和应用。一.实现typedef struct TreeNode *PrtToNode;typedef struct PrtToNode Tree;struct TreeNode{ ElementType Element; SearchTree Left; SearchTree Right;};二.特点每个结点最多有两棵子树二叉树是有次序的,其次序不能随意颠倒 二叉树三.
2011-03-30 10:14:00 1814
转载 二叉树的存储结构
<br /> 二叉树是非线性结构,即每个数据结点至多只有一个前驱,但可以有多个后继。它可采用顺序存储结构和链式存储结构。 <br />1.顺序存储结构 <br /> 二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法从树根起,自上层至下层,每层自左至右地给所有结点编号,缺点是有可能对存储空间造成极大的浪费,在最坏的情况下,一个深度为k且只有k个结点的右单支树需要2k-1
2011-03-30 10:10:00 2507
转载 读《C++语言的设计和演化》有感
C++ Primer送人了,但是身边没有一本纸质的C++权威手册有时还是不方便,于是购买了C++之父的三本书——《C++程序设计语言》,《C++程序设计原理与实践》和《C++语言的设计和演化》。<br /><br />第三本书是我比较喜欢的历史八卦+技术的,于是先读了。<br /><br />这本书里Stroustrup倒是澄清了几个问题,似乎能解决长期以来大家的一些争论<br /><br />1.C++之父对于C语言的贡献、<br /> 许多人将C++中的“不优雅”归结于对C的兼容,C++大牛们的几本书
2011-03-30 08:58:00 2013
转载 C++——STL所有算法介绍
<br /> STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成。要使用 STL中的算法函数必须包含头文件<algorithm>,对于数值算法须包含<numeric>,<functional>中则定义了一些模板类,用来声明函数对象。<br /> STL中算法大致分为四类:<br /> 1、非可变序列算法:指不直接修改其所操作的容器内容的算法。<br /> 2、可变序列算法:指可以修改它们所操作的容器内容的算法。<br />
2011-03-29 18:41:00 1942
转载 深入理解C++中的mutable关键字
<br />mutalbe的中文意思是“可变的,易变的”,跟constant(即C++中的const)是反义词。<br /> <br /> 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。<br /> <br /> 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mu
2011-03-29 18:26:00 1057
转载 C++类模板
1.template class QueueItem;类模板的定义和声明都以关键字template 开头。关键字后面是一个用逗号分隔的模板参数表,用尖括号 括起来这个表被称为类模板的模板参数表(template parameter list)。它不能为空,模板参数可以是一个类型参数,也可以是一个非类型参数。如果是非类型参数,则代表一个常量表达式。2.在模板参数表中,关键字class 和typename 的意义相同。在标准C++之前关键字typename 没有被支持。因为有时必须要靠它来指导编译器解释模板定义
2011-03-29 18:20:00 1906
转载 使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast
3.1 static_cast<br />用法:static_cast < type-id > ( expression ) <br />该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:<br />①用于类层次结构中基类和子类之间指针或引用的转换。<br /> 进行上行转换(把子类的指针或引用转换成基类表示)是安全的;<br /> 进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。<br
2011-03-29 18:10:00 1101
转载 汉诺塔问题
TAG:程序设计思想及范例,递归问题TEXT:汉诺(Hanoi)塔问题:古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图)。有一个和尚想把这64个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求打印移动的步骤。汉诺塔问题 <br />这个问题在盘子比较多的情况下,很难直接写出移动步骤。我们可以先分析盘子比较少的情况。假定盘子从大向小依次为:盘子1,盘子2,...,盘子6
2011-03-29 18:06:00 1575
转载 深入static_cast运算符
<br />本文下载地址:<br />http://bbs.sjtu.edu.cn/file/Apple/1200681928238350.pdf<br /><br />许可:<br />http://creativecommons.org/licenses/by-nc-nd/2.5/cn<br /><br />作者:Robert Schmidt<br />Microsoft Corporation<br />2000年5月18日<br /><br />译者:高博<br />http://www.gaobo
2011-03-29 18:01:00 5479
转载 类对象与memset函数
memset某个结构或其它的数据类型在C语言中是非常常见,其目的是对结构或数据类型进行初始化,通常都是将变量置为0。在C++中,针对类对象除了用构造函数初始化对象外,也可以使用memset来进行初始化操作。当然这种情况极其少见,即使如此还是非常有必要谈一下这个问题。<br />下面是一个例子:<br />C++语言: Codee#1288501include<iostream><br />02<br />03classBase<br />04{<br />05 int_n;<br />06publi
2011-03-28 19:01:00 3172
转载 关于cpp构造函数当中使用memset初始化的陷阱
<br />memset在c中是用的非常频繁的初始化函数了,当然也被带到了cpp当中,因为当有如下类涉及到非常多的成员变量,很多coder经常偷懒改用memset在构造函数当中初始化<br />struct Test<br />{<br />int _1;<br />int _2;<br />long _3;<br />...<br />Test(){memset(this,0,sizeof(Test));}<br />};<br />以上如果所有成员变量是简单的内置类型是没有问题,但是可能某次需求迫使你需
2011-03-28 19:01:00 1330 1
转载 memest常见的三种错误
<br />memest原型 view sourceprint?1void*memset(void*s, intc, size_tn);<br />memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。 <br />常见的三种错误 <br />第一: 搞反了c 和 n的位置. <br />一定要记住 如果要把一个char a[20]清零, 一定是 memset(a, 0, 20) <br />而不是 memset(a, 20, 0) <br />第二
2011-03-28 18:59:00 1769
转载 c++模板的优点和缺点
<br />作为C++语言的新组成部分,模板引入了基于通用编程的概念。通用编程是一种无须考虑特定对象的描述和发展算法的方法,因此它与具体数据结构无关。但在决定使用C++模板之前,让我们分析一下使用模板的优缺点。<br /><br />目的:<br />当被问及引入C++模板的目的时,C++的发明者Bjarne Stroustrup告诉我“这是为了支持类型安全、类容器的有效性和算法的通用性”。<br />优势和劣势:<br />使用模板有很多原因,最主要的为了得到通用编程的优点。国际标准化组织(ISO)为C+
2011-03-28 18:55:00 4691
转载 使用C++模板的优点和缺点
<br />作为C++语言的新组成部分,模板引入了基于通用编程的概念。通用编程是一种无须考虑特定对象的描述和发展算法的方法,因此它与具体数据结构无关。但在决定使用C++模板之前,让我们分析一下使用模板的优缺点。<br />目的: 当被问及引入C++模板的目的时,C++的发明者Bjarne Stroustrup告诉我“这是为了支持类型安全、类容器的有效性和算法的通用性”。<br />优势和劣势: 使用模板有很多原因,最主要的为了得到通用编程的优点。国际标准化组织(ISO)为C++建立了C++标准库,该标准库功
2011-03-28 18:54:00 2588
转载 C++模板的缺点以及如何避免
<br /> templates(模板)是节省时间和避免代码重复的极好方法,我们可以只输入一个类模板,就能让编译器实例化所需要的很多个特定类及函数。类模板的成员函数只有被使用时才会被实例化,所以只有在每一个函数都在实际中被使用时,我们才会得到这些函数。 确实这是一个很重要的技术,但是如果不小心,使用模板可能会导致代码膨胀。什么是代码膨胀?请看下面的例子: <br /><br /><br />template class A { public:
2011-03-28 18:53:00 4844
转载 Linux用户模式和内核模式
<br />MS-DOS等操作系统在单一的CPU模式下运行,但是一些类Unix的操作系统则使用了双模式,可以有效地实现时间共享。在Linux机器上,CPU要么处于受信任的内核模式,要么处于受限制的用户模式。除了内核本身处于内核模式以外,所有的用户进程都运行在用户模式之中。<br />内核模式的代码可以无限制地访问所有处理器指令集以及全部内存和I/O空间。如果用户模式的进程要享有此特权,它必须通过系统调用向设备驱动程序或其他内核模式的代码发出请求。另外,用户模式的代码允许发生缺页,而内核模式的代码则不允许。<
2011-03-28 18:38:00 5856 3
转载 网络游戏制作技术
<br /> 当今网络游戏在中国大陆已经在大范围的蔓延,暂且不论这样的一种趋势会带来什么样的游戏产业趋势。这里只就网络游戏的制作和大家进行交流,同时将自己的制作经验写处理,希望为中国的游戏业的发展做出一点点的贡献。。 <br />网络游戏的程序开发从某种意义上来看,最重要的应该在于游戏服务器端的设计和制作。对于服务器端的制作。将分为以下几个模块进行:<br />1.网络通信模块<br />2.协议模块<br />3.线程池模块<br />4.内存管理模块<br />5.游戏规则处理模块<br />6.后台游
2011-03-28 18:33:00 2009 1
Real-Time Adaptive Scalable TextureCompression for the Web.pdf
2020-12-25
IMPROVED ENCODING FOR COMPRESSED TEXTURES.pdf
2020-12-25
Developer_Track_5_ASTC-The_Future_of_Texture_Compression.pdf
2019-10-28
PowerVR.Supported+Extensions.OpenGL+ES.EGL.pdf
2018-08-16
OpenGL Direct3D 撰写的各种3D图形算法演示
2010-02-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人