/********************************
* Author: rabbit729
* E-mail: wlq_729@163.com
* Date: 2012-10-08
* Description: 图像的平滑
********************************/
#include <d3dx9.h>
//-----------------------------------------------------------------------------
// Desc: 全局变量
//-----------------------------------------------------------------------------
LPDIRECT3D9 g_pD3D = NULL; //Direct3D对象
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; //Direct3D设备对象
LPDIRECT3DTEXTURE9 g_pTextureScreen = NULL; //待处理图片
ID3DXEffect* g_pEffect = NULL; //效果指针
//常量句柄
D3DXHANDLE hTechScreen = NULL; //Effect句柄
D3DXHANDLE hTexScreen = NULL; //纹理句柄
D3DXHANDLE hViewPortWidthInv = NULL; //视口宽倒数句柄
D3DXHANDLE hViewPortHeightInv = NULL; //视口高倒数句柄
LPDIRECT3DVERTEXBUFFER9 g_pScreenSpaceQuad = NULL; //背板VB
const int WIDTH = 465;
const int HEIGHT = 669;
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_TEX1)
struct Vertex
{
Vertex(){}
Vertex(float x, float y, float z, float w)
{
_x = x; _y = y; _z = z; _w = w;
}
float _x, _y, _z, _w;
static const DWORD FVF;
};
const DWORD Vertex::FVF = D3DFVF_XYZW;
//-----------------------------------------------------------------------------
// Desc: 设置世界矩阵
//-----------------------------------------------------------------------------
VOID SetWorldMatrix()
{
//创建并设置世界矩阵
D3DXMATRIXA16 matWorld, matRotateX, matRotateY;
D3DXMATRIXA16 matScale;
D3DXMatrixIdentity(&matScale);
matScale._11 = matScale._22 = matScale._33 = 0.5f;
D3DXMatrixIdentity(&matWorld);
D3DXMatrixIdentity(&matRotateX);
D3DXMatrixIdentity(&matRotateY);
D3DXMatrixRotationX( &matRotateX, D3DX_PI / 3.0 );
D3DXMatrixRotationY( &matRotateY, -D3DX_PI / 8.0 );
D3DXMatrixMultiply(&matWorld, &matRotateX, &matRotateY);
D3DXMatrixMultiply(&matWorld, &matScale, &matWorld);
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
}
//--------------------------------------------------------
图像处理常用算法GPU实现四:基于中值滤波的二值图像平滑
最新推荐文章于 2024-05-13 10:45:35 发布
本文介绍了如何利用GPU进行图像处理,具体讲解了基于中值滤波的二值图像平滑算法。通过示例Effect代码展示了实现过程,并给出了原图和平滑后的效果对比。
摘要由CSDN通过智能技术生成