渲染管线就是在给定一个3D场景和摄像机时,根据摄像机的视角生成一幅2D图像的一系列步骤,类似于流水线作业。 一、IA-从内存读取几何数据(顶点和索引) ID3D10InputLayout 输入布局 1. 创建一个D3D1_INPUT_ELEMENT_DESC结构体 2. 调用CreateInputLayout方法 ID3D10Buffer 缓冲区 1. 创建一个D3D10_BUFFER_DESC结构体,描述要创建的缓冲区 2. 创建一个D3D10_SUBRESOURCE_DATA,指定缓冲区的初始化数据 3. 调用CreateBuffer方法 创建完顶点缓冲区(通过指定bindflag创建不同类型的缓冲区),需要绑定到设备的输入槽上(input slot),这样的话顶点数据就会进入pipeline。 ID3D10Device::IASetVertexBuffers(…) 把顶点缓冲区指定好输入槽只是绘制前的准备工作,需要调用ID3DDevice::Draw方法来进行绘制 图元拓补(Primitive Topology),顶点缓冲区只是一个顶点列表,设备不知道如何解释这些顶点,这就需要设置图元拓补来告诉Device如何解释这些顶点来构成图元,IASetPrimitiveTopology() typedef enum D3D10_PRIMITIVE_TOPOLOGY

Read More

Ansi, 只存储ASC字符,每个字符占1个字节。比如abc存成Ansi文件,大小为3字节。 二进制表示: 61 62 63 Unicode, 每个unicode字符占2个字节,可以表示各种字符。在unicode的文件的头两个字节存储FF FE,用来表示这是一个Unicode文件。比如abc存成Unicode文件,大小为2*3+2 = 8字节。 文件的二进制表示: FF FE 61 00 62 00 63 00, a编码为61 00, 占连个字节,编码从高字节开始。 Unicode big

Read More

递归生成某集合的所有序列: 递归生成某集合的所有子集: 设集合X (A1, A2, A3,…, An)的所有子集为S[X(n)],从集合X中移走A1的子集X(n-1)的所有子集集合记为S[X(n-1)] S[X(n)] = S[X(n-1)] ∪ {S[X(n-1)]每个子集加上A1} 例如 集合{A, B, C} {A}: {} {A} {A B}: {} {A} ∪ {B}

Read More