/********************************
* Author: rabbit729
* E-mail: wlq_729@163.com
* Date: 2012-09-23
* 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 );
}
//-----------------------------------------------------------------------------
// Desc: 设置观察矩阵和投影矩阵
//-------------------------------------------------------------------
图像处理常用算法GPU实现二:基于微分的边缘检测
最新推荐文章于 2023-08-21 15:23:26 发布