社区
图形处理/算法
帖子详情
D3D 中的图片的淡入淡出效果?
cytlyy
2009-03-09 11:58:20
首先说明一下,我是在windows mobile下用Direct3d mobile实现mobile下的3d效果的,现在我想问一下如何实现一幅图片的的淡入淡出效果(图片是先load到surface然后StretchRect到要渲染的TEXTURE上的 ),我知道最好的方法应该是用模板缓存技术。但对这个不太熟悉。希望达人指点,最好有些代码,这样容易理解,方便我一直到windows mobile上。谢谢!
...全文
115
1
打赏
收藏
D3D 中的图片的淡入淡出效果?
首先说明一下,我是在windows mobile下用Direct3d mobile实现mobile下的3d效果的,现在我想问一下如何实现一幅图片的的淡入淡出效果(图片是先load到surface然后StretchRect到要渲染的TEXTURE上的 ),我知道最好的方法应该是用模板缓存技术。但对这个不太熟悉。希望达人指点,最好有些代码,这样容易理解,方便我一直到windows mobile上。谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
leechrockgames
2009-03-09
打赏
举报
回复
D3DLOCKED_RECT stLockedRect;
(*ppTexture)->LockRect( 0, &stLockedRect, 0, 0 );
UCHAR *pch=(UCHAR *)stLockedRect.pBits;
for (int j=0;j<h;j++)
{
for (int i=0;i<w;i++)
{
pch[3]=AlphaData[i+j*w];
if(pch[3]!=0)//pch[3] may by is -120
{
if(!mode)//3d ob static
{
if(alpha-AlphaData[i+j*w]+255>0)
{pch[3]=alpha-AlphaData[i+j*w]+255;}
else{pch[3]=0;}
}
else//3d fog static
{
if(AlphaData[i+j*w]-alpha>0)
{pch[3]=AlphaData[i+j*w]-alpha;}
else{pch[3]=0;}
}
}
pch+=4;
}
}
(*ppTexture)->UnlockRect(0);
设置纹理的alpha值,但d3d渲染还有相关的设置.
//D3DRS_DITHERENABLE:使程序允许抖动,默认是FALSE。
m_pd3dDevice->SetRenderState( D3DRS_DITHERENABLE, TRUE );
// Turn on the zbuffer
m_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );//激活深度缓冲区P157
m_pd3dDevice->SetRenderState( D3DRS_ZFUNC, D3DCMP_LESS );//设置深度深度函数P157
m_pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE, TRUE);//允许应用程序在绘制像素时更新深度缓冲区;P158
// Turn off culling render mode
m_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );//设置整体环境光;P92
m_pd3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID );//D3DFILL_WIREFRAME//D3DFILL_SOLID渲染面模式;P168
m_pd3dDevice->SetRenderState( D3DRS_SHADEMODE, D3DSHADE_GOURAUD );
// Turn off D3D lighting
m_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );//激活对景物进行光照运算x
// Turn on ambient lighting
//D3DCOLOR ambientcolor=D3DCOLOR_XRGB(64,64,64);
//m_pd3dDevice->SetRenderState( D3DRS_AMBIENT, 0xffffffff );
//激活多重采样;P173(除锯齿)
m_pd3dDevice->SetRenderState( D3DRS_MULTISAMPLEANTIALIAS, false );
// Set default render states
// 用于设置顶点与纹理混合
m_pd3dDevice->SetRenderState( D3DRS_NORMALIZENORMALS, TRUE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
//D3DSAMP_MINFILTER:缩小过滤器,用于纹理缩小时减少闪烁失真
//D3DSAMP_MAGFILTER:放大过滤器,用于纹理放大时,减少出现色块
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
//多级渐进纹理(用于设置各纹理层间的设置)
//D3DSAMP_MIPFILTER:设置多级渐进纹理过滤
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR );
//纹理拉伸(不复制纹理,作边缘像素的拉伸);P140
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP );
m_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP );
用Direct
3D
设计
淡入淡出
的
效果
(演示程序)
此资源是演示程序,不用积分即可下载。 ---------------------------------------------------------------- 以前写过一篇有关用Direct
3D
设计
淡入淡出
的
效果
的文章,现在看来那真是煞笔啊。一年多后,我自己又深入地了解了Direct
3D
的原理,再加上自己的一些实验,现在终于实现了淡入·淡出
效果
。 为了帮助速成,我就简单地说。在光栅化的时候,将会执行颜色混合的操作。这里也包括Alpha混合。由于微软的Direct
3D
是不开源的,所以我们无法接触每一个像素的值,但是微软为我们提供了一些函数,使用这些函数我们可以几近完全控制我们想要的
效果
。在纹理和顶点混合的初期,我们可以调用IDirect
3D
Device9::SetTextureStageState函数来进行操作。下面是这个函数的声明: HRESULT SetTextureStageState( DWORD Stage, D
3D
TEXTURESTAGESTATETYPE Type, DWORD Value )
使用Direct
3D
实现如幻灯片的动态
图片
切换
效果
---SlideShowD
3D
支持3种图像切换特效(
淡入淡出
、水平扫描、百叶窗),利用Direct
3D
进行画图。
D
3D
11_ScreenFade
D
3D
11_ScreenFade
高仿d3.js官网照片墙
此demo为高仿的d3.js的照片墙,如有需要自行下载。 本次demo使用的是d3.v5.min.js 版本
JS的100多个犀利
效果
(有
效果
图,有代码)
网页
中
的各种JS神奇
效果
,有源码,有
图片
,可直接拿进自己项目
中
用。
图形处理/算法
19,468
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章