xfate的专栏

———— 修合无人见 存心有天知
私信 关注
xfate
码龄12年
  • 61,323
    被访问量
  • 60
    原创文章
  • 102,265
    作者排名
  • 25
    粉丝数量
  • 于 2009-08-08 加入CSDN
获得成就
  • 获得3次点赞
  • 内容获得3次评论
  • 获得3次收藏
荣誉勋章
TA的专栏
  • .net技术
  • c++学习笔记
  • C语言学习笔记
    15篇
  • WINDOWS程序设计/MFC编程
    2篇
  • 人工智能
  • 操作系统
  • 数据结构与算法
  • 游戏开发
    8篇
  • 计算机图形学
    1篇
  • 计算机网络
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

shader学习笔记——运动模糊(motion blur)

运动模糊(motion blur)运动模糊效果的工作流程1.先将场景渲染到一个RenderTarget1上2.将RenderTarget1跟上一帧渲染的结果进行混合, 并输出到RenderTarget23.将RenderTarget2输出到屏幕, 并将其保留到下一帧进行混合ScreenAlignedQuad:一个正方形网格Pass0的设置和代码:RenderTarget 开启颜色清除和深度缓冲清除。Vertex Shader代码:float4x4 matViewProjection;struct VS_IN
原创
6648阅读
0评论
1点赞
发布博客于 11 年前

shader学习笔记——Looking Through A Filter 通过滤波器观察


渲染目标render target
所谓渲染目标,就是指GPU可以把画面绘制到的目标,我们可以把它理解为GPU的画布。
 
当场景不是被渲染在正常的屏幕后备缓冲,而是被渲染在一个临时的纹理。这个临时的纹理经过过滤特效处理后,然后传到后备缓冲,最后画到屏幕上。绘制这样的一个可以实现某些功能的临时纹理被称为渲染目标。
 
实质上,渲染目标是一个连续的内存区域,这样的内存区域可以同时的存在多个,也就是多个渲染目标。一般来说,渲染目标被输出到屏幕上,这样
原创
1112阅读
0评论
1点赞
发布博客于 11 年前

D3D学习笔记:字体



ID3DXFont
ID3DXFont在绘制文字的时候使用的是GDI的API,DXUT提供了一个东西叫做CDXUTTextHelper,它封装了需要的ID3DXFont以及Sprite,并提高了工作效率。那就是它在内存中开辟了一块纹理,将绘制过的文字绘制在这上面,以后再次遇到这个字的时候就直接当做普通纹理处理了。这样做的代价就是内存的开销变大。
1.       创建一个ID3DXFont接口
HRESULT  D3DXCreateFontIndirec
原创
2457阅读
0评论
1点赞
发布博客于 11 年前

D3D学习笔记:模板


模版缓存是一个远离屏幕的缓存,我们能够用它来完成一些特效。模版缓存与后缓存和深度缓存有相同的定义,因此在模版缓存中的[i][j]像素与后缓存和深度缓存中的[i][j]像素是相协调的。就象名字所说,模版缓存就象一个模版它允许我们印刷渲染后缓存的某个部分。
 
1.使用模板缓存
1.1启用模版缓存
Device->SetRenderState(D3DRS_STENCILENABLE,true);
我们可以使用IDirect3DDevice9::Cle
原创
3274阅读
2评论
0点赞
发布博客于 11 年前

D3D学习笔记:混合


混合(blending)
1.混合:
用已经光栅化的像素光栅化同一位置的像素。就是我们在图元上混合图元。
使用混合时,下面的规则将被遵循:
规则:首先不使用混合绘制物体。然后根据物体离摄象机的距离使用混合对物体拣选。
下面的公式是用来混合两个像素值的:


上面的所有变量都是一个 4D颜色向量(r,g,b,a),并且x符号是表示分量相乘。
  OutputPixel——混合后的像素结果。
  So
原创
936阅读
0评论
0点赞
发布博客于 11 年前

D3D学习笔记:纹理


