コード例 #1
0
ファイル: Utility.cpp プロジェクト: 2asoft/xray
HRESULT CreateShaderResource(IDirect3DDevice8 *Device, unsigned long Res, const unsigned long* Decl,
							 ShaderType Type,  unsigned long* Handle)

{
	HRESULT			Hr;
  	unsigned long	Size;
	unsigned long   *Data;
	char			*Name;
	
	D3DCAPS8		Caps;
	DWORD Usage = 0;
	
	Hr = S_OK;

	if(!Res)
	{
		Handle = 0;
		return(S_OK);
	}

	Device->GetDeviceCaps(&Caps);

	// for those mad Laptop users
	if(Caps.DeviceType == D3DDEVTYPE_REF)
	{
		Usage = D3DUSAGE_SOFTWAREPROCESSING;
	}


	Name = MAKEINTRESOURCE(Res);

	if(GetFileResource(Name,"RT_RCDATA",(void **)&Data,Size))
	{
		if(Type == SHADER_VERTEXSHADER)
		{
			if(FAILED(Hr = Device->CreateVertexShader(Decl,Data,Handle,Usage)))
			{
				return(Hr);
			}
		}
		else
		{
			if(FAILED(Hr = Device->CreatePixelShader(Data,Handle)))
			{
				return(Hr);
			}
		}

	}
	else
	{
		return(E_FAIL);
	}

	return(Hr);

}
コード例 #2
0
ファイル: Lighting.cpp プロジェクト: artemeliy/inf4715
bool Lighting::LoadAttenTexture(TSTR &Name, LPDIRECT3DDEVICE9 Device)
{		
	HRESULT			Hr;
	void			*Data;
	unsigned long	Size;
	TCHAR error[256];
	_stprintf(error,_T("%s"),GetString(IDS_ERROR));

	Hr = S_OK;

	SAFE_RELEASE(m_Atten);

	if(GetFileResource(MAKEINTRESOURCE(IDR_ATTENUATE),_T("RT_RCDATA"),
					   &Data,Size))
	{
		Hr = D3DXCreateTextureFromFileInMemoryEx(Device, 
												 Data,
												 Size,
												 D3DX_DEFAULT,
												 D3DX_DEFAULT,
												 1,
												 0,
												 D3DFMT_A8R8G8B8,
												 D3DPOOL_MANAGED,
												 D3DX_FILTER_NONE,
												 D3DX_FILTER_NONE,
												 0,
												 NULL,
												 NULL,
												 (IDirect3DTexture9 **)&m_Atten);

	}
	else
	{
		Hr = E_FAIL;
	}

	if(Hr != S_OK)
	{
		TSTR	Str;
		Str = TSTR(GetString(IDS_LOAD_FILES)) + Name + TSTR(GetString(IDS_CHECK_PATHS)) + 
			  TSTR(GetString(IDS_ERROR_CODE)) + TSTR(DXGetErrorString(Hr));

		MessageBox(NULL,Str,error,MB_OK | MB_ICONERROR | MB_SETFOREGROUND | 
				   MB_APPLMODAL);

		return(false);
	}


	return(true);
}
コード例 #3
0
 static void GetDicomConformanceStatement(RestApiGetCall& call)
 {
   std::string statement;
   GetFileResource(statement, EmbeddedResources::DICOM_CONFORMANCE_STATEMENT);
   call.GetOutput().AnswerBuffer(statement, "text/plain");
 }
