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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

查看: 4830|回复: 9

请问如何在D3D里设置透明色(类似于DirectDraw里的colorkey)

[复制链接]
发表于 2006-7-31 03:57:49 | 显示全部楼层 |阅读模式
刚刚从DirectDraw转入D3D,发现D3DXLoadSurfaceFromFile有个参数是D3DCOLOR ColorKey,想用这个来设置透明色,结果在渲染到表面的时候发现想设置透明的地方全部变成了黑色。
载入带有透明区域的png图片,结果在渲染到表面的时候那些本应透明的区域全部变成了白色。
请问这是怎么回事啊,是不是参数设置错误或者漏了什么步骤?知道的大哥稍微点拨一下啊,谢谢了!
 楼主| 发表于 2006-7-31 03:58:16 | 显示全部楼层
D3DXLoadSurfaceFromFile( Surface,NULL,NULL,"pic.bmp",NULL,D3DX_DEFAULT,D3DCOLOR_ARGB(255,255,0,0),NULL );
载入图片以后,在渲染函数中
D3dDevice->StretchRect( Surface,NULL,BackBuffer,NULL,D3DTEXF_NONE );
发现渲染出来的图片本该变成透明的地方全部变成了黑色![em04]
 楼主| 发表于 2006-7-31 03:59:06 | 显示全部楼层
第一来这个论坛,发现讨论的问题都很不错,对我这个新手帮助大啊!
发表于 2006-7-31 08:52:43 | 显示全部楼层

D3DCOLOR_ARGB(255,255,0,0) 这个颜色是你的key色RGB值吗?

 楼主| 发表于 2006-8-1 13:40:06 | 显示全部楼层

哦。D3DCOLOR_ARGB(255,255,0,0)或者D3DCOLOR_ARGB(0,255,0,0)的时候都是黑色的。想用红色作为色彩键,但是想透明的部分非但没透明还全部变成了黑色!

这一部解决不了就没办法做2D游戏了,感觉还是DDRAW时代比较顺手啊,哎!

PS:鼯鼠老大能不能提供一些用ID3DXSPRITE来搞2D图形的资料啊,发现这方面的教程都找不到啊

发表于 2006-8-1 16:21:44 | 显示全部楼层
 楼主| 发表于 2006-8-2 13:01:00 | 显示全部楼层
谢谢!你的这篇文章真棒!
发表于 2006-8-3 12:22:16 | 显示全部楼层

在load材质的时候用colorkey,或者用alpha test也行。

发表于 2006-8-4 22:22:24 | 显示全部楼层

我也是D3D初学者,刚看了鼯鼠老大那篇介绍ID3DXSPRITE的文章,获益非浅。只是还有些不明白的,想请教下。

1.多个精灵怎么办呢?是定义多个pSprite指针吗?(即LPD3DXSPRITE pSprite1; LPD3DXSPRITE pSprite2;)

2.多个精灵也只需要一个平面,或是多个平面,如果是一个平面的话,对于重叠的纹理是否要使用纹理混合来实现呢?

3.使用文理的方法实现2D,那怎么进行有效的碰撞检测呢?

谢谢

[em06]
发表于 2006-8-5 15:23:08 | 显示全部楼层
以下是引用thor在2006-8-4 22:22:24的发言:

我也是D3D初学者,刚看了鼯鼠老大那篇介绍ID3DXSPRITE的文章,获益非浅。只是还有些不明白的,想请教下。

1.多个精灵怎么办呢?是定义多个pSprite指针吗?(即LPD3DXSPRITE pSprite1; LPD3DXSPRITE pSprite2;)

2.多个精灵也只需要一个平面,或是多个平面,如果是一个平面的话,对于重叠的纹理是否要使用纹理混合来实现呢?

3.使用文理的方法实现2D,那怎么进行有效的碰撞检测呢?

谢谢

[em06]

你还没有明白精灵绘制的原理才有这样的问题

你动手做一下就知道了,这几个问题就不是问题了

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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