2013年2月19日

DirectShow研究总结

摘要: 关菊要求的视频播放功能,终于在花费了N天研究、查阅无数MSDN资料、翻阅各种例子之后愣是搞出来了。再次感谢保济丸的大力支持和帮助。视频播放功能会集成在f2d 0.3中,现在离发布0.3版还早,先发个帖子以示后人。1、为了将DirectShow和f2d的流系统结合起来费了一番功夫,最后只要抄袭下WindowsSDK中的memfile实现,覆写CAsyncStream和CAsyncReader两个类即可。实现这个SourceFilter(源过滤器)时需要向下游递交媒体类型,一般而言只要让主类型为Stream,次类型为NULL即可。然后IGraphBuilder会自行去挂接整个图。但是对于AVI格式 阅读全文

posted @ 2013-02-19 23:44 ⑨chu 阅读(543) 评论(0) 推荐(0) 编辑

2012年12月1日

【教程】使用DX9做一个2D游戏(1)

摘要: 本文最先发表在贴吧,现在整理到此处,之后所有更新将在这里进行。by Chu @ XDU 2012/11/25版权所有,禁止用于商业用途。转载请注明出处。用DX9做一个2D游戏显然不是一件容易的事情。本文主要面向所有初学者所写,因此会广而不精地讲解2D游戏编程中遇到的各方面东西,主要以API为讲解对象。至于算法,因为不同游戏涉及的不一样,所以不一定会在下文讨论到。一、图形呈现过程【注:这部分内容其实应该和D3D一起讲,但是既然写在了前面,就先讲掉了,等用到的时候再回来看。】 对于游戏而言,最重要的就是视觉效果,于是怎么呈现图像,图像怎么呈现的,这是游戏编程中最核心的地方。 计算机中表示三维图形的 阅读全文

posted @ 2012-12-01 09:36 ⑨chu 阅读(3285) 评论(0) 推荐(0) 编辑

2012年11月25日

【笔记】 关于D3DComplie函数

摘要: 函数:【函数:http://msdn.microsoft.com/zh-cn/library/windows/desktop/dd607324%28v=vs.85%29.aspx】笔记:1、D3DComplie可以编译各种型号的Shader,其编译的Shader覆盖Shader级别9_1(DX9.0)到11(DX11),以及D3DXEffects2、如果在D3DComplie里面指定Shader等级为vs_3_0或者ps_3_0这样低于DX10版本的Shader时所编译出来的Shader只能在DX9 API上使用3、如果希望在DX10/DX11 API上只使用DX9等级特性(如vs_3_0), 阅读全文

posted @ 2012-11-25 10:39 ⑨chu 阅读(611) 评论(0) 推荐(0) 编辑

2012年11月19日

【翻译】D3D10/D3D11中的纹理资源

摘要: 本文翻译自DXSDK,其中DX11与DX10相一致,故只翻译了DX10部分。翻译:Chu @ XDU 2012/11/19转载请注明出处。纹理资源纹理资源是一种被设计用来结构化储存一系列像素的集合。不同于缓冲(Buffer),纹理可以在被Shader单元使用的时候被纹理采样器(Texture Sampler)过滤(Filter)①。纹理的类型决定了纹理是如何被过滤的。一个像素代表了能在管线中被读写的最小单位。每个像素由1到4个部分组成②,对应DXGI格式(见DXGI_FORMAT)中的一种。译注:①Shader读取纹理的时候由于有纹理采样器的影响,所得到的并不一定是原始的像素数据,而是经过插值 阅读全文

posted @ 2012-11-19 21:32 ⑨chu 阅读(2017) 评论(0) 推荐(0) 编辑

2012年10月31日

【转载】gzip原理与实现

摘要: 本文转载自网络,由于原文/作者不明,只好复制一份并整理好格式用以学习之用。如需声明出处或侵犯相关版权请与我联系gzip原理与实现 gzip 使用deflate算法进行压缩。zlib,以及图形格式png,使用的压缩算法也是deflate算法。从gzip的源码中,我们了解到了defalte算法的原理和实现。我阅读的gzip版本为 gzip-1.2.4。下面我们将要对deflate算法做一个分析和说明。首先简单介绍一下基本原理,然后详细的介绍实现。1 gzip所使用压缩算法的基本原理 gzip 对于要压缩的文件,首先使用LZ77算法的一个变种进行压缩,对得到的结果再使用Huffman编码的方法(实际 阅读全文

posted @ 2012-10-31 19:18 ⑨chu 阅读(594) 评论(0) 推荐(0) 编辑

[摘录] CRC32算法的实现

摘要: 一、CRC32表的产生 1 void GenerateCRC32Table(unsigned int Crc32Table[256]) 2 { 3 for (int i = 0; i < 256; i++) 4 { 5 unsigned int Crc = i; 6 for (int j = 0; j < 8; j++) 7 { 8 if (Crc & 1) 9 Crc = (Crc >> 1) ^ 0xEDB88320; 10 ... 阅读全文

posted @ 2012-10-31 14:57 ⑨chu 阅读(1319) 评论(0) 推荐(0) 编辑

导航