谁能帮助我如何使用 DirectX9(d3d 的 2d 图形功能)进行 .png 图像模糊,而不使用高级着色器语言(HLSL)、Direct3D 每像素运动模糊和顶点着色器等高级 3d 功能。
详细解释:
我在表面上有一行 6 个相邻的 .png 图像(6 个 Sprite 纹理),然后我以圆形方式(1->2->3->4->5->6 连续移动/更改纹理位置->1->2->3->4->5->6) 具有不同的 alpha 分量,以获得旋转效果(二维旋转)的感觉。
问题:
即使使用不同的精灵纹理 alpha 值和不同的每秒帧数(fps),除了连续的图像变化之外,我也没有真正感受到旋转的感觉。经过这么多网络搜索后,我发现如果我在 .png 文件中动态应用模糊效果(高斯模糊/框模糊),就有可能获得旋转效果。
但是由于我的目标平台中的 3d 支持限制,除了 2d 功能之外,我不能使用 direct3d 的高级 3d 功能来获得旋转效果(一种运动模糊)。
我热烈欢迎论坛成员的友好帮助/建议/示例代码/指导我解决这个问题的正确路径。
示例代码:
void D3DGraphics::DrawSprite(LPDIRECT3DTEXTURE9 &texture,ID3DXSprite* pSprite, DXVECTOR2 Trans_11, int ImgIndex) {
D3DXMATRIX Matrix;
pDevice->Clear( 0,NULL,D3DCLEAR_STENCIL,D3DCOLOR_XRGB(0,0,0),0.0f,0 );
pSprite->Begin(D3DXSPRITE_ALPHABLEND);
D3DXMatrixTransformation2D(&Matrix, NULL, NULL, NULL, NULL, 0, &Trans_11);
pSprite->SetTransform(&Matrix1);
--> Need blur effect before write operation / while loading .png file as texture <---
pSprite->Draw(texture[ImgIndex], NULL, NULL, NULL, 0xFFFFFFFF);
pSprite->End();
}