岁月流转,往昔空明

C++博客 首页 新随笔 联系 聚合 管理
  118 Posts :: 3 Stories :: 413 Comments :: 0 Trackbacks
-----------------------------------------------------------------------------------------
4月20日5:00pm更新
点此下载):
添加了使用多个Color Attachment的方法;
补充了Kernel接口以支持多次迭代运算;
添加了Timer类,使用RDTSC时间戳计时,可以用于Benchmark(注意时间戳可能在多核CPU上存在计时不准的问题)。
-----------------------------------------------------------------------------------------

Blog已经被我荒废了不短的时间,看看名次也理所当然的下降了,呵呵。

最近由于Paper需要,正在写GPGPU的程序。我本来是个GL盲,这任务也确实有点紧迫了。不过好在有GPGPU Math Tutorial和libglsl的帮助,从昨天晚上开始看,到现在终于搞定了。

整体来说这架构也就2个部分,Kernel和GraphicProcessor。前者主要就是设置Shader和Shader里面的参数,后者主要是设置运行时的GL环境。本来GPGPU的Tutorial是可以支持Ping Pong方式的纹理使用,但是考虑到程序复杂度,最终我还是觉得就一个目标纹理来的要舒服一点。至于Ping Pong,可能等需要的时候再支持吧。(4月20日更新已经支持啦~不过需要手工配置如何交叉使用纹理)

源代码点此下载

额外补充一点的是,最好是将Benchmark工作放置在Kernel的环境创建点之后和环境销毁点之前。这是因为设置FBO的时间实在是太长太长了。在我的慢速版的ATI 9600XT上(175/175MHZ,因为显卡芯片风扇坏了,只能减速运行了。。。),对一个RGBA32F的1024×1024的纹理进行运算,逐个浮点求sin(没有做Cache优化),耗时0.11s左右,CPU的版本(当然是Release啦,没有特别的优化),0.9s左右。但是那个可恶的glFramebufferTexture2DEXT调用却吃了我0.8s的时间。。。OTZ。。。。

忘了说了,4-20版的代码,需要有个叫<platform/typedef.h>的头文件。文件因为在其它目录下就没有打到包中。这里给出源代码就是了。
 1#ifndef _TYPEDEF_H
 2#define _TYPEDEF_H
 3
 4#if _MSC_VER >= 1200
 5    
 6typedef unsigned __int8        uint8;
 7typedef unsigned __int16        uint16;
 8typedef unsigned __int32        uint32;
 9typedef unsigned __int64        uint64;
10
11typedef __int8    int8;
12typedef __int16    int16;
13typedef __int32    int32;
14typedef __int64    int64;
15
16typedef uint8        byte;
17typedef uint16    word;
18typedef uint32    dword;
19typedef uint64    qword;
20
21#endif
22
23#endif

posted on 2007-04-19 20:09 空明流转 阅读(1303) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理