D3DXSHADER_USE_LEGACY_D3DX9_31_DLL: How's it??

Started by
1 comment, last by Mick is Stumped 13 years, 4 months ago
I'm trying to support hardware as far back as possible, so trying to get Shader Model 1.0 stuff to compile natively via D3DX.

For the 1_x stuff the docs say add the "D3DXSHADER_USE_LEGACY_D3DX9_31_DLL" flag.

Pretty much all of the currently available Microsoft docs only only mention the ID3DXEffectCompiler interface with respect to this. But many online discussions turned up by websearching seem to suggest it also works for D3DXCompileShader.

Anyway, I'm not sure using ID3DXEffectCompiler for a straightforward shader compile is worth the trouble to find out. What I've done is just put the dll which is supposed to house the legacy compiler (d3dx9_31.dll) in the execution path and flipped on said flag.

What I'm getting is the error which I think indicates a bad call, ie. something's wrong with the arguments. But anyway it's a generic error (0x8876086c)

Will probably give this up for the time being without some sort of lead.

Thanks,
Advertisement
It occurred to me LoadLibrary(d3dx9_31.dll) -> GetProcAddress(D3DXCompileShader) might well work... will try that asap. Either way still curious.
Still returns invalid call after directly loading the 31.dll library.

I did notice I was passing vs_1_0 instead of vs_1_1, but after fixing that there was no change.

If it was not reporting "D3DERR_INVALIDCALL" I'd guess the driver just wouldn't comply. But it's acting like there is something wrong with the call, even though as far as I can tell there is nothing.

The arguments work just fine for 2_0 and so on...

This topic is closed to new replies.

Advertisement