首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 怎样利用GPU做插值运算
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jj456
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-03-09 16:26:09 楼主
    比如说2张图,image1,image2
    分别glTexImage2D之后。
    对于其中的fragment 部分进行编程:
    struct C3E3f_Output {
    5 float4 color : COLOR;
    6 };
    7
    8 C3E3f_Output C3E3f_texture(float2 texCoord : TEXCOORD0,
    9 uniform sampler2D decal : TEX0)
    10 {
    11 C3E3f_Output OUT;
    12 OUT.color = lerp(tex2D(decal,texCoord),tex2D(decal,texCoord),0.5);
    13 return OUT;
    15 }
    两者相当于做了一次alpha blending,这样是比较容易的。
    我现在问题是:如果我希望将第一幅图的第一行放到我结果的第一行,第2副图的第一行为我结果图的第2行,第1副图的第2行为结果图的第3行……,这样交叉放置的话,该怎么做。
    传入进来的texCoord 参数是个float型的,貌似不能进行奇偶判断。这样的话,我最终结果图就将比原来的图要大2倍了。
    一直没有找到比较好的方法。
    望各位指点下。
    thanks
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • coy_zhangce
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-21 11:09:081楼 得分:0
    下面的是一个基于HLSL的解决方法。不是基于CUDA的。
    第一:首先把两张图画到一张RenderTarget上去,如果原图是512×512的,那么RenderTarget需要是1024×512的。新图上半部分是原图1,下半部分是原图2.
    第二:自己造一个1024×1的纹理NewTex。每个像素用一个通道表示偏移量。如第一个点没有偏移量,第二个点有1/1024的偏移量(就是指把这行画到第3行),第三个点有-1/1024的偏移量(就是指把这行画到第2行)。
          余下的是什么你自己想吧。
    第三:用NewTex过滤一次原来的纹理,texCoord.x = tex2D(NewTex,texCoord).x+texCoord.x; 然后再用texCoord查找就可以了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szmuma
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-23 17:22:582楼 得分:0
    支持一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qin_y_j
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2009-02-03 14:28:463楼 得分:0
    用CUDA会方便很多
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sicanier
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2009-06-23 20:28:174楼 得分:0
    非常想学学
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • darkstorm2111203
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2009-06-24 12:12:525楼 得分:0
    可以用CUDA 纹理存储器的线性过滤模式实现
    修改 删除 举报 引用 回复