コード例 #4
0
ファイル: Lighting.cpp プロジェクト: artemeliy/inf4715
bool Lighting::LoadSpotTexture(TSTR &Name, LPDIRECT3DDEVICE9 Device)
{		
	HRESULT			Hr;
	void			*Data;
	unsigned long	Size;
	D3DSURFACE_DESC	Desc;
	float			Bias,X,Y;
	unsigned int	Range;
	TCHAR error[256];
	_stprintf(error,_T("%s"),GetString(IDS_ERROR));

	Hr = S_OK;

	SAFE_RELEASE(m_Spot);

	if(GetFileResource(MAKEINTRESOURCE(IDR_SPOTLIGHT),_T("RT_RCDATA"),
					   &Data,Size))
	{
		Hr = D3DXCreateTextureFromFileInMemoryEx(Device, 
												 Data,
												 Size,
												 D3DX_DEFAULT,
												 D3DX_DEFAULT,
												 1,
												 0,
												 D3DFMT_A8R8G8B8,
												 D3DPOOL_MANAGED,
												 D3DX_FILTER_NONE,
												 D3DX_FILTER_NONE,
												 0,
												 NULL,
												 NULL,
												 (IDirect3DTexture9 **)&m_Spot);


	}
	else
	{
		Hr = E_FAIL;
	}

	if(Hr != S_OK)
	{
		TSTR	Str;
		Str = TSTR(GetString(IDS_LOAD_FILES)) + Name + TSTR(GetString(IDS_CHECK_PATHS)) + 
			  TSTR(GetString(IDS_ERROR_CODE)) + TSTR(DXGetErrorString(Hr));

		MessageBox(NULL,Str,error,MB_OK | MB_ICONERROR | MB_SETFOREGROUND | 
				   MB_APPLMODAL);

		return(false);
	}

	//
	//	Set projection matrix
	//	
	((LPDIRECT3DTEXTURE9)m_Spot)->GetLevelDesc(0,&Desc);

	X	  = 0.5f + (0.5f / (float)Desc.Width);
	Y	  = 0.5f + (0.5f / (float)Desc.Height);
	Range = 0xFFFFFFFF >> (32 - 24);
	Bias  = -0.001f * (float)Range;

	m_MatScaleBias = D3DXMATRIX(0.5f,  0.0f,  0.0f,         0.0f,
							    0.0f, -0.5f,  0.0f,         0.0f,
							    0.0f,  0.0f,  (float)Range, 0.0f,
							    X,     Y,     Bias,         1.0f);

	return(true);

}
コード例 #5
0
ファイル: Utility.cpp プロジェクト: 2asoft/xray
HRESULT CreateVertexShaderResource(IDirect3DDevice9 *Device, unsigned long Res, LPDIRECT3DVERTEXDECLARATION9 * vdecl,
							   LPDIRECT3DVERTEXSHADER9 *Handle)

{
	HRESULT			Hr;
  	unsigned long	Size;
	unsigned long   *Data;
	char			*Name;
	D3DCAPS9		Caps;
	DWORD Usage = 0;
	
	Hr = S_OK;

	if(!Res)
	{
		Handle = 0;
		return(S_OK);
	}

	Device->GetDeviceCaps(&Caps);

	// for those mad Laptop users
	if(Caps.DeviceType == D3DDEVTYPE_REF)
	{
		Usage = D3DUSAGE_SOFTWAREPROCESSING;
	}


	D3DVERTEXELEMENT9 test[] = 
	{
			{ 0, 0,  D3DDECLTYPE_FLOAT3,   D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
			{ 0, 12, D3DDECLTYPE_FLOAT3,   D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL,   0 },
			{ 0, 24, D3DDECLTYPE_FLOAT3,   D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL,   1 },
			{ 0, 36, D3DDECLTYPE_FLOAT2,   D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 },
			{ 0, 44, D3DDECLTYPE_FLOAT2,   D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1 },
			{ 0, 52, D3DDECLTYPE_FLOAT2,   D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 2 },
			{ 0, 60, D3DDECLTYPE_FLOAT2,   D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 3 },
		D3DDECL_END()
	};


	
	Hr = Device->CreateVertexDeclaration(test, vdecl);
	if (FAILED(Hr)) {
		return Hr;
	}


	Name = MAKEINTRESOURCE(Res);

	if(GetFileResource(Name,"RT_RCDATA",(void **)&Data,Size))
	{
		Hr = Device->CreateVertexShader(Data, Handle);
		if (FAILED(Hr)) {
			return Hr;
		}

	}
	else
	{
		return(E_FAIL);
	}

	return(Hr);

}