こちらの日記の方で質問させてもらいました。
HLSLとDxLibをつかってゲームを作り始めたのですが
(HLSLはほぼ理解していません)
HLSL(エフェクトファイル)でヘッダファイルをincludeしようとすると
コンパイル時にエラーがでます。
そのincludeしたいファイル(d3dx9.h)自体はincludeできるのですが
そのd3dx9.hの中でincludeされているファイルがincludeされなくて
エラーが発生します。(オープン・ソース・ファイルに失敗しました。)
別のヘッダファイルでd3dx9.hをincludeしてVCでコンパイルすればエラーはでません。
つまりエフェクトファイルでないファイルで呼び出した時はうまくいくんです。
一応コードを(エフェクトファイル)
#include "Include/d3dx9.h"
float4 temp;
struct PS_INPUT{
float4 Diffuse:COLOR0;
float4 Specular:COLOR1;
float2 TexCoords0:TEXCOORD0;
};
struct PS_OUTPUT{
float4 Output:COLOR0;
};
sampler sampler0:register(s0);
PS_OUTPUT main(PS_INPUT psin){
PS_OUTPUT psout;
float2 tempcoord;
float4 texc;
float dx=psin.TexCoords0.x-0.5;
float dy=psin.TexCoords0.y-0.5;
float dist=dx*dx+dy*dy;
if(dist
#define D3DX_DEFAULT ((UINT) -1)
#define D3DX_DEFAULT_NONPOW2 ((UINT) -2)
#define D3DX_DEFAULT_FLOAT FLT_MAX
#define D3DX_FROM_FILE ((UINT) -3)
#define D3DFMT_FROM_FILE ((D3DFORMAT) -3)
#ifndef D3DXINLINE
#ifdef _MSC_VER
#if (_MSC_VER >= 1200)
#define D3DXINLINE __forceinline
#else
#define D3DXINLINE __inline
#endif
#else
#ifdef __cplusplus
#define D3DXINLINE inline
#else
#define D3DXINLINE
#endif
#endif
#endif
// Includes
#include "d3d9.h"
#include "d3dx9math.h"
#include "d3dx9core.h"
#include "d3dx9xof.h"
#include "d3dx9mesh.h"
#include "d3dx9shader.h"
#include "d3dx9effect.h"
#include "d3dx9tex.h"
#include "d3dx9shape.h"
#include "d3dx9anim.h"
// Errors
#define _FACDD 0x876
#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
enum _D3DXERR {
D3DXERR_CANNOTMODIFYINDEXBUFFER = MAKE_DDHRESULT(2900),
D3DXERR_INVALIDMESH = MAKE_DDHRESULT(2901),
D3DXERR_CANNOTATTRSORT = MAKE_DDHRESULT(2902),
D3DXERR_SKINNINGNOTSUPPORTED = MAKE_DDHRESULT(2903),
D3DXERR_TOOMANYINFLUENCES = MAKE_DDHRESULT(2904),
D3DXERR_INVALIDDATA = MAKE_DDHRESULT(2905),
D3DXERR_LOADEDMESHASNODATA = MAKE_DDHRESULT(2906),
D3DXERR_DUPLICATENAMEDFRAGMENT = MAKE_DDHRESULT(2907),
D3DXERR_CANNOTREMOVELASTITEM = MAKE_DDHRESULT(2908),
};
#endif //__D3DX9_H__