胡霍 君子之交淡如水交情淡,求一个数(0一9)之间

5123全讯网 - 搜一百频道
当前位置:→
5123全讯网
足球比赛带来一股足彩风
玩足彩不能没有5123全讯网
日期: &来源:本站整理
【上一文章&&没有了】//&IDirect3DDevice9*&_d3d_
//&set&alpha&blend&for&source color
&_d3d_device-&SetRenderState(D3DRS_SRCBLEND,&D3DBLEND_SRCALPHA);
&//&set&alpha&blend&for&dest
&&_d3d_device-&SetRenderState(D3DRS_DESTBLEND,&D3DBLEND_INVSRCALPHA);
D3DBLEND_SRCALPHA和D3DBLEND_INVSRCALPHA均为DirectX预定义的混合因子宏,来看看具体定义:
Defines the supported blend mode.
typedef enum D3DBLEND{
D3DBLEND_ZERO = 1,
D3DBLEND_ONE = 2,
D3DBLEND_SRCCOLOR = 3,
D3DBLEND_INVSRCCOLOR = 4,
D3DBLEND_SRCALPHA = 5,
D3DBLEND_INVSRCALPHA = 6,
D3DBLEND_DESTALPHA = 7,
D3DBLEND_INVDESTALPHA = 8,
D3DBLEND_DESTCOLOR = 9,
D3DBLEND_INVDESTCOLOR = 10,
D3DBLEND_SRCALPHASAT = 11,
D3DBLEND_BOTHSRCALPHA = 12,
D3DBLEND_BOTHINVSRCALPHA = 13,
D3DBLEND_BLENDFACTOR = 14,
D3DBLEND_INVBLENDFACTOR = 15,
D3DBLEND_FORCE_DWORD = 0x7fffffff,} D3DBLEND, *LPD3DBLEND;
D3DBLEND_ZERO Blend factor is (0, 0, 0, 0). D3DBLEND_ONE Blend factor is (1, 1, 1, 1). D3DBLEND_SRCCOLOR Blend factor is (Rs, Gs, Bs, As).
D3DBLEND_INVSRCCOLOR Blend factor is (1 - Rs, 1 - Gs, 1 - Bs,
1 - As). D3DBLEND_SRCALPHA Blend factor is (As, As, As, As).
D3DBLEND_INVSRCALPHA Blend factor is ( 1 - As, 1 - As, 1 - As,
1 - As). D3DBLEND_DESTALPHA Blend factor is (Ad Ad Ad Ad).
D3DBLEND_INVDESTALPHA Blend factor is (1 - Ad 1 - Ad 1 - Ad 1
- Ad). D3DBLEND_DESTCOLOR Blend factor is (Rd, Gd, Bd, Ad).
D3DBLEND_INVDESTCOLOR Blend factor is (1 - Rd, 1 - Gd, 1 - Bd,
1 - Ad). D3DBLEND_SRCALPHASAT Blend factor is (f, f, f, 1); where f = min(As, 1 - Ad).
D3DBLEND_BOTHSRCALPHA Obsolete. Starting with DirectX 6, you can achieve the same effect by
setting the source and destination blend factors to D3DBLEND_SRCALPHA and
D3DBLEND_INVSRCALPHA in separate calls. D3DBLEND_BOTHINVSRCALPHA Source blend factor is (1 - As, 1 - As, 1 - As,
1 - As), and destination blend factor is (As, As,
As, As); the destination blend selection is
overridden. This blend mode is supported only for the D3DRS_SRCBLEND render
state. D3DBLEND_BLENDFACTOR Constant color blending factor used by the frame-buffer blender. This
blend mode is supported only if D3DPBLENDCAPS_BLENDFACTOR is set in the
SrcBlendCaps or DestBlendCaps members of
. D3DBLEND_INVBLENDFACTOR Inverted constant color-blending factor used by the frame-buffer
blender. This blend mode is supported only if the D3DPBLENDCAPS_BLENDFACTOR
bit is set in the SrcBlendCaps or DestBlendCaps
members of D3DCAPS9. D3DBLEND_FORCE_DWORD Forces this enumeration to compile to 32 bits in size. Without this
value, some compilers would allow this enumeration to compile to a size
other than 32 bits. This value is not used.
In the preceding member descriptions, the RGBA values of the source and
destination are indicated by the s and d subscripts.
The values in this enumerated type are used by the following render states:
D3DRS_DESTBLEND
D3DRS_SRCBLEND
D3DRS_DESTBLENDALPHA
D3DRS_SRCBLENDALPHA
由于渲染管道流水线的默认Alpha颜色混合功能是禁用的,因此必须调用SetRenderState函数设置D3DRS_ALPHABLENDENABLE为true.
//&enable&alpha-blended&transparency
_d3d_device-&SetRenderState(D3DRS_ALPHABLENDENABLE,&true);
来看一个具体的例子:
需要在工程中设置链接d3dx9.lib d3d9.lib。
由于文件中用到了GE_APP这个类,它的具体使用说明请参阅
若发现代码中存在错误,敬请指出。
来看看AlphaBlend.h的定义:
/*************************************************************************************
&[Include&File]
&PURPOSE:&
&&&&Define&for&alpha&blend.
*************************************************************************************/
#ifndef&ALPHA_BLEND_H
#define&ALPHA_BLEND_H
struct&CUSTOM_VERTEX
&&&&float&x,&y,&z;
&&&&float&nx,&ny,&
#define&CUSTOM_VERTEX_FVF&&&(D3DFVF_XYZ&|&D3DFVF_NORMAL)
class&ALPHA_BLEND
&&&&IDirect3D9*&_d3d;
&&&&IDirect3DDevice9*&_d3d_
&&&&IDirect3DVertexBuffer9*&_vertex_buffer1;
&&&&IDirect3DVertexBuffer9*&_vertex_buffer2;
&&&&ALPHA_BLEND();
&&&&~ALPHA_BLEND();
&&&&bool&Create_D3D_Device(HWND&hwnd,&bool&full_screen&=&true);
&&&&bool&Init_Vertex_Buffer1();
&&&&bool&Init_Vertex_Buffer2();
&&&&void&Compute_Triangle_Normal(D3DXVECTOR3&&v1,&D3DXVECTOR3&&v2,&D3DXVECTOR3&&v3,&D3DVECTOR&&normal);
&&&&void&Set_Camera();
&&&&void&Set_Point_Light();
&&&&void&Set_Object_Material(D3DCOLORVALUE&&dif,&D3DCOLORVALUE&&amb,&D3DCOLORVALUE&&spe,&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&D3DCOLORVALUE&&emi,&float&power);
&&&&void&Render();
&&&&void&Release_COM_Object();
以上的头文件定义了两个三棱锥的顶点格式和顶点结构体,函数Init_Vertex_Buffer1个Init_Vertex_Buffer2分别用来装入这两个三棱锥的顶点数据,Render函数则设置了渲染管道流水线的
Alpha颜色混合状态值。
再来看看AlphaBlend.cpp的定义:
/*************************************************************************************
&[Implement&File]
&PURPOSE:&
&&&&Define&for&alpha&blend.
*************************************************************************************/
#include&"GE_COMMON.h"
#include&"AlphaBlend.h"
//------------------------------------------------------------------------------------
//&Constructor,&initialize&all&pointer&with&NULL.
//------------------------------------------------------------------------------------
ALPHA_BLEND::ALPHA_BLEND()
&&&&_d3d&&&&&&&&&&&&=&NULL;
&&&&_d3d_device&&&&&=&NULL;
&&&&_vertex_buffer1&=&NULL;
&&&&_vertex_buffer2&=&NULL;
//------------------------------------------------------------------------------------
//&Destructor,&release&all&COM&object.
//------------------------------------------------------------------------------------
ALPHA_BLEND::~ALPHA_BLEND()
&&&&Release_COM_Object();
//------------------------------------------------------------------------------------
//&Create&direct3D&interface&and&direct3D&device.
//------------------------------------------------------------------------------------
bool&ALPHA_BLEND::Create_D3D_Device(HWND&hwnd,&bool&full_screen)
&&&&//&Create&a&IDirect3D9&object&and&returns&an&interace&to&it.
&&&&_d3d&=&Direct3DCreate9(D3D_SDK_VERSION);
&&&&if(_d3d&==&NULL)
&&&&&&&&return&false;
&&&&//&retrieve&adapter&capability
&&&&D3DCAPS9&d3d_&&&&
&&&&_d3d-&GetDeviceCaps(D3DADAPTER_DEFAULT,&D3DDEVTYPE_HAL,&&d3d_caps);
&&&&bool&hardware_process_enable&=&(d3d_caps.DevCaps&&&D3DDEVCAPS_HWTRANSFORMANDLIGHT&?&true&:&false);
&&&&//&Retrieves&the&current&display&mode&of&the&adapter.
&&&&D3DDISPLAYMODE&display_
&&&&if(FAILED(_d3d-&GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&&display_mode)))
&&&&&&&&return&false;
&&&&//&set&present&parameter&for&direct3D&device
&&&&D3DPRESENT_PARAMETERS&present_
&&&&ZeroMemory(&present_param,&sizeof(present_param));
&&&&present_param.BackBufferWidth&&&&&&=&WINDOW_WIDTH;
&&&&present_param.BackBufferHeight&&&&&=&WINDOW_HEIGHT;
&&&&present_param.BackBufferFormat&&&&&=&display_mode.F
&&&&present_param.BackBufferCount&&&&&&=&1;
&&&&present_param.hDeviceWindow&&&&&&&&=&
&&&&present_param.Windowed&&&&&&&&&&&&&=&!full_
&&&&present_param.SwapEffect&&&&&&&&&&&=&D3DSWAPEFFECT_FLIP;
&&&&present_param.PresentationInterval&=&D3DPRESENT_INTERVAL_DEFAULT;
&&&&//&Creates&a&device&to&represent&the&display&adapter.
&&&&DWORD&behavior_
&&&&behavior_flags&=&hardware_process_enable&?&D3DCREATE_HARDWARE_VERTEXPROCESSING&:&D3DCREATE_SOFTWARE_VERTEXPROCESSING;
&&&&if(FAILED(_d3d-&CreateDevice(D3DADAPTER_DEFAULT,&D3DDEVTYPE_HAL,&hwnd,&behavior_flags,&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&present_param,&&_d3d_device)))
&&&&&&&&return&false;
&&&&//&create&successfully
&&&&return&true;
//------------------------------------------------------------------------------------
//&Initialize&vertex&buffer&for&cone.
//------------------------------------------------------------------------------------
bool&ALPHA_BLEND::Init_Vertex_Buffer1()
&&&&CUSTOM_VERTEX&custom_vertex[12];
&&&&D3DXVECTOR3&v[]&=&
&&&&&&&&D3DXVECTOR3(5.0f,&6.0f,&5.0f),&&&&//&left&triangle
&&&&&&&&D3DXVECTOR3(6.0f,&0.0f,&3.0f),
&&&&&&&&D3DXVECTOR3(1.0f,&0.0f,&7.0f),&&
&&&&&&&&D3DXVECTOR3(5.0f,&6.0f,&5.0f),&&&&//&right&triangle
&&&&&&&&D3DXVECTOR3(10.0f,&0.0f,&8.0f),
&&&&&&&&D3DXVECTOR3(6.0f,&0.0f,&3.0f),&
&&&&&&&&D3DXVECTOR3(5.0f,&6.0f,&5.0f),&&&&//&back&triangle
&&&&&&&&D3DXVECTOR3(1.0f,&0.0f,&7.0f),
&&&&&&&&D3DXVECTOR3(10.0f,&0.0f,&8.0f),
&&&&&&&&D3DXVECTOR3(1.0f,&0.0f,&7.0f),&&&&//&bottom&triangle
&&&&&&&&D3DXVECTOR3(6.0f,&0.0f,&3.0f),
&&&&&&&&D3DXVECTOR3(10.0f,&0.0f,&8.0f)&&&&&&
&&&&D3DVECTOR&
&&&&//&compute&all&triangle&normal
&&&&for(int&i&=&0;&i&&&12;&i&+=&3)
&&&&&&&&//&compute&current&triangle's&normal
&&&&&&&&Compute_Triangle_Normal(v[i],&v[i+1],&v[i+2],&normal);
&&&&&&&&//&assign&current&vertex&coordinate&and&current&triangle&normal&to&custom&vertex&array
&&&&&&&&for(int&j&=&0;&j&&&3;&j++)
&&&&&&&&&&&&int&k&=&i&+&j;
&&&&&&&&&&&&custom_vertex[k].x&&=&v[k].x;
&&&&&&&&&&&&custom_vertex[k].y&&=&v[k].y;
&&&&&&&&&&&&custom_vertex[k].z&&=&v[k].z;
&&&&&&&&&&&&custom_vertex[k].nx&=&normal.x;
&&&&&&&&&&&&custom_vertex[k].ny&=&normal.y;
&&&&&&&&&&&&custom_vertex[k].nz&=&normal.z;
&&&&BYTE*&vertex_
&&&&//&create&vertex&buffer
&&&&if(FAILED(_d3d_device-&CreateVertexBuffer(12&*&sizeof(CUSTOM_VERTEX),&0,&CUSTOM_VERTEX_FVF,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&D3DPOOL_DEFAULT,&&_vertex_buffer1,&NULL)))
&&&&&&&&return&false;
&&&&//&get&data&pointer&to&vertex&buffer
&&&&if(FAILED(_vertex_buffer1-&Lock(0,&0,&(void&**)&&vertex_data,&0)))
&&&&&&&&return&false;
&&&&//&copy&custom&vertex&data&into&vertex&buffer
&&&&memcpy(vertex_data,&custom_vertex,&sizeof(custom_vertex));
&&&&//&unlock&vertex&buffer
&&&&_vertex_buffer1-&Unlock();
&&&&return&true;
//------------------------------------------------------------------------------------
//&Initialize&vertex&buffer&for&cone.
//------------------------------------------------------------------------------------
bool&ALPHA_BLEND::Init_Vertex_Buffer2()
&&&&CUSTOM_VERTEX&custom_vertex[12];
&&&&float&add&=&1.3f;
&&&&D3DXVECTOR3&v[]&=&
&&&&&&&&D3DXVECTOR3(5.0f&+&add,&6.0f&+&add,&5.0f&+&add),&&&&//&left&triangle
&&&&&&&&D3DXVECTOR3(6.0f&+&add,&0.0f&+&add,&3.0f&+&add),
&&&&&&&&D3DXVECTOR3(1.0f&+&add,&0.0f&+&add,&7.0f&+&add),&&
&&&&&&&&D3DXVECTOR3(5.0f&+&add,&6.0f&+&add,&5.0f&+&add),&&&&//&right&triangle
&&&&&&&&D3DXVECTOR3(10.0f&+&add,&0.0f&+&add,&8.0f&+&add),
&&&&&&&&D3DXVECTOR3(6.0f&+&add,&0.0f&+&add,&3.0f&+&add),&
&&&&&&&&D3DXVECTOR3(5.0f&+&add,&6.0f&+&add,&5.0f&+&add),&&&&//&back&triangle
&&&&&&&&D3DXVECTOR3(1.0f&+&add,&0.0f&+&add,&7.0f&+&add),
&&&&&&&&D3DXVECTOR3(10.0f&+&add,&0.0f&+&add,&8.0f&+&add),
&&&&&&&&D3DXVECTOR3(1.0f&+&add,&0.0f&+&add,&7.0f&+&add),&&&&//&bottom&triangle
&&&&&&&&D3DXVECTOR3(6.0f&+&add,&0.0f&+&add,&3.0f&+&add),
&&&&&&&&D3DXVECTOR3(10.0f&+&add,&0.0f&+&add,&8.0f&+&add)&&&&&&
&&&&D3DVECTOR&
&&&&//&compute&all&triangle&normal
&&&&for(int&i&=&0;&i&&&12;&i&+=&3)
&&&&&&&&//&compute&current&triangle's&normal
&&&&&&&&Compute_Triangle_Normal(v[i],&v[i+1],&v[i+2],&normal);
&&&&&&&&//&assign&current&vertex&coordinate&and&current&triangle&normal&to&custom&vertex&array
&&&&&&&&for(int&j&=&0;&j&&&3;&j++)
&&&&&&&&&&&&int&k&=&i&+&j;
&&&&&&&&&&&&custom_vertex[k].x&&=&v[k].x;
&&&&&&&&&&&&custom_vertex[k].y&&=&v[k].y;
&&&&&&&&&&&&custom_vertex[k].z&&=&v[k].z;
&&&&&&&&&&&&custom_vertex[k].nx&=&normal.x;
&&&&&&&&&&&&custom_vertex[k].ny&=&normal.y;
&&&&&&&&&&&&custom_vertex[k].nz&=&normal.z;
&&&&BYTE*&vertex_
&&&&//&create&vertex&buffer
&&&&if(FAILED(_d3d_device-&CreateVertexBuffer(12&*&sizeof(CUSTOM_VERTEX),&0,&CUSTOM_VERTEX_FVF,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&D3DPOOL_DEFAULT,&&_vertex_buffer2,&NULL)))
&&&&&&&&return&false;
&&&&//&get&data&pointer&to&vertex&buffer
&&&&if(FAILED(_vertex_buffer2-&Lock(0,&0,&(void&**)&&vertex_data,&0)))
&&&&&&&&return&false;
&&&&//&copy&custom&vertex&data&into&vertex&buffer
&&&&memcpy(vertex_data,&custom_vertex,&sizeof(custom_vertex));
&&&&//&unlock&vertex&buffer
&&&&_vertex_buffer2-&Unlock();
&&&&return&true;
//------------------------------------------------------------------------------------
//&Set&camera&position.
//------------------------------------------------------------------------------------
void&ALPHA_BLEND::Set_Camera()
&&&&D3DXVECTOR3&eye(-6.0,&1.5,&10.0);
&&&&D3DXVECTOR3&at(6.0,&2.0,&3.0);
&&&&D3DXVECTOR3&up(0.0,&1.0,&0.0);
&&&&D3DXMATRIX&view_
&&&&//&Builds&a&left-handed,&look-at&matrix.
&&&&D3DXMatrixLookAtLH(&view_matrix,&&eye,&&at,&&up);
&&&&//&Sets&d3d&device&view&transformation&state.
&&&&_d3d_device-&SetTransform(D3DTS_VIEW,&&view_matrix);
&&&&D3DXMATRIX&proj_
&&&&//&Builds&a&left-handed&perspective&projection&matrix&based&on&a&field&of&view.
&&&&D3DXMatrixPerspectiveFovLH(&proj_matrix,&D3DX_PI/2,&WINDOW_WIDTH&/&WINDOW_HEIGHT,&1.0,&1000.0);
&&&&//&Sets&d3d&device&projection&transformation&state.
&&&&_d3d_device-&SetTransform(D3DTS_PROJECTION,&&proj_matrix);
&&&&//&enable&automatic&normalization&of&vertex&normals
&&&&_d3d_device-&SetRenderState(D3DRS_NORMALIZENORMALS,&true);
//------------------------------------------------------------------------------------
//&Set&point&light.
//------------------------------------------------------------------------------------
void&ALPHA_BLEND::Set_Point_Light()
&&&&D3DLIGHT9&
&&&&//&clear&memory&with&0
&&&&ZeroMemory(&light,&sizeof(D3DLIGHT9));
&&&&light.Type&&&&&&&&&&=&D3DLIGHT_POINT;
&&&&light.Diffuse.r&&&&&=&1.0;
&&&&light.Diffuse.g&&&&&=&0.0;
&&&&light.Diffuse.b&&&&&=&0.0;
&&&&light.Ambient.r&&&&&=&0.0;
&&&&light.Ambient.g&&&&&=&1.0;
&&&&light.Ambient.b&&&&&=&0.0;
&&&&light.Specular.r&&&&=&0.0;
&&&&light.Specular.g&&&&=&0.0;
&&&&light.Specular.b&&&&=&0.0;
&&&&light.Position.x&&&&=&5.0;
&&&&light.Position.y&&&&=&6.0;
&&&&light.Position.z&&&&=&-20.0;
&&&&light.Attenuation0&&=&1.0;
&&&&light.Attenuation1&&=&0.0;
&&&&light.Attenuation2&&=&0.0;
&&&&light.Range&&&&&&&&&=&1000.0;
&&&&//&Assigns&point&lighting&properties&for&this&device
&&&&_d3d_device-&SetLight(0,&&light);
&&&&//&enable&point&light
&&&&_d3d_device-&LightEnable(0,&TRUE);
&&&&//&enable&light&
&&&&_d3d_device-&SetRenderState(D3DRS_LIGHTING,&TRUE);
&&&&//&add&ambient&light
&&&&_d3d_device-&SetRenderState(D3DRS_AMBIENT,&D3DCOLOR_XRGB(50,&50,&50));
//------------------------------------------------------------------------------------
//&Sets&the&material&properties&for&the&device.
//------------------------------------------------------------------------------------
void&ALPHA_BLEND::Set_Object_Material(D3DCOLORVALUE&&dif,&D3DCOLORVALUE&&amb,&D3DCOLORVALUE&&spe,&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&D3DCOLORVALUE&&emi,&float&power)
&&&&D3DMATERIAL9&
&&&&material.Diffuse&&=&
&&&&material.Ambient&&=&
&&&&material.Specular&=&
&&&&material.Emissive&=&
&&&&material.Power&&&&=&
&&&&//&Sets&the&material&properties&for&the&device.
&&&&_d3d_device-&SetMaterial(&material);
//------------------------------------------------------------------------------------
//&Compute&triangle&normal.
//------------------------------------------------------------------------------------
void&ALPHA_BLEND::Compute_Triangle_Normal(D3DXVECTOR3&&v1,&D3DXVECTOR3&&v2,&D3DXVECTOR3&&v3,&D3DVECTOR&&normal)
&&&&D3DXVECTOR3&vec1&=&v1&-&v2;
&&&&D3DXVECTOR3&vec2&=&v1&-&v3;
&&&&D3DXVECTOR3&normal_
&&&&D3DXVec3Cross(&normal_vec,&&vec1,&&vec2);
&&&&D3DXVec3Normalize(&normal_vec,&&normal_vec);
&&&&normal&=&(D3DVECTOR)&normal_
//------------------------------------------------------------------------------------
//&Draw&cones.
//------------------------------------------------------------------------------------
void&ALPHA_BLEND::Render()
&&&&if(_d3d_device&==&NULL)
&&&&&&&&return;
&&&&//&clear&surface&with&black
&&&&_d3d_device-&Clear(0,&NULL,&D3DCLEAR_TARGET,&D3DCOLOR_XRGB(0,&0,&0),&1.0,&0);
&&&&//&begin&scene
&&&&_d3d_device-&BeginScene();
&&&&//&1)&draw&cone&1
&&&&//&Binds&a&vertex&buffer&to&a&device&data&stream.
&&&&_d3d_device-&SetStreamSource(0,&_vertex_buffer1,&0,&sizeof(CUSTOM_VERTEX));
&&&&//&Sets&the&current&vertex&stream&declaration.
&&&&_d3d_device-&SetFVF(CUSTOM_VERTEX_FVF);
&&&&//&Renders&a&sequence&of&nonindexed,&geometric&primitives&of&the&specified&type&from&the&current&
&&&&//&set&of&data&input&streams.
&&&&_d3d_device-&DrawPrimitive(D3DPT_TRIANGLELIST,&0,&4);
&&&&//&enable&alpha-blended&transparency
&&&&_d3d_device-&SetRenderState(D3DRS_ALPHABLENDENABLE,&true);
&&&&//&set&alpha&blend&for&source&cone
&&&&_d3d_device-&SetRenderState(D3DRS_SRCBLEND,&D3DBLEND_SRCALPHA);
&&&&//&set&alpha&blend&for&dest&cone
&&&&_d3d_device-&SetRenderState(D3DRS_DESTBLEND,&D3DBLEND_INVSRCALPHA);
&&&&//&2)&draw&cone&2
&&&&//&Binds&a&vertex&buffer&to&a&device&data&stream.&
&&&&_d3d_device-&SetStreamSource(0,&_vertex_buffer2,&0,&sizeof(CUSTOM_VERTEX));
&&&&//&Sets&the&current&vertex&stream&declaration.
&&&&_d3d_device-&SetFVF(CUSTOM_VERTEX_FVF);
&&&&//&draw&square
&&&&_d3d_device-&DrawPrimitive(D3DPT_TRIANGLELIST,&0,&4);
&&&&//&disable&alpha&blend&for&d3d&device
&&&&_d3d_device-&SetRenderState(D3DRS_ALPHABLENDENABLE,&false);
&&&&//&end&scene
&&&&_d3d_device-&EndScene();
&&&&//&Presents&the&contents&of&the&next&buffer&in&the&sequence&of&back&buffers&owned&by&the&device.
&&&&_d3d_device-&Present(NULL,&NULL,&NULL,&NULL);
//------------------------------------------------------------------------------------
//&Release&all&COM&object.
//------------------------------------------------------------------------------------
void&ALPHA_BLEND::Release_COM_Object()
&&&&Safe_Release(_vertex_buffer1);
&&&&Safe_Release(_vertex_buffer2);
&&&&Safe_Release(_d3d_device);
&&&&Safe_Release(_d3d);
main.cpp的实现很简单,它首先调用类ALPHA_BLEND的函数创建两个三棱锥的顶点缓冲区,然后进行取景并设置材质光源,最后调用Render函数进行混色渲染。
/*************************************************************************************
&[Implement&File]
&PURPOSE:&
&&&&Test&for&alpha&blending.
*************************************************************************************/
#define&DIRECTINPUT_VERSION&0x0800
#include&"GE_COMMON.h"
#include&"GE_APP.h"
#include&"AlphaBlend.h"
#pragma&warning(disable&:&)
int&WINAPI&WinMain(HINSTANCE&instance,&HINSTANCE,&LPSTR&cmd_line,&int&cmd_show)
&&&&GE_APP&ge_
&&&&ALPHA_BLEND&alpha_
&&&&MSG&msg&=&{0};
&&&&//&create&window
&&&&if(!&ge_app.Create_Window("Alpha&blending&test",&instance,&cmd_show))
&&&&&&&&return&false;
&&&&HWND&hwnd&=&ge_app.Get_Window_Handle();&&&&
&&&&SetWindowPos(hwnd,&0,&0,0,0,0,&SWP_NOSIZE);
&&&&SetCursorPos(0,&0);
&&&&//&Create&direct3D&interface&and&direct3D&device.
&&&&if(!&alpha_blend.Create_D3D_Device(hwnd,&false))
&&&&&&&&return&false;
&&&&//&Initialize&cone&1&vertex&buffer&with&curstom&vertex&structure.
&&&&if(!&alpha_blend.Init_Vertex_Buffer1())
&&&&&&&&return&false;
&&&&//&Initialize&cone&2&vertex&buffer&with&curstom&vertex&structure.
&&&&if(!&alpha_blend.Init_Vertex_Buffer2())
&&&&&&&&return&false;
&&&&//&Set&camera&position.
&&&&alpha_blend.Set_Camera();
&&&&D3DCOLORVALUE&dif&=&{1.0f,&1.0f,&1.0f,&0.6f};
&&&&D3DCOLORVALUE&amb&=&{1.0f,&1.0f,&1.0f,&0.0f};
&&&&D3DCOLORVALUE&spe&=&{0.0f,&0.0f,&0.0f,&0.0f};
&&&&D3DCOLORVALUE&emi&=&{0.0f,&0.0f,&0.0f,&0.0f};
&&&&//&Sets&the&material&properties&for&the&device.
&&&&alpha_blend.Set_Object_Material(dif,&amb,&spe,&emi,&0);
&&&&//&Set&point&light.
&&&&alpha_blend.Set_Point_Light();
&&&&//&Draw&all&cones
&&&&alpha_blend.Render();
&&&&while(msg.message&!=&WM_QUIT)
&&&&&&&&if(PeekMessage(&msg,&NULL,&0,0&,&PM_REMOVE))
&&&&&&&&&&&&TranslateMessage(&msg);
&&&&&&&&&&&&DispatchMessage(&msg);
&&&&UnregisterClass(WINDOW_CLASS_NAME,&instance);
&&&&return&true;
运行效果:
阅读下篇:
随笔 - 1361
评论 - 519
随笔分类(178)
3D游戏编程相关链接
OpenGL GPU编程
3D图形学,游戏编程。(&&&&&&)
3D图谜202期:一位君子交情淡 二位反正都一样
13:07:36 责任编辑:gc 来源:转载
点击次数:载入中
& & & & 福彩3d藏机图202期:
& & & &&一位君子交情淡,
& & & &&二位反正都一样,
& & & &&三位篱笆三个桩,
& & & &&和尾:居,
& & & &&忌语:蓬莱岛上居神仙
& & & &&定位:百位(09),十位(1),个位(3)
双色球:第
销售额:元
一等奖:5193713元/注
二等奖:53459元/注
彩票走势图
京ICP备号 京公网安备号
提醒:购买彩票有风险,在线投注需谨慎,不向未满18周岁的青少年出售彩票!经济日报多媒体数字报刊
第08版:证券·公司
证监会回应原油交易平台有关问题
本报讯 记者曹力水报道:中国证监会新闻发言人邓舸日前在回应原油交易平台有关问题时表示,对于部分地方原油交易平台存在的问题,证监会高度重视,在以往工作基础上,近期又采取了如下措施:一是按照国务院有关规定,及时将投资者的投诉举报函转相关省市政府,要求高度重视,认真核查,妥善处理;二是针对投诉举报较为集中的地方原油交易平台,约请当地政府有关部门会商,要求采取有力措施督促整改规范,并加快建立交易场所规范管理的长效机制;三是向各地政府通报与相关省市政府工作部门会商情况,要求各地政府切实履行属地管理责任,加强交易场所监管,引导交易场所健康发展。 下一步,证监会将继续按照《国务院关于清理整顿各类交易场所 切实防范金融风险的决定》的规定,会同清理整顿各类交易场所部际联席会议相关成员单位,持续督导各省级政府切实落实属地管理责任,加强对交易场所的监督管理,采取有效措施引导商品类交易场所真正回归到现货市场,并支持公安机关依法查处打击涉嫌犯罪的“黑平台”。 邓舸表示,证监会再次提醒广大投资者,根据媒体报道和群众举报,目前仍有地方原油交易平台等商品类交易场所存在违规开展标准化合约集中交易的问题,其交易活动蕴含着很大的风险。投资者在参与地方交易场所交易活动前,要仔细了解其交易规则、交易方式,发现采用集中交易方式开展标准化合约交易的,请不要参与,以免造成财产损失,并将有关情况向当地政府有关部门举报,协助当地政府做好打击交易场所违法违规活动工作。

我要回帖

更多关于 胡霍 君子之交淡如水 的文章

 

随机推荐