- 博客(60)
- 资源 (1)
- 收藏
- 关注
原创 shader学习笔记——运动模糊(motion blur)
运动模糊(motion blur)运动模糊效果的工作流程1.先将场景渲染到一个RenderTarget1上2.将RenderTarget1跟上一帧渲染的结果进行混合, 并输出到RenderTarget23.将RenderTarget2输出到屏幕, 并将其保留到下一帧进行混合ScreenAlignedQuad:一个正方形网格Pass0的设置和代码:RenderTarget 开启颜色清除和深度缓冲清除。Vertex Shader代码:float4x4 matViewProjection;struct VS_IN
2010-09-05 22:58:00 7582
原创 shader学习笔记——Looking Through A Filter 通过滤波器观察
<br />渲染目标render target<br />所谓渲染目标,就是指GPU可以把画面绘制到的目标,我们可以把它理解为GPU的画布。<br /> <br />当场景不是被渲染在正常的屏幕后备缓冲,而是被渲染在一个临时的纹理。这个临时的纹理经过过滤特效处理后,然后传到后备缓冲,最后画到屏幕上。绘制这样的一个可以实现某些功能的临时纹理被称为渲染目标。<br /> <br />实质上,渲染目标是一个连续的内存区域,这样的内存区域可以同时的存在多个,也就是多个渲染目标。一般来说,渲染目标被输出到屏幕上,这样
2010-09-05 22:50:00 1239
原创 D3D学习笔记:字体
<br /><br />ID3DXFont<br />ID3DXFont在绘制文字的时候使用的是GDI的API,DXUT提供了一个东西叫做CDXUTTextHelper,它封装了需要的ID3DXFont以及Sprite,并提高了工作效率。那就是它在内存中开辟了一块纹理,将绘制过的文字绘制在这上面,以后再次遇到这个字的时候就直接当做普通纹理处理了。这样做的代价就是内存的开销变大。<br />1. 创建一个ID3DXFont接口<br />HRESULT D3DXCreateFontIndirec
2010-08-21 16:41:00 2723
原创 D3D学习笔记:模板
<br />模版缓存是一个远离屏幕的缓存,我们能够用它来完成一些特效。模版缓存与后缓存和深度缓存有相同的定义,因此在模版缓存中的[i][j]像素与后缓存和深度缓存中的[i][j]像素是相协调的。就象名字所说,模版缓存就象一个模版它允许我们印刷渲染后缓存的某个部分。<br /> <br />1.使用模板缓存<br />1.1启用模版缓存<br />Device->SetRenderState(D3DRS_STENCILENABLE,true);<br />我们可以使用IDirect3DDevice9::Cle
2010-08-21 16:36:00 3701 2
原创 D3D学习笔记:混合
<br />混合(blending)<br />1.混合:<br />用已经光栅化的像素光栅化同一位置的像素。就是我们在图元上混合图元。<br />使用混合时,下面的规则将被遵循:<br />规则:首先不使用混合绘制物体。然后根据物体离摄象机的距离使用混合对物体拣选。<br />下面的公式是用来混合两个像素值的:<br /><br /><br />上面的所有变量都是一个 4D颜色向量(r,g,b,a),并且x符号是表示分量相乘。<br /> OutputPixel——混合后的像素结果。<br /> So
2010-08-21 16:30:00 1125
原创 D3D学习笔记:纹理
<br />1 .表示物体表面细节的一幅或几幅二维图形,也称纹理贴图(texture)当把纹理按照特定的方式映射到物体表面上的时候能使物体看上去更加真实。纹理映射是一种允许我们为三角形赋予图象数据的技术。既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案。<br />2.Direct3D中一个纹理是通过IDirect3DTexture9接口来表现的。一个纹理是一个类似像素矩阵的表面它能够被映射到三角形上。<br />3. 纹理坐标<br />Direct3D
2010-08-20 01:27:00 2563 1
原创 D3D学习笔记:绘制
<br />1.顶点/索引缓冲区<br />顶点/索引缓冲区是一片存储着顶点/索引数据的内存。<br />顶点缓冲区通过IDirect3DVertexBuffer9接口来定义的。索引缓冲区时通过IDirect3DIndexBuffer9接口来定义的。<br />1.1 创建一个顶点缓冲区和一个索引缓冲区<br />创建顶点缓冲区函数原型:<br />HRESULT CreateVertexBuffer(<br /> //分配缓冲区的内存大小,比如分配个顶点,则可以* sizeof(Vertex)<b
2010-08-20 01:11:00 672
原创 Direct3D学习笔记:色彩
<br /><br />1.存储RGB信息的两个结构:<br />1.1 D3DCOLOR<br />typedefDWORDD3DCOLOR;<br /><br />填充这个DWORD字段需要用以下宏<br />D3DCOLORcl = D3DCOLOR_ARGB(255,255,10,0)<br />或是D3DCOLORcl = D3DCOLOR_XRGB(r,g,b)<br /><br />1.2 D3DCOLORVALUE<br />structD3DCOLORVALUE {<br />
2010-08-01 17:45:00 797
原创 Direct3D学习笔记:渲染管线
<br />渲染管线<br />1图元<br />图元就是组成图像的基本单元,比如三维模型中的点、线、面等等,注意图元(entity)与片元(primitive)的区别,片元就是以后的像素点,它比像素多一些位置啊、法向量等属性。逐个片元操作有像素所有权操作(确定目标像素可见还是被一个重叠的窗口盖住了),剪切测试、Alpha测试、模板测试、混合等。而片段(fragments)是指具有相同属性的一小部分像素区域。<br />一个场景是多个物体或模型的集合,由三角形网格建立一个物体,称之为建模,3d世界最基本的图
2010-08-01 17:40:00 2387
原创 Direct3D学习笔记:direct3d的基本知识和初始化
<br />1.表面(Surface)<br />typedefstruct D3DSURFACE_DESC {<br /> D3DFORMAT Format;<br /> D3DRESOURCETYPE Type;<br /> DWORD Usage;<br /> D3DPOOL Pool;<br /> D3DMULTISAMPLE_TYPE MultiSampleType;<br /> DWORD
2010-07-31 00:29:00 1452
原创 windows程序设计笔记:显示文字
绘制和更新在Windows中,只能在窗口的显示区域绘制文字和图形,Windows是一个消息驱动系统。它通过把消息投入应用程序消息队列中或者把消息发送给合适的窗口消息处理程序,将发生的各种事件通知给应用程序。Windows通过发送WM_PAINT消息通知窗口消息处理程序,窗口的部分显示区域需要绘制。1.WM_PAINT消息2.1以下情况窗口消息处理程序会接收到一个WM_PAINT消息:1.移动窗口或显示窗口时,窗口中先前被隐藏的区域重新可见。2.改变窗口的大小(如果窗口类别样式有着CS_HREDRAW和CS_
2010-07-31 00:03:00 1602
原创 第一个windows程序(windows程序设计笔记)
以下内容大多由《Windows程序设计》,《VC++深入详解》等书籍以及MSDN,网上一些资料和本人的理解整合而来,以作笔记之用。---------------------------------------------------------------------------------------------1.几个常用的术语:API(Application Programming Interface)应用程序编程接口SDK(Software Development Kit)软件开发包2.匈牙利符号表
2010-07-26 14:51:00 1216
原创 direct学习笔记-数学基础
以下的大部分内容来源于Introduction.To.Direct3D9中文版(翁云兵版),《3D图形与数学基础》和网上的一些资料,本人根据这些内容作了一些笔记。1.数学基础1.1坐标系坐标系主要分2种,左手坐标系和右手坐标系。左手坐标系右手坐标系注:directx3d使用左手坐标系,opengl使用右手坐标系。1.2向量1.3矩阵1.4 点1.5 面
2010-07-19 23:47:00 964
原创 2009-11-04 东鳞西爪c++学习日记之静态成员
注:东鳞西爪c++学习日记系列的内容为本人学习C++程序设计语言(特别版)时不懂在网络寻求帮助,所以内容大多来源于网络 静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。#includeusing namespace std;class Internet{public: Inter
2009-11-04 21:02:00 469
原创 2009-11-04 malloc
C语言的动态存储管理由一组标准库函数实现,其原型在标准文件里描述,需要用这些功能时应包含这个文件。与动态存储分配有关的函数共有四个,其中就包括存储分配函数malloc()。函数原型是:void *malloc (size_t n);这里的size_t是标准库里定义的一个类型,它是一个无符号整型。这个整型能够满足所有对存储块大小描述的需要,具体相当于哪个整型由具体的C系统确定。malloc的返回值为
2009-11-04 17:03:00 385
原创 2009-11-04 C++笔记摘录
2009-11-04 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。 引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量
2009-11-04 17:02:00 330
原创 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
2009-11-04 17:00:00 347
原创 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
2009-11-04 16:55:00 485
原创 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(
2009-10-26 23:20:00 520
原创 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;
2009-10-20 22:34:00 473
原创 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;
2009-10-19 23:00:00 430
原创 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
2009-10-17 23:50:00 531
原创 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;
2009-10-16 23:18:00 560
原创 国庆c语言日记(结构2)
//复合文字#include#define MAXTITL 41#define MAXAUTL 31struct book { char title[MAXTITL]; char author[MAXAUTL]; float value;};int main(void){ struct book
2009-10-07 22:06:00 901
原创 国庆c语言日记(结构)
C编译器对结构空间缺省的分配 在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间;各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。在缺省情况下,C编译器为
2009-10-06 10:58:00 643
原创 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");
2009-09-28 23:34:00 338
原创 090924c语言学习日记(13章)
#include #include #include /* Macintosh adjustment */int main(int argc, char *argv[]){ int ch1, ch2; FILE * f1; FILE * f2; argc = ccommand(&argv); /* Macintos
2009-09-24 00:05:00 375
原创 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
2009-09-23 01:00:00 398
原创 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
2009-09-22 00:33:00 441
原创 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
2009-09-20 01:26:00 403
原创 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
2009-09-16 23:24:00 417
原创 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
2009-09-14 00:01:00 433
原创 090913c语言笔记(字符串输出)
#include #include /* for atof() */#include /* for pow() *//* #include */ /* Macintosh adjustment */int main(int argc, char *argv[]){ double num,
2009-09-13 00:31:00 539
原创 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);//按长度递增
2009-09-12 19:45:00 589
原创 090909c++语言学习日记(命名空间)
#includeint main(void){ cout<<"hello"<<endl; system("pause"); return 0;} #includeint main(void){ std::cout<<"hello"<<std::endl; system("pause"); return 0;}
2009-09-09 23:41:00 304
原创 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:
2009-09-09 23:29:00 410
原创 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
2009-09-09 08:40:00 552
原创 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)
2009-09-08 13:42:00 449
原创 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
2009-09-06 21:31:00 596
原创 090904c语言学习日记
#includeint put2(cnost char *string){ int count=0; while(*string) { putchar(*string++); count++; } putchar(/n); return (count);} #includevoid
2009-09-04 22:39:00 461
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人