D3D三层Texture纹理经像素着色器实现渲染YUV420P 第二版


D3D三层Texture纹理经像素着色器实现渲染YUV420P全工程源码,VS2013编译通过。修正了画质问题。运行前确保安装了DirectX9.
资源截图
代码片段和文件信息
//////////////////////////////////////////////////////////////////////////////////////////////////
// 
// File: d3dUtility.cpp
// 
// Author: Frank Luna (C) All Rights Reserved
//
// System: AMD Athlon 1800+ XP 512 DDR Geforce 3 Windows XP MSVC++ 7.0 
//
// Desc: Provides utility functions for simplifying common tasks.
//          
//////////////////////////////////////////////////////////////////////////////////////////////////

#include “d3dUtility.h“

// vertex formats
const DWORD d3d::Vertex::FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1;


bool d3d::InitD3D(
HINSTANCE hInstance
int width int height
bool windowed
D3DDEVTYPE deviceType
IDirect3DDevice9** device)
{
//
// Create the main application window.
//

WNDCLASS wc;

wc.style         = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc   = (WNDPROC)d3d::WndProc; 
wc.cbClsExtra    = 0;
wc.cbWndExtra    = 0;
wc.hInstance     = hInstance;
wc.hIcon         = LoadIcon(0 IDI_APPLICATION);
wc.hCursor       = LoadCursor(0 IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockobject(WHITE_BRUSH);
wc.lpszMenuName  = 0;
wc.lpszClassName = “Direct3D9App“;

if( !RegisterClass(&wc) ) 
{
::MessageBox(0 “RegisterClass() - FAILED“ 0 0);
return false;
}

HWND hwnd = 0;
hwnd = ::CreateWindow(“Direct3D9App“ “Direct3D9App“ 
WS_EX_TOPMOST
0 0 width height
0 /*parent hwnd*/ 0 /* menu */ hInstance 0 /*extra*/); 

if( !hwnd )
{
::MessageBox(0 “CreateWindow() - FAILED“ 0 0);
return false;
}

::ShowWindow(hwnd SW_SHOW);
::UpdateWindow(hwnd);

//
// Init D3D: 
//

HRESULT hr = 0;

// Step 1: Create the IDirect3D9 object.

IDirect3D9* d3d9 = 0;
    d3d9 = Direct3DCreate9(D3D_SDK_VERSION);

    if( !d3d9 )
{
::MessageBox(0 “Direct3DCreate9() - FAILED“ 0 0);
return false;
}

// Step 2: Check for hardware vp.

D3DCAPS9 caps;
d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT deviceType &caps);

int vp = 0;
if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )
vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;
else
vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;

// Step 3: Fill out the D3DPRESENT_PARAMETERS structure.

D3DDISPLAYMODE        d3ddm;
UINT adapter = D3DADAPTER_DEFAULT;

IDirect3D9_GetAdapterDisplayMode(d3d9 adapter &d3ddm);

// 默认不使用多采样
D3DMULTISAMPLE_TYPE multiType = D3DMULTISAMPLE_NONE;
if(d3d9->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT
D3DDEVTYPE_HAL D3DFMT_A8R8G8B8 !windowed
D3DMULTISAMPLE_4_SAMPLES
NULL) == D3D_OK)
{
// 保存多采样类型
multiType = D3DMULTISAMPLE_4_SAMPLES;
}
 
D3DPRESENT_PARAMETERS d3dpp;
d3dpp.BackBufferWidth            = width;
d3dpp.BackBufferHeight           = height;
d3dpp.BackBufferFormat           = D3DFMT_A8R8G8B8;
d3dpp.BackBufferCount            = 1;
d3dpp.MultiSampleType            = multiType;
d3dpp.MultiSampleQuality         = 0;
d3dpp.SwapEffect                 = D3DSWAPEFFE

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-12-13 22:25  MultiTexture
     目录           0  2016-12-13 22:25  MultiTextureBackup
     文件         902  2016-11-29 16:20  MultiTextureBackupMultiTexture.sln
     目录           0  2016-12-13 22:25  MultiTextureDebug
     文件       89600  2016-12-13 22:25  MultiTextureDebugMultiTexture.exe
     文件      585420  2016-12-13 22:25  MultiTextureDebugMultiTexture.ilk
     文件     1314816  2016-12-13 22:25  MultiTextureDebugMultiTexture.pdb
     文件     1892184  2009-09-04 17:29  MultiTextureDebugd3dx9_42.dll
     文件         495  2016-12-02 23:15  MultiTextureDebugps_multitex.txt
     目录           0  2016-12-13 22:25  MultiTextureMultiTexture
     目录           0  2016-12-13 22:25  MultiTextureMultiTextureDebug
     文件        7696  2016-11-30 17:39  MultiTextureMultiTextureDebugBuildLog.htm
     文件        1174  2016-12-05 20:17  MultiTextureMultiTextureDebugMultiTexture.Build.CppClean.log
     文件        1826  2016-12-13 22:25  MultiTextureMultiTextureDebugMultiTexture.log
     目录           0  2016-12-13 22:25  MultiTextureMultiTextureDebugMultiTexture.tlog
     文件       61726  2016-12-13 22:25  MultiTextureMultiTextureDebugMultiTexture.tlogCL.read.1.tlog
     文件        1308  2016-12-13 22:25  MultiTextureMultiTextureDebugMultiTexture.tlogCL.write.1.tlog
     文件         156  2016-12-13 22:25  MultiTextureMultiTextureDebugMultiTexture.tlogMultiTexture.lastbuildstate
     文件        1250  2016-12-13 22:25  MultiTextureMultiTextureDebugMultiTexture.tlogcl.command.1.tlog
     文件        1364  2016-12-13 22:25  MultiTextureMultiTextureDebugMultiTexture.tloglink.command.1.tlog
     文件        3028  2016-12-13 22:25  MultiTextureMultiTextureDebugMultiTexture.tloglink.read.1.tlog
     文件         518  2016-12-13 22:25  MultiTextureMultiTextureDebugMultiTexture.tloglink.write.1.tlog
     文件      198778  2016-12-05 20:17  MultiTextureMultiTextureDebugd3dUtility.obj
     文件          67  2016-11-30 17:39  MultiTextureMultiTextureDebugmt.dep
     文件      191514  2016-12-13 22:25  MultiTextureMultiTextureDebugps_multitex.obj
     文件     1010688  2016-12-13 22:25  MultiTextureMultiTextureDebugvc120.idb
     文件      684032  2016-12-13 22:25  MultiTextureMultiTextureDebugvc120.pdb
     文件        4232  2016-11-29 16:25  MultiTextureMultiTextureMultiTexture.vcproj
     文件        1419  2016-11-30 17:40  MultiTextureMultiTextureMultiTexture.vcproj.DQ-DEV32-PC.DQ-DEV32.user
     文件        5078  2016-12-03 22:00  MultiTextureMultiTextureMultiTexture.vcxproj
     文件        1170  2016-12-03 22:00  MultiTextureMultiTextureMultiTexture.vcxproj.filters
............此处省略171个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)