| 
 | 
 
//------------------------------------------------------------------------------------ // Create direct3D interface and direct3D device. //------------------------------------------------------------------------------------ bool TRANSPARENT_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_caps;          _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_mode; 
	if(FAILED(_d3d->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &display_mode))) 
	return
	false;
  
	// set present parameter for direct3D device      D3DPRESENT_PARAMETERS present_param;
       ZeroMemory(&present_param, sizeof(present_param));
       present_param.BackBufferWidth       = WINDOW_WIDTH;      present_param.BackBufferHeight      = WINDOW_HEIGHT;      present_param.BackBufferFormat      = display_mode.Format;      present_param.BackBufferCount       = 1;      present_param.hDeviceWindow         = hwnd;      present_param.Windowed              = !full_screen;      present_param.SwapEffect            = D3DSWAPEFFECT_FLIP;      present_param.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
  
	// Creates a device to represent the display adapter.      DWORD behavior_flags;
       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 tiger image.  //------------------------------------------------------------------------------------ bool TRANSPARENT_BLEND::Init_Tiger_Vertex_Buffer() {      CUSTOM_VERTEX tiger_vertex[] =      {          {0.0f,    0.0f,    0.0f, 1.0f, 0.0f, 0.0f},          {800.0f, 0.0f,    0.0f, 1.0f, 1.0f, 0.0f},          {0.0f,    600.0f, 0.0f, 1.0f, 0.0f, 1.0f},          {800.0f, 600.0f, 0.0f, 1.0f, 1.0f, 1.0f}                  };
       BYTE* vertex_data;
  
	// create vertex buffer 
	if(FAILED(_d3d_device->CreateVertexBuffer(4 * sizeof(CUSTOM_VERTEX), 0, CUSTOM_VERTEX_FVF,                              D3DPOOL_MANAGED, &_tiger_vertex_buffer, NULL)))      { 
	return
	false;      }
  
	// get data pointer to vertex buffer 
	if(FAILED(_tiger_vertex_buffer->Lock(0, 0, (void **) &vertex_data, 0))) 
	return
	false;
  
	// copy custom vertex data into vertex buffer      memcpy(vertex_data, tiger_vertex, sizeof(tiger_vertex));
  
	// unlock vertex buffer      _tiger_vertex_buffer->Unlock();
  
	return
	true; }
  //------------------------------------------------------------------------------------ // Initialize vertex buffer for gun image.  //------------------------------------------------------------------------------------ bool TRANSPARENT_BLEND::Init_Gun_Vertex_Buffer() {      CUSTOM_VERTEX gun_vertex[] =      {          {m_gun_pos_x,         m_gun_pos_y,          0.0f,    1.0f,    0.0f,    0.0f},          {m_gun_pos_x+130.0f, m_gun_pos_y,          0.0f,    1.0f,    1.0f,    0.0f},          {m_gun_pos_x,         m_gun_pos_y+130.0f,   0.0f,    1.0f,    0.0f,    1.0f},          {m_gun_pos_x+130.0f, m_gun_pos_y+130.0f,   0.0f,    1.0f,    1.0f,    1.0f}              };
       BYTE* vertex_data;
  
	// create vertex buffer 
	if(FAILED(_d3d_device->CreateVertexBuffer(4 * sizeof(CUSTOM_VERTEX), 0, CUSTOM_VERTEX_FVF,                              D3DPOOL_MANAGED, &_gun_vertex_buffer, NULL)))      { 
	return
	false;      }
  
	// get data pointer to vertex buffer 
	if(FAILED(_gun_vertex_buffer->Lock(0, 0, (void **) &vertex_data, 0))) 
	return
	false;
  
	// copy custom vertex data into vertex buffer      memcpy(vertex_data, gun_vertex, sizeof(gun_vertex));
  
	// unlock vertex buffer      _gun_vertex_buffer->Unlock();
  
	return
	true;
  }
 
  |   
 
 
 
 |