摘要:
很多学软件的朋友需要做C语言链表应用的课程设计,下面是我写的代码,希望对需要的人有些帮助。。。希望和大家交流一下,更希望高手指点。。已经经过(turboC 2.0编译通过)。#include <stdio.h>#include <stdlib.h>#define LEN sizeof(struct student)#define NULL 0struct student { int number; int score; struct student*next;};struct student*create() { struct s... 阅读全文
posted @ 2011-11-07 22:14
☆A希亿
阅读(1562)
评论(0)
推荐(0)
摘要:
#include#includemain(){ int *p,count; scanf("%d",&count); p=(int*)malloc(count*sizeof(int)); for(int i=0;i p[i]=i; for(int j=0;j printf("%d",p[j]);} 阅读全文
posted @ 2011-11-07 22:13
☆A希亿
阅读(256)
评论(0)
推荐(0)
摘要:
通过动态内存分配实现c语言动态指针"数组".其实这种结构并非是一种数组,只是手动实现的一种类似数组的结构,实现类似数组的功能。应该可以说是一种伪数组结构吧。#include <stdio.h>#include <stdlib.h>main(){ char**p; int count,j,i; p=0; scanf("%d",&count); p=(char**)calloc(count,sizeof(char*)); for(j=0;j<count;j++) p[j]=(char*)malloc(10*sizeof( 阅读全文
posted @ 2011-11-07 22:12
☆A希亿
阅读(676)
评论(0)
推荐(0)
摘要:
#include <stdio.h>#include <stdlib.h>#define SHI sizeof(struct duoxiangshi)#define NULL 0struct duoxiangshi{int xishu,zhishu; struct duoxiangshi*next;};struct duoxiangshi*create() {struct duoxiangshi*head,*p1,*p2; int n; n=0; head=NULL; p2=NULL; p1=NULL; p1=(struct duoxiangshi*)mal... 阅读全文
posted @ 2011-11-07 22:11
☆A希亿
阅读(3212)
评论(0)
推荐(0)
摘要:
接口文件poly.h#ifndef POLY_H#define POLY_H#include <iostream>#include <cstdlib>#include <cstddef>using namespace std;typedef int* intptr;class poly{public: poly(); poly(int a); poly(const poly& p); ~poly(); void creat(); friend poly operator +(const poly& p1,const poly& p2) 阅读全文
posted @ 2011-11-07 22:10
☆A希亿
阅读(1489)
评论(0)
推荐(0)
摘要:
一个用D3D绘制2D图形的例子思路如下:(1)函数Do_Init初始化D3D,D3D设备,顶点缓冲,纹理;主要调用这几个函数: Direct3DCreate9,GetAdapterDisplayMode,CreateDevice,CreateVertexBuffer, Lock,Unlock,D3DXCreateTextureFromFile。(2)函数Do_Frame绘制一帧,主要调用这几个函数: Clear,BeginScene,EndScene,SetStreamSource,SetFVF,SetTexture, DrawPrimitive。(3)函数Do_Shutdown释放D3D资源 阅读全文
posted @ 2011-11-07 22:05
☆A希亿
阅读(1268)
评论(0)
推荐(0)
摘要:
学习D3D9的时候遇到灵活顶点格式(FVF)中D3DFVF_XYZRHW和D3DFVF_XYZ之间差异而引起的问题。参看了同是C++博客的一篇博文,其分析如下: The RHW value, which stands for Reciprocal of Homogeneous W[1], tells Direct3D that the vertices that are being used are already in screen coordinates. This value is normally used in fog and clipping calculations and sh 阅读全文
posted @ 2011-11-07 22:05
☆A希亿
阅读(650)
评论(0)
推荐(0)
摘要:
微软D3D设备能创建和操纵下面初基类型:l点列表l线列表l线带l三角形列表l三角形带l三角形扇区你能用IDirect3DDevice9接口中的任何粉刷方法在C++程序中粉刷原基。1.1.1.1.点列表一个点列表是一个顶点的集合,这些顶点被作为单独的点来粉刷。你的程序可以在3-D场景中用它们作为在多边形表面上开始字段、点线。下图描述了一个粉刷后的点列表。你的程序能在一个点列表上应用素材和纹理,素材或纹理的颜色仅仅出现在点上,而不是在点之间的任何地方。下面的代码显示怎么样为顶点创建点列表:struct CUSTOMVERTEX{float x,y,z;};CUSTOMVERTEX Vertices 阅读全文
posted @ 2011-11-07 22:04
☆A希亿
阅读(395)
评论(0)
推荐(0)
摘要:
前言:本教程面向对DriectX 9.0有一定了解的读者,主要讲解DirectX 9.0的各个部分的功能及用法。希望对广大的游戏初学者有一定帮助,也好让本人对中国游戏事业的发展做出一些微不足道的贡献。作者:Fabric(由于本人是广东人,写文章难免参杂粤语写法,请见谅) 简介:ID3DXSprite是DriectX 9.0里面的一个简单模块,在DriectX 9.0帮助文档里面对其功能的描术为:“向用户提供一套简单的在屏幕上实现精灵渲染的接口。”何为精灵渲染,说白了就是渲染2D画面,ID3DXSprite帮助用户透过简单的操作就能运用DriectX 9.0制作2D游戏(渲染2D图形),ID3. 阅读全文
posted @ 2011-11-07 22:02
☆A希亿
阅读(904)
评论(0)
推荐(0)
摘要:
alpha混合原理在前面介绍的示例程序中,绘制图形的颜色总是替换当前颜色缓冲区中存在的颜色,这样后面的物体总是覆盖在原有的物体上。但是当想要绘制类似于玻璃、水等具有透明效果的物体时,这种方法显然满足不了要求。通过定义一个表示物体半透明度的alpha值和一个半透明计算公式,可以将要绘制的物体颜色与颜色缓冲区中存在的颜色相混合,从而绘制出具有半透明效果的物体。Direct3D计算alpha颜色混合的方法如下:color = (RGBsrc* Ksrc) OP (RGBdst* Kdst)其中color表示alpha混合后的颜色值,RGBsrc表示源颜色值,即将要绘制的图元的颜色值;Ksrc表示源混 阅读全文
posted @ 2011-11-07 22:01
☆A希亿
阅读(5252)
评论(0)
推荐(0)
摘要:
还是先发DX的文档的记录:IDirect3DDevice9::SetTextureStageStateSets the state value for the currently assigned texture.HRESULT SetTextureStageState( DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value );ParametersStage[in] Stage identifier of the texture for which the state value is set. Stage identifiers a 阅读全文
posted @ 2011-11-07 22:01
☆A希亿
阅读(504)
评论(0)
推荐(0)
摘要:
如何组织编写模板程序前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自己编写模板类。可是在我需要自己编写模板类时,我首先遇到的事实却是“传统”编程方法(在*.h文件声明,在*.cpp文件中定义)不能用于模板。于是我花费一些时间来了解问题所在及其解决方法。本文对象是那些熟悉模板但还没有很多编写模板经验的程序员。本文只涉及模板类,未涉及模板函数。 阅读全文
posted @ 2011-11-07 21:59
☆A希亿
阅读(938)
评论(0)
推荐(0)
摘要:
【问题描述】马的遍历问题。在8×8方格的棋盘上,从任意指定方格出发,为马寻找一条走遍棋盘每一格并且只经过一次的一条路径。【初步设计】首先这是一个搜索问题,运用深度优先搜索进行求解。算法如下:1、输入初始位置坐标x,y;2、步骤 c: 如果c>64输出一个解,返回上一步骤c--(x,y) ← c计算(x,y)的八个方位的子结点,选出那此可行的子结点循环遍历所有可行子结点,步骤c++重复2显然(2)是一个递归调用的过程,大致如下:void dfs(int x,int y,int count){ int i,tx,ty;if(count>N*N) { output_so... 阅读全文
posted @ 2011-11-07 21:58
☆A希亿
阅读(2966)
评论(0)
推荐(0)
摘要:
#include <iostream.h>int board [8][8]={0};int Htry1[8]={-2,-1,1,2,2,1,-1,-2};int Htry2[8]={1,2,2,1,-1,-2,-2,-1};bool chech[8][8]={0};//标记位置是否已经被占用int n=1;//就算已走的步数void findway(int i,int j){for(int z=0;z<8;z++){if(i+Htry1[z]>=0&&i+Htry1[z]<8&&j+Htry2[z]>=0&&j 阅读全文
posted @ 2011-11-07 21:56
☆A希亿
阅读(761)
评论(0)
推荐(0)
摘要:
#include <iostream.h>struct point{int x,y;//马的位置int dir;//这一次马行走的方向};struct stack{point p[64];//存储马的位置,方便回溯};int board [8][8];int Htry1[8]={-2,-1,1,2,2,1,-1,-2};int Htry2[8]={1,2,2,1,-1,-2,-2,-1};bool chech[8][8]={0};//标记位置是否已经被占用int main(){int i,j;int top=0;int z; cout<<"请输入马的初始位置& 阅读全文
posted @ 2011-11-07 21:55
☆A希亿
阅读(1387)
评论(0)
推荐(0)
摘要:
什么是LuaLua是具有简单数据描述的扩展编程语言(动态解析语言)。它提供了非常好的面向对象编程, 函数式编程(functional programming),数据驱动式编程(data-driven programming),它可以作为一个强大、轻量的脚本语言,供任何需要的程序使用。 Lua 以一个用 clean C 写成的库形式提供。(所谓 Clean C ,指的 ANSI C 和 C++ 中共通的一个子集)Lua例子(FOR 循环)for i=1,10 do -- the first program in every language io.write("Hello world, 阅读全文
posted @ 2011-11-07 21:54
☆A希亿
阅读(649)
评论(0)
推荐(0)
摘要:
最近园子到处充斥着类似《告别程序员生涯,一点感慨,与诸君共勉》http://topic.csdn.net/u/20110331/00/37ad95f8-f559-497f-b527-191eb701ef77.html?99610《开发工程师人生之路(强烈推荐,分析的透彻!)》http://topic.csdn.net/u/20110323/16/16ebe2ac-bca5-49da-a050-45cf522a0828.html这样的文章。这些文章往往格调阴暗,无病呻吟,总是欲图从有限的,不愉快的个体经历得出规律性的,悲观的结论。最不可思议的是,即使这些缺乏基本文理逻辑的文章,往往能引来大批欢呼 阅读全文
posted @ 2011-11-07 21:54
☆A希亿
阅读(211)
评论(0)
推荐(0)
摘要:
VS 2005环境下生成静态lib库及调用方法生成lib方法:步骤1:新建一个空项目,建一个头文件如Test.h#pragma once#ifdef __cplusplusextern "C" {#endifint GetMin(int a, int b);#ifdef __cplusplus}#endif//其实只要 int GetMin(int a, int b);这么一句语言也会通过,其他的语句仅仅表明一个头文件在很多情况下并不是这么简单的,会有很多的定义步骤2:新建一个源文件如Test.cpp#include "Test.h"int GetMin 阅读全文
posted @ 2011-11-07 21:53
☆A希亿
阅读(572)
评论(0)
推荐(0)
摘要:
网上看到很多对游戏编程有兴趣的朋友都在说《DirectX 游戏开发终极指南》这本书的游戏项目无法编译通过,自己研究了一下,上网也看了好多提问,终于摸索出成功编译的方法,希望跟这些朋友一起分享一下,大家一起学习一起进步。下面开始正题:首先,必须在vs2003以上的环境建立工程,因为最新的dxsdk对vc6已经不支持了,而且《DirectX 游戏开发终极指南》游戏项目中要用到的directinput在vc6下也有错误。要编译通过随书附带的游戏项目示例程序,要用早期版本DX9。0c 因为最新版本的DX9已经没有directmusic了。而本书要用到。我用的是2006年的。好,下面开始新建一个项目,编 阅读全文
posted @ 2011-11-07 21:52
☆A希亿
阅读(1688)
评论(0)
推荐(0)
摘要:
其先序序列的第一个元素为根节点,接下来即为其左子树先序遍历序列,紧跟着是右子树先序遍历序列,故根节点已可从先序序列中分离。在中序序列中找到确定的根节点,根据中序遍历特性,在巾序序列中,根节点前面的序列即为左子树的中序遍历序列,根节点后面的即为右子树的中序遍历序列。由左右子树的中序序列长度,在该二叉树的先序序列中即可找到左右子树的先序序列的分界点,从而得到二叉树的左右子树的先序序列。递归实现:递归函数输入:二叉树的先序序列和中序序列;返回-、建好的二叉树的根节点。算法思想:1)若二叉树空,返回空;2)若不空,取先序序列第一个元素,建立根节点;3)在中序序列中查找根节点,以此确定左右子树的先序序列 阅读全文
posted @ 2011-11-07 21:51
☆A希亿
阅读(4501)
评论(0)
推荐(1)
摘要:
骨骼蒙皮动画(Skinned Mesh)的原理解析(一)一)3D模型动画基本原理和分类3D模型动画的基本原理是让模型中各顶点的位置随时间变化。主要种类有Morph动画,关节动画和骨骼蒙皮动画(Skinned Mesh)。从动画数据的角度来说,三者一般都采用关键帧技术,即只给出关键帧的数据,其他帧的数据使用插值得到。但由于这三种技术的不同,关键帧的数据是不一样的。Morph(渐变,变形)动画是直接指定动画每一帧的顶点位置,其动画关键中存储的是Mesh所有顶点在关键帧对应时刻的位置。关节动画的模型不是一个整体的Mesh,而是分成很多部分(Mesh),通过一个父子层次结构将这些分散的Mesh组织在一 阅读全文
posted @ 2011-11-07 21:50
☆A希亿
阅读(1952)
评论(0)
推荐(0)
摘要:
每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。-- Christopher Alexander 设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。面向对象设计模式描述了面向对象设计过程中、特定场景下、类与相互通信的对象之间常见的组织关系。 设计模式与面向对象 面向对象设计模式解决的是“类与相互通信的对象之间的组织关系,包括它们的角色、职责、协作方式几个方面。 面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”是那些可以满足“应对变化,提高复用”的设计。 面向对象设计模式描述的是软件设计,因此它是独立于编程语言的,但是面向对象设... 阅读全文
posted @ 2011-11-07 21:48
☆A希亿
阅读(2946)
评论(0)
推荐(0)
摘要:
导读: DirectInput编程基础 - 简介 出 处: 中国游戏开发者 [ 2001-09-09] 作 者: 目 录 1.1 DirectInput概念 1.2 设置DirectInput 1.3 列举设备 1.4 设置设备 1.5 取得输入数据 绪言 输入相对于图形和声音而言从未成为游戏开发中的非常重要的论题。读取键盘按键、鼠标移动和游戏杆位置似乎并没有什么困难,但随着新输入设备对市场的强烈冲击以及DirectX的发行,这一问题变得日益重要了。 如果用户是DirectInput编程的新手,那么应先排除掉一些旧观念。应记住的重要一点是DirectInput的得名是因为... 阅读全文
posted @ 2011-11-07 21:47
☆A希亿
阅读(4852)
评论(0)
推荐(0)
摘要:
typedef struct _D3DPRESENT_PARAMETERS_ { UINT BackBufferWidth, BackBufferHeight; D3DFORMAT BackBufferFormat; UINT BackBufferCount; D3DMULTISAMPLE_TYPE MultiSampleType; DWORD MultiSampleQuality; D3DSWAPEFFECT SwapEffect; HWND hDeviceWindow; BOOL Windowed; BOOL EnableAutoDepthStencil; D3DFORMAT AutoDe 阅读全文
posted @ 2011-11-07 21:46
☆A希亿
阅读(616)
评论(0)
推荐(0)
摘要:
光照的两大要素是光源和物体的材质,物体表面材质属性决定了它能反射什么颜色的光线以及反射多少光线。一、Direct3D中材质的定义D3D中材质通过D3DMATERIAL9结构来表示:typedef struct D3DMATERIAL9 { D3DCOLORVALUE Diffuse; D3DCOLORVALUE Ambient; D3DCOLORVALUE Specular; D3DCOLORVALUE Emissive; float Power;} D3DMATERIAL9, *LPD3DMATERIAL9;Diffuse-指定表面反射的漫反射光。Ambient-指定表面反射的环境光。Spe 阅读全文
posted @ 2011-11-07 21:45
☆A希亿
阅读(1800)
评论(0)
推荐(0)
摘要:
D3DXCreateTextureFromFileEx上次在玩公告板时,用到了D3DXCreateTextureFromFileEx函数,上次的主要目的是公告板,对这个函数没太多的关心,现在发现这个函数是D3DXCreateTextureFromFile的高级板本,还是有它优势的,不然它就没有存在的意义了。D3DXCreateTextureFromFileEx这个函数有14个参数,在MSDN中的原型(后面中文解释为本人理解,仅供参考,原文请查看MSDN):HRESULT D3DXCreateTextureFromFileEx( LPDIRECT3DDEVICE9 pDevice, ... 阅读全文
posted @ 2011-11-07 21:03
☆A希亿
阅读(3673)
评论(3)
推荐(0)
摘要:
在D3D中有3种类型的灯光,用它们可以让3D世界显得真实 。一、灯光类型1、点光(Point Light) 从一个点向周围均匀发射的光,有最大的照明范围,亮度随距离衰减,最明显的一个例子就是我们家里用的灯泡。2、方向光(Directional Light) 方向光是一组没有衰减的平行光,类似太阳光的效果。3、聚光灯(Spot Light) 最复杂的一种灯,有光源点位置、有方向、有范围、有发光的内径和外径,光照强度还会随距离衰减。类似的例子是电筒。二、灯光结构D3D中灯光通过D3DLIGHT9结构来表示:typedef struct D3DLIGHT9 { D3DLIGHTTYPE Typ... 阅读全文
posted @ 2011-11-07 21:02
☆A希亿
阅读(1733)
评论(0)
推荐(1)
摘要:
当我们在编写地形、BOX或者天空盒等的网格与网格连接处常常会看到有的地方会出现一条缝隙之类的,这个要怎么解决呢?其实不难,还记得学过的DirectX提供的纹理寻址里面的镜像纹理寻址、重叠纹理寻址、边框颜色纹理寻址、一次镜像纹理寻址、夹取纹理寻址,这里我把纹理寻址的枚举类型写出来,看不懂就去查查SDK;typedef enum D3DTEXTUREADDRESS{ D3DTADDRESS_WRAP = 1, D3DTADDRESS_MIRROR = 2, D3DTADDRESS_CLAMP = 3, D3DTADDRESS_BORDER = 4, D3DTADDRESS_MIRRORONCE = 阅读全文
posted @ 2011-11-07 21:01
☆A希亿
阅读(1441)
评论(0)
推荐(0)
摘要:
CreateVertexBuffer的形参说明HRESULT CreateVertexBuffer( UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle);length:指定缓冲区的大小,以字节为单位。Usage:指定顶点缓冲区的属性,可以设置成0:FVF:这个就用到了我们上面创建的灵活顶点格式Pool:指定顶点缓冲区的内存类型。我们采用的是D3DPOOL_DEFAULT,意思是顶点缓冲区尽可能存在显存中。其 阅读全文
posted @ 2011-11-07 21:00
☆A希亿
阅读(2364)
评论(0)
推荐(0)
摘要:
IDirect3DVertexBuffer9::LockLocks a range of vertex data and obtains a pointer to the vertex buffer memory.HRESULT Lock( UINT OffsetToLock,自缓存的起始点到开锁定的位置的偏移量 UINT SizeToLock,所要锁定的字节数 VOID ** ppbData,指向锁定存储区的起始位置的指针 DWORD Flags改标记描述了锁定方式 ); 注:当OffsetToLock和SizeToLock都为0时,锁定整个缓存 ParametersOffsetToLock 阅读全文
posted @ 2011-11-07 21:00
☆A希亿
阅读(915)
评论(0)
推荐(0)
摘要:
引言 如果我们希望在场景里添加一个天空,我们可以仅仅只把背景清除为淡蓝色,不过我相信你会认为那样做太普通了。一般来说,那些让你从窗户或洞孔中向外张望的室内游戏使用的是天空盒。只要使用好的纹理,天空盒将提供让人信服的画面;由于纹理伸展在一个巨大的多边形上,低质量的纹理将很容易被注意到。在户外场景中使用天空盒会引发一些问题,例如使用雾,某些雾的设置可能会引发一些问题。如果雾被设置在观察者的旁边,天空盒将减淡甚至消失。另一个可能发生的更烦人的问题是雾会聚积在天空盒的顶点处,从而将天空盒的多边形暴露无遗。下面的图1显示了在天空盒下使用雾所引发的两个问题.小心地调整雾化参数或者细分天空盒的每一个面可以. 阅读全文
posted @ 2011-11-07 20:58
☆A希亿
阅读(852)
评论(0)
推荐(0)
摘要:
1,要点首先我觉得D3D纹理映射的选项太多,给人一种眼花缭乱的感觉,而且刚看的时候并不容易分辩不同选项之间的差别,不知道如何使用这些选项,或者说不知道这些选项对应以前经验中的哪些效果。这些选现包括:Dark mappingAnimated Dark mappingBlending with Material Diffuse ColorDarkmap with Material Diffuse ColorGlow mappingDetail mappingModulate mappingBlending with Frame BufferTrillinear FilteringClamp Add 阅读全文
posted @ 2011-11-07 20:58
☆A希亿
阅读(1745)
评论(0)
推荐(1)
摘要:
稍微讲下天空盒天空盒的顶点struct SkyBoxVertex{SkyBoxVertex();SkyBoxVertex(float x, float y, float z, float u, float v);SkyBoxVertex(const D3DXVECTOR3& p, const D3DXVECTOR2& uv);D3DXVECTOR3 m_pos;D3DXVECTOR2 m_tex0;};#define D3DFVF_SKYBOX (D3DFVF_XYZ | D3DFVF_TEX1 )SkyBoxVertex::SkyBoxVertex(): m_pos(0.0f 阅读全文
posted @ 2011-11-07 20:52
☆A希亿
阅读(429)
评论(0)
推荐(0)
摘要:
D3D资源管理资源分类 顶点缓冲(VertexBuffer) 索引缓冲(IndexBuffer) 纹理(Texture)资源存储 显存(Video Memory) 通过AGP直接访问的内存(AGP Aperture,也叫做非本地显存) 系统内存(System Memory)性能权衡 我们在创建D3D资源的时候需要填写两个参数:D3DPOOL、D3DUSAGE。这两个参数共同决定了资源最终存储在显存、非本地显存还是系统内存中。枚举类型D3DPOOLD3DPOOL_DEFAULTD3DPOOL_MANAGEDD3DPOOL_SYSTEMMEMD3DPOOL_SCRATCH D3DPOOL_MANA 阅读全文
posted @ 2011-11-07 20:49
☆A希亿
阅读(472)
评论(0)
推荐(0)
摘要:
STDMETHOD_是一个宏,用于定义指定返回类型的接口方法,包含virtual关键字。可用于定义方法声明。 #define STDMETHOD_(type,menthod) virtual type STDMETHODCALLTYPE menthod 例如: STDMETHOD_ (ULONG, release)()展开后就是 virtual ULONG STDMETHODCALLTYPE release() STDMETHODCALLTYPE 宏展开是 __stdcall。#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE 阅读全文
posted @ 2011-11-07 20:48
☆A希亿
阅读(663)
评论(0)
推荐(0)
摘要:
D3D是 COM组件,它在服务进程中运行,而不在当前的客户进程中。在DX组件运行过程中,要创建一系列接口对象,如CreateDevice()返回接口指针,这些接口及其占用内存什么时候释放,要通过“引用计数”的技术来解决。AddRef()给这个接口指针的计数加1,而Release()会将之减1。一旦减到0,表示没有客户使用了,相关的接口就释放了。由此可知,每次调用Rlease()后,并不一定会释放内存,而是当引用计数归0时释放内存。 这样,对接口指针的使用,就像维护堆栈的平衡一样,要仔细,而且按照某种约定规则使用。 但平时D3D编程中,怎么不用AddRef()呢?这是由于一个接口指针,如ID.. 阅读全文
posted @ 2011-11-07 20:46
☆A希亿
阅读(2814)
评论(0)
推荐(1)
摘要:
反射只是翻转摄影机,将场景渲染到Texture上,或使用STENCIL蒙板直接绘制。具体计算查看了D3D的 Sample,如下:D3DXMATRIXA16 matViewSaved; m_pd3dDevice->GetTransform( D3DTS_VIEW, &matViewSaved ); //取得view matrix//定义一个翻转的参考平面,可根据需要自己定义位置及法线 D3DXVECTOR3 vPoint(0,0,0); D3DXVECTOR3 vNormal(0,1,0); D3DXMATRIXA16 matView, matReflect; ... 阅读全文
posted @ 2011-11-07 20:45
☆A希亿
阅读(1300)
评论(0)
推荐(0)
摘要:
原文:http://kay.zhang.blog.163.com/blog/static/3493716520084100395228/ multiAnimation是个很酷的东西。我们知道利用AnimationController可以随意的加载.x中的各种动画集。可是如果不做任何设置,只是在一个Track上切换动画集的话,就会出现动作突然变化的效果,十分不自然,比如说:当.x模型在程序中是立正的时候,我们发出命令:敬礼!他的右手手就会直接从裤缝瞬移到太阳穴,没有一个变化的过程。而我们要的效果是:我们下令敬礼 之后,他的手会从裤缝慢慢的移动到太阳穴。整个是一个连续的过程。这要怎么实现呢?其实. 阅读全文
posted @ 2011-11-07 20:44
☆A希亿
阅读(569)
评论(0)
推荐(0)
摘要:
原文:http://blog.csdn.net/chjp2046/article/details/5460462使用 std::stringstream,小心 内存! 适时 清空 缓冲 ……2007年12月14日 星期五 16:25stringstream是个好东西,网上有不少文章,讨论如何用它实现各种数据类型的转换(比如把double或int转换为string类型)。但如果stringstream使用不当,当心内存出问题(我就吃过亏^_^)。试试下面的代码,运行程序前打开任务管理器,过不了几十秒,所有的内存都将被耗尽!#include <cstdlib>#include < 阅读全文
posted @ 2011-11-07 20:42
☆A希亿
阅读(1259)
评论(0)
推荐(0)
摘要:
学习啦~~~~~~原文地址:漫谈游戏中的阴影技术作者:flymemory随着硬件的越来越高端化,各种以前可望而不可及的效果越来越多的应用到网络游戏里。本篇文章是介绍目前游戏中影子的实现方式,它们的优缺点以及应用的场合。一般来说,在游戏中,应用比较多的影子技术有三种,Projective shadow, Shadow map以及Shadow map.我们接下来便依次的介绍它们。Projective Shadow投影的原理可以应用在任意贴图上就是我们通常所说的投射影子,它的实现比较简单,具体有两个步骤:1.以光源为视点,渲染有影子的物体到一张预备好的Shadow texture中。要注意的是,这里 阅读全文
posted @ 2011-11-07 20:39
☆A希亿
阅读(855)
评论(0)
推荐(0)
摘要:
名称:LOD地形演示作者:曾涛Email:zengfengtao@163.com下载:http://show.gameres.com/ztLODTerrain/ztLODTerrain.zip (执行程式+代码,2.5MB)开发环境:WIN7 VS2003 DX9.0c C++简介:这是学习LOD地形所做的一个演示程序,是根据潘李亮《largeLOD》一文中来实现的四叉树算法,当然还有Roam和其他的算法没有尝试,等空了都(马上过年了- -#)。不过对地形的层次细节与裁剪有了初步的认识。地形的高度图用的是柏林噪声生成,地图的粗糙表是预先创建的。操作说明: W S A D 控制方向,鼠标左键操. 阅读全文
posted @ 2011-11-07 20:38
☆A希亿
阅读(727)
评论(0)
推荐(0)
摘要:
仅为开发爱好者提供一些浅见,转载请注明出处。 Introduction Shader,又称着色器,是可编程的,相比过去在显卡上通过硬件hardcode流水线的方式,Shader提供了更灵活有效的解决方案,为新一代的显卡所支持,而在图形引擎中弃用固定流水线编程方式是大势所趋。对于刚刚接触Shader的同学,如何接受这种编程方式的迁移呢?回忆一下主板上BIOS程序,当我们要设置主机是从光盘优先启动还是硬盘优先启动的时候要用到它,配置好的启动信息是保存在主板的CMOS上的。固定管道编程就类似于此,只是对显卡上烧制好的一些算法做一些配置,而Shader的方式则可以使用自己Shader Progra.. 阅读全文
posted @ 2011-11-07 20:37
☆A希亿
阅读(1481)
评论(0)
推荐(0)
摘要:
Strassen矩阵乘法矩阵乘法是线性代数中最常见的运算之一,它在数值计算中有广泛的应用。若A和B是2个n×n的矩阵,则它们的乘积C=AB同样是一个n×n的矩阵。A和B的乘积矩阵C中的元素C[i,j]定义为: 若依此定义来计算A和B的乘积矩阵C,则每计算C的一个元素C[i,j],需要做n个乘法和n-1次加法。因此,求出矩阵C的n2个元素所需的计算时间为0(n3)。60年代末,Strassen采用了类似于在大整数乘法中用过的分治技术,将计算2个n阶矩阵乘积所需的计算时间改进到O(nlog7)=O(n2.18)。首先,我们还是需要假设n是2的幂。将矩阵A,B和C中每一矩阵都分块 阅读全文
posted @ 2011-11-07 20:36
☆A希亿
阅读(1947)
评论(0)
推荐(0)
摘要:
对于矩阵乘法 C = A × B,通常的做法是将矩阵进行分块相乘,如下图所示:从上图可以看出这种分块相乘总共用了8次乘法,当然对于子矩阵相乘(如A0×B0),还可以继续递归使用分块相乘。对于中小矩阵来说,很适合使用这种分块乘法,但是对于大矩阵来说,递归的次数较多,如果能减少每次分块乘法的次数,那么性能将可以得到很好的提高。Strassen矩阵乘法就是采用了一个简单的运算技巧,将上面的8次矩阵相乘变成了7次乘法,看别小看这减少的1次乘法,因为每递归1次,性能就提高了1/8,比如对于1024*1024的矩阵,第1次先分解成7次512*512的矩阵相乘,对于512*512的矩阵, 阅读全文
posted @ 2011-11-07 20:34
☆A希亿
阅读(5321)
评论(1)
推荐(0)
摘要:
BillBoard技术(广告版)详解!(转)今天项目里突然要用到广告版技术。闲来就去摆渡搜索一下,发现这一方面的介绍很少,所以才有了今天这篇文章,也是为了服务于新手,更为了锻炼一下自己,现在把BillBoard技术详细的介绍一下。废话不说,下面进入正题!一:定义广告版矩形顶点结构和顶点格式,具体代码如下:struct customvertrx{ float x,y,z;//顶点位置float u ,v;//定义顶点纹理坐标};#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_TEX1)二:创建广告版矩形和纹理对象。//以下为创建你需要做广告版的顶.. 阅读全文
posted @ 2011-11-07 20:32
☆A希亿
阅读(1667)
评论(0)
推荐(0)
摘要:
#include "resource.h"LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ MSG msg; // 创建主对话框,用CreateDialog创建的是... 阅读全文
posted @ 2011-11-07 20:23
☆A希亿
阅读(316)
评论(0)
推荐(0)

浙公网安备 33010602011771号