【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 3241|回复: 3

[求助]老鼠再进来一下:DirectX9如何取得精灵边缘?

[复制链接]
发表于 2006-8-26 22:37:16 | 显示全部楼层 |阅读模式

看了一些资料,但都是DirectX7或更低版的方法。
有没有哪个能回贴告诉我呀!!!
谢谢先……

[此贴子已经被作者于2006-9-3 22:36:37编辑过]
发表于 2006-8-27 14:58:49 | 显示全部楼层

算边缘?做什么用呢?这个程序可能不简单

我能想到怎么算精灵所占的区域,边缘还没做过

 楼主| 发表于 2006-8-29 16:28:25 | 显示全部楼层

这时一篇查找精灵边缘的方法文章,但不很具体,只要知道在DirectX9中如何自由得到图片中某个的像素点颜色,我们就可以用下面的计算来搞定边边缘计算了。

楼上“老鼠”兄我看过你很多文章,还望指点一二,谢啊。

  “精灵”可谓笔者最讨厌的一个字眼,太多的游戏编程者们使用“精灵”这一词,更是使笔者感到烦感。这回只是为了给大家说明一下问题所以才使用了“精灵”这一词汇。

  在很多游戏中,将鼠标移到人物上,人物的边缘上就会出现一道光边。这也就是笔者将要和大家讨论的,如何找出这一边缘。

  其实要找出它也不难,在游戏所使用的图片中,都包含有透明色和不透明色两部分,那么问题就很简单了,在透明色和不透明色相接的地方就是边缘。请看下面的程序:

程序功能:画指定区域图像的边缘在指定位置
x,y :画边缘的坐标地址
x1,y1 :指定区域左上角的坐标
x2,y2 :指定区域右下角的坐标
TColor:透明色
var16 i,j;
uvar16 Color,TColor;

for(i=y1;i<=y2;i++)
for(j=x1;j<=x2;j++)
{
Color=GetPixel(j,i);
if(Color!=TColor) //如果这个点不是透明色
{
if(j==x1||GetPixel(j-1,i)==TColor)PutPixel(j-x1+x-1,i-y1+y );
if(j==x2||GetPixel(j+1,i)==TColor)PutPixel(j-x1+x+1,i-y1+y );
if(i==y1||GetPixel(j,i-1)==TColor)PutPixel(j-x1+x ,i-y1+y-1);
if(i==y2||GetPixel(j,i+1)==TColor)PutPixel(j-x1+x ,i-y1+y+1);
}
}

发表于 2006-11-9 15:04:33 | 显示全部楼层

很抱歉,现在才看到你的帖子

也同时谢谢你提供的程序~!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-2-6 04:13

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表