1 .表示物体表面细节的一幅或几幅二维图形,也称纹理贴图(texture)当把纹理按照特定的方式映射到物体表面上的时候能使物体看上去更加真实。纹理映射是一种允许我们为三角形赋予图象数据的技术。既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案。
2.Direct3D中一个纹理是通过IDirect3DTexture9接口来表现的。一个纹理是一个类似像素矩阵的表面它能够被映射到三角形上。
3. 纹理坐标
Direct3D
原创
2184阅读
1评论
0点赞
发布博客于 11 年前

D3D学习笔记:绘制


1.顶点/索引缓冲区
顶点/索引缓冲区是一片存储着顶点/索引数据的内存。
顶点缓冲区通过IDirect3DVertexBuffer9接口来定义的。索引缓冲区时通过IDirect3DIndexBuffer9接口来定义的。
1.1   创建一个顶点缓冲区和一个索引缓冲区
创建顶点缓冲区函数原型:
HRESULT CreateVertexBuffer(
   //分配缓冲区的内存大小,比如分配个顶点,则可以* sizeof(Vertex)<b
原创
516阅读
0评论
0点赞
发布博客于 11 年前

Direct3D学习笔记:色彩



1.存储RGB信息的两个结构:
1.1   D3DCOLOR
typedefDWORDD3DCOLOR;

填充这个DWORD字段需要用以下宏
D3DCOLORcl = D3DCOLOR_ARGB(255,255,10,0)
或是D3DCOLORcl = D3DCOLOR_XRGB(r,g,b)

1.2   D3DCOLORVALUE
structD3DCOLORVALUE {
  
原创
709阅读
0评论
0点赞
发布博客于 11 年前

Direct3D学习笔记:渲染管线


渲染管线
1图元
图元就是组成图像的基本单元,比如三维模型中的点、线、面等等,注意图元(entity)与片元(primitive)的区别,片元就是以后的像素点,它比像素多一些位置啊、法向量等属性。逐个片元操作有像素所有权操作(确定目标像素可见还是被一个重叠的窗口盖住了),剪切测试、Alpha测试、模板测试、混合等。而片段(fragments)是指具有相同属性的一小部分像素区域。
一个场景是多个物体或模型的集合,由三角形网格建立一个物体,称之为建模,3d世界最基本的图
原创
2159阅读
0评论
0点赞
发布博客于 11 年前

Direct3D学习笔记:direct3d的基本知识和初始化


1.表面(Surface)
typedefstruct D3DSURFACE_DESC {
  D3DFORMAT           Format;
  D3DRESOURCETYPE     Type;
  DWORD               Usage;
  D3DPOOL             Pool;
  D3DMULTISAMPLE_TYPE MultiSampleType;
  DWORD        
原创
1303阅读
0评论
0点赞
发布博客于 11 年前

windows程序设计笔记:显示文字

绘制和更新在Windows中,只能在窗口的显示区域绘制文字和图形,Windows是一个消息驱动系统。它通过把消息投入应用程序消息队列中或者把消息发送给合适的窗口消息处理程序,将发生的各种事件通知给应用程序。Windows通过发送WM_PAINT消息通知窗口消息处理程序,窗口的部分显示区域需要绘制。1.WM_PAINT消息2.1以下情况窗口消息处理程序会接收到一个WM_PAINT消息:1.移动窗口或显示窗口时,窗口中先前被隐藏的区域重新可见。2.改变窗口的大小(如果窗口类别样式有着CS_HREDRAW和CS_
原创
1357阅读
0评论
0点赞
发布博客于 11 年前

第一个windows程序(windows程序设计笔记)

以下内容大多由《Windows程序设计》,《VC++深入详解》等书籍以及MSDN,网上一些资料和本人的理解整合而来,以作笔记之用。---------------------------------------------------------------------------------------------1.几个常用的术语:API(Application Programming Interface)应用程序编程接口SDK(Software Development Kit)软件开发包2.匈牙利符号表
原创
1063阅读
0评论
0点赞
发布博客于 11 年前

direct学习笔记-数学基础

以下的大部分内容来源于Introduction.To.Direct3D9中文版(翁云兵版),《3D图形与数学基础》和网上的一些资料,本人根据这些内容作了一些笔记。1.数学基础1.1坐标系坐标系主要分2种,左手坐标系和右手坐标系。左手坐标系右手坐标系注:directx3d使用左手坐标系,opengl使用右手坐标系。1.2向量1.3矩阵1.4 点1.5 面
原创
780阅读
0评论
0点赞
发布博客于 11 年前

DirectX9入门教程-[Beginning.DirectX9][EN]

DirectX9入门教程-[Beginning.DirectX9][EN]
application/pdf
发布资源于 11 年前

2009-11-04 东鳞西爪c++学习日记之静态成员

注:东鳞西爪c++学习日记系列的内容为本人学习C++程序设计语言(特别版)时不懂在网络寻求帮助,所以内容大多来源于网络 静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。#includeusing namespace std;class Internet{public: Inter
原创
399阅读
0评论
0点赞
发布博客于 12 年前

2009-11-04 malloc

C语言的动态存储管理由一组标准库函数实现,其原型在标准文件里描述,需要用这些功能时应包含这个文件。与动态存储分配有关的函数共有四个,其中就包括存储分配函数malloc()。函数原型是:void *malloc (size_t n);这里的size_t是标准库里定义的一个类型,它是一个无符号整型。这个整型能够满足所有对存储块大小描述的需要,具体相当于哪个整型由具体的C系统确定。malloc的返回值为
原创
292阅读
0评论
0点赞
发布博客于 12 年前

2009-11-04 C++笔记摘录

2009-11-04 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。  引用简介  引用就是某一变量(目标)的一个别名,对引用的操作与对变量
原创
253阅读
0评论
0点赞
发布博客于 12 年前

2009-11-04 预处理

2009-11-04 /*如果defined的参数已经被#define 定义过,那么defined 返回1 否则返回0*/#if defined (IBMPC)#include "ibmpc.h"#elif defined (VAX)#include "vax.h"#elif defined (MAC)#include "mac.h"#else#include
原创
249阅读
0评论
0点赞
发布博客于 12 年前

2009-11-04-初探ADT

#ifndef LIST_H_#define LIST_H_enum _bool{false,true};typedef enum _bool bool;/*代替c99的stdbool.h*//*特定于程序的声明*/#define TSIZE 45 /*存放影片的数组大小*/struct film{ char title[TSIZE]; int rati
原创
400阅读
0评论
0点赞
发布博客于 12 年前

2009-10-26c语言日记(预处理)

/*##运算符*/#include#define XNAME(n) x##n#define PRINT_XN(n) printf("x" #n" = %d/n",x##n)int main(void){ int XNAME(1) = 14;//x1 = 14 int XNAME(2) = 20;//x2 = 20 PRINT_XN(1); PRINT_XN(
原创
411阅读
0评论
0点赞
发布博客于 12 年前

2009-10-20c语言日记(位操作)

int Bi(int num,int location){ int mask = 01; int j; static int size = 8 * sizeof(int); num >>= location; j = mask & num; if(j == 1) { return 1; } else { return 0;
原创
392阅读
0评论
0点赞
发布博客于 12 年前

2009-10-19c语言日记(位操作)

/*使用位操作符来显示二进制*/#includechar *itobs(int n, char *ps);void show_bstr(const char *);int invert_end(int num, int bits);int main(void){ char bin_str[8 * sizeof(int) + 1]; int number;
原创
346阅读
0评论
0点赞
发布博客于 12 年前

2009-10-17c语言日记

#include#include#define PI 3.1415926int main(){ const double mp=981.0;//密度 const double g=9.8;//重力加速度 const double nl=1.83e-5;//粘滞系数 const double b=6.17e-6;//修正常数 const double p=76
原创
430阅读
0评论
0点赞
发布博客于 12 年前

2009-10-16c语言日记(航班程序)

#include#include#include#include#define LEN 14#define SEATS 12#define EMPTY 0#define TAKEN 1#define CONTINUE 1#define DONE 0struct planestats{ int seatId; int status;
原创
446阅读
0评论
0点赞
发布博客于 12 年前

国庆c语言日记(结构2)

//复合文字#include#define MAXTITL 41#define MAXAUTL 31struct book { char title[MAXTITL]; char author[MAXAUTL]; float value;};int main(void){ struct book
原创
557阅读
0评论
0点赞
发布博客于 12 年前

国庆c语言日记(结构)

C编译器对结构空间缺省的分配    在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间;各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。在缺省情况下,C编译器为
原创
394阅读
0评论
0点赞
发布博客于 12 年前

090928日c语言学习日记(文件I/O)

#include#include#define MAX 41static int i=0;int main(void){ FILE *fp; char words[MAX]; if((fp=fopen("words","a+"))==NULL) { fprintf(stdout,"Cant open /" word/" file/n");
原创
284阅读
0评论
0点赞
发布博客于 12 年前

090924c语言学习日记(13章)

#include #include #include /* Macintosh adjustment */int main(int argc, char *argv[]){ int ch1, ch2; FILE * f1; FILE * f2; argc = ccommand(&argv); /* Macintos
原创
301阅读
0评论
0点赞
发布博客于 12 年前

090923c语言学习日记(13章练习)

//使用标准I/O#include#includeint main(void){ int ch; char fname[20]; long count=0; FILE *fp; puts("请输入文件名:"); gets(fname); fp=stdin; if((fp=fopen(fname,"r"))==NULL) { fprint
原创
294阅读
0评论
0点赞
发布博客于 12 年前

090922c语言学习日记(13章)

//pe12-8.c#include#includeint *make_array(int elem,int val);void show_array(const int ar[],int n);int main(void){ int *pa; int size; int value; printf("Enter the number of elemen
原创
330阅读
0评论
0点赞
发布博客于 12 年前

0920c语言学习日记(冒泡法,选择法)

#include#include#include#define N 10#define T 100void rarray(int randn[],int limit);int main(void){ int randn[T]; int i; srand((unsigned int) time(0));//随机化种子 printf("10
原创
320阅读
0评论
0点赞
发布博客于 12 年前

090916c语言学习日记(13章)

#includevoid trystat(void);int main(void){ int count; for(count=1;count<=3;count++) { printf("Here comes itertion %d:/n",count); trystat(); } getch(); ret
原创
320阅读
0评论
0点赞
发布博客于 12 年前

090914c语言笔记(存储类,静态,动态变量)

#includevoid trystat(void);int main(void){ int count; for(count=1;count<=3;count++) { printf("Here comes itertion %d:/n",count); trystat(); } getch(); ret
原创
340阅读
0评论
0点赞
发布博客于 12 年前

090913c语言笔记(字符串输出)

#include #include /* for atof() */#include /* for pow() *//* #include */ /* Macintosh adjustment */int main(int argc, char *argv[]){ double num,
原创
390阅读
0评论
0点赞
发布博客于 12 年前

090911c语言笔记(一个字符串输出的例子)

#include#include#include#define LIM 10#define SIZE 81void strput(char *str[],int n);//输出初始字符串列表 void strasc(char *str[],int n);//按ascii码输出字符串 void strlong(char *str[],int n);//按长度递增
原创
474阅读
0评论
0点赞
发布博客于 12 年前

090909c++语言学习日记(命名空间)

 #includeint main(void){ cout<<"hello"<<endl; system("pause"); return 0;} #includeint main(void){ std::cout<<"hello"<<std::endl; system("pause"); return 0;}
原创
232阅读
0评论
0点赞
发布博客于 12 年前

090909c语言学习日记

#includeint search(char str[],char ch,int n);int main(void){ const int SIZE=30; char str[SIZE]; char *ch; char s; int n; while(1) { puts("Enter strings:
原创
337阅读
0评论
0点赞
发布博客于 12 年前

090908c语言学习日记(11章)

//修改一个字符串#include#include#include#define LIMIT 80void Toupper(char *);int punctcount(const char *);int main(void){ char line[LIMIT]; puts("Please enter a line:"); gets(l
原创
391阅读
0评论
0点赞
发布博客于 12 年前

090907c语言学习日记

#include#include#define SIZE 81#define LIM 100#define STOP "quit"int main(void){ char input [LIM][SIZE]; int ct=0; printf("Enter up to %d lines(type)quit to quit ):/n",LIM)
原创
366阅读
0评论
0点赞
发布博客于 12 年前

090906c语言学习日记

//字符串交互#include#define MSG "You must have many talents.Tell me some."#define LIM 5#define LINELEN 81int main(void){ char name[LINELEN]; char talents[LINELEN]; int i; co
原创
499阅读
0评论
0点赞
发布博客于 12 年前

090904c语言学习日记

#includeint put2(cnost char *string){ int count=0; while(*string) { putchar(*string++); count++; } putchar(/n); return (count);} #includevoid
原创
405阅读
0评论
0点赞
发布博客于 12 年前

090902c语言日记(指针,数组)

#includeint main(void){ const int days[]={31,31,31,32,13123,23,23,3121,32,12}; int index; for(index=0;index<sizeof days/sizeof days[0];index++) printf("%d %d/n",index+1,day
原创
271阅读
0评论
0点赞
发布博客于 12 年前

090902c语言日记(指针,数组)

#includeint maxnum(int ar[],int n);int main(void){ int mar[5]={1,2,3,8,5}; printf(" max is %d/n",maxnum(mar,5)); getch(); return 0;}int maxnum(int ar[],int n){ int
原创
300阅读
0评论
0点赞
发布博客于 12 年前

090828c语言日记(函数,递归)

#includedouble min(double u,double v);int main(void){ double x,y; printf("please enter 2 number/n"); while(scanf("%lf%lf",&x,&y)==2) { printf("the min is %f/n",min(x,y
原创
746阅读
0评论
0点赞
发布博客于 12 年前

090827c语言学习日记(第九章)

#includeint imin(int n,int m);int main(void){ int evil1,evil2; printf("Please enter two integers(q to quit):/n"); while(scanf("%d %d",&evil1,&evil2)==2) { printf("T
原创
392阅读
0评论
0点赞
发布博客于 12 年前

090825C语言学习日记(字符输入输出)

//echo_eof#includeint main(){ int ch;//注意类型,因为EOF为-1,char为0-255 while((ch=getchar())!=EOF) putchar(ch); getch(); return 0;} #includeint main(){ int ch;
原创
534阅读
0评论
0点赞
发布博客于 12 年前

U盘量产启动盘

随著网速,移动硬盘,u盘等的发展,光驱的使用率变得越来越低了,但是对大部分的人来说,光驱还有个最重要的作用。。。那就是装系统。。。。。。。。。(本人的光驱除了装国产正版游戏其他什么事都不干,感觉光驱就是一个鸡肋)上网本往往没有光驱,因此最好的方法就是利用U盘装系统。。。。。。。。。做个U盘版winPE,集成多种工具,维护系统和安装系统都变得方便。 下面说两种方法 利用UltraISO下载个winp
原创
1095阅读
0评论
0点赞
发布博客于 12 年前

090823c语言学习日记2(第七章,分支和控制)

#includeint main(){ const float TAX1=0.15;//前300美元的税率 const float TAX2=0.20;//300-450美元的税率 const float TAX3=0.25;//450以上的税率 const float BTIME=40.00;//基本上班时间 const floa
原创
307阅读
0评论
0点赞
发布博客于 12 年前

090823c语言学习日记(第七章,分支和控制)

//使用break退出循环#includeint main(){ float length,width; printf("Enter the length:/n"); while(scanf("%f",&length)==1) { printf("Length=%.2f/n",length); printf("En
原创
369阅读
0评论
0点赞
发布博客于 12 年前

090822c语言日记(第七章)

#includeint main(){ const int low_t=0; float temperature; int all_day=0; int cold_day=0; printf("Please enter the list of daily low temperature./n"); printf("Useing
原创
452阅读
0评论
0点赞
发布博客于 12 年前

090820c语言日记

#includeint main(){ const double N=1.0; int i,j; double sum_a=0; double sum_b=0; int c; while(1){ printf("Please enter times:"); scanf(
原创
317阅读
0评论
0点赞
发布博客于 12 年前

090819c语言日记(第六章,循环)

#includeint main(){ double num_a[8]; double num_b[8]; int i,ii; printf("Please enter 8 numbers:"); for(i=0;i<8;i++){ scanf("%lf",&num_a[i]); } num_b[0]=n
原创
269阅读
0评论
0点赞
发布博客于 12 年前

090815c语言学习日记(嵌套循环,数组输入读取,函数返回值,第六章)

#include//嵌套循环 int main(){ const int ROWS=6; const int C=6; int row; char ch; for(row=0;row<ROWS;row++) { for(ch=(A+row);ch<(A+C);ch++) printf
原创
521阅读
0评论
0点赞
发布博客于 12 年前

2009-08-13c语言学习日记(循环,第五章,for循环

练习代码1#includeint main(){ int num; int sum=0; int status; printf("Please enter a num(q to quit):"); status=scanf("%d",&num);//获取scanf的返回值 while(status==1){
原创
417阅读
0评论
0点赞
发布博客于 12 年前

090811c语言学习第五章笔记(类型变换,自定义函数,循环条件等)

练习代码1#includeint main(){    int num=1;    while(num                   num++;                  printf("%d %5d/n",num,num*num);                  }                  printf("Thats is OK!");            
原创
464阅读
0评论
0点赞
发布博客于 12 年前

c学习杂记(==和=-,lf和f)

==if(a%2)是对A%2的结果进行判断,如果是非零,则判断为真,否则为假;if(a%2==0)是判断a%2是否为零,是则为真,否则为假。那么如果,a为偶数,那么if(a%2)判断的结果是假,而if(a%2==0)判断的结果是真 if(!a)和if (a==0)一样if(a=0)表示里面的条件恒不执行,a=0是赋值语句,返回的是a,a为0了,if语句就为假那就不执行if里的语句了。
原创
861阅读
0评论
0点赞
发布博客于 12 年前

090810c语言第五章学习日记(运算符)

 今天放弃vc6.0,投入了devc++的怀抱,devc感觉不错,练习最好。练习代码一:#include#includeint main(){    double a=1.0/3.0;    float b=1.0/3.0;    printf("%0.4f ,%0.4f/n",a,b);    printf("%0.12f .%0.12f/n",a,b);    printf("%0.1
原创
311阅读
0评论
0点赞
发布博客于 12 年前

虚拟机

 今天搞了一下午的虚拟机,终于装上了xp系统
原创
366阅读
0评论
0点赞
发布博客于 12 年前

090808c语言学习日记(printf和scanf的主要注意点2)

 继续学习c第四章练习代码一:#includeint main(){ int n; printf("please enter 3:/n"); scanf("%*d %*d %d",&n);//scanf的*号修饰符会使其跳过读取 printf("the last number is :%d/n",n); return 0;}练习代码二:#include#define Q "haha
原创
352阅读
0评论
0点赞
发布博客于 12 年前

090807c语言学习日记(printf和scanf的主要注意点)

今天学习了《c primer plus》第四章,下面为练习代码:#include #include //包含了字符串的函数原型,包括strlen()#define WORD "It is foolish name!"//预处理,定义常量,多用大写#define WORD_K 12345678int main(){ int size ,letters; char name[30];//定义一个c
原创
389阅读
0评论
0点赞
发布博客于 12 年前

随便写写吧,希望可以坚持

 随便写写吧,希望可以坚持
原创
320阅读
0评论
0点赞
发布博客于 12 年前