I probably should've gone into a bit more detail about this function:
It's just for developer purpose. If you have a very big project and
are trying to upgrade e.g. from d3dx9_27 to d3dx9_36 some files
may need to be rebuild, some files may not. This function is just there
to ensure the developer that all files are built with the right dll.

Now THIS means, that we won't ever see an ENDUSER application
fail because of a d3dx9 version mismatch.

Also, we come to a problem when a user wants to built an application
with Winelib, where we can only use one definition of D3DX_SDK_VERSION
which only applies to ONE dll. Now just watch following code sample:
> #include "d3dx9.h"
>
> int check_version() {
>     if( D3DXCheckVersion( D3D_SDK_VERSION, D3DX_SDK_VERSION ) == FALSE ) {
>         MessageBox( NULL, "D3DX9 Versions don't match!", "Error!", MB_OK );
>         exit( 1 );
>     }
> }

Now, if a Winelib user compiles this, D3DX_SDK_VERSION is 9 (as its specified 
in our
current d3dx9core.h). But if the program requires to be built with d3dx9_36 
(and thus
uses our implementation of D3DXCheckVersion) it will report an error as 
D3DX_SDK_VERSION
was expected to be 36.

So, the only thing we can test in this function is if D3DX_SDK_VERSION is 
between 24 and 36,
which are all compatible versions (also, no enduser application will need the 
accurate implementation
as stated above). I have made a mistake though, when I defined D3DX_SDK_VERSION 
to be 9,
which was caused by my somewhat old installation of the DX SDK, which is 
incompatible
with d3dx9_24 to d3dx9_36. (it was statically linked at that time), You don't 
need correct this
in your patch, as this will be addressed in one of my future patches, I am just 
waiting for
Julliard to (hopefully) accept my d3dx9_24 patch.

In conclusion, all you have to do is replace the line
> return ((D3DSdkVersion==D3D_SDK_VERSION) && 
> (D3DXSdkVersion==D3DX_SDK_VERSION));
with
> return ((D3DSdkVersion==D3D_SDK_VERSION) && (D3DXSdkVersion>=24 && 
> D3DXSdkVersion <=36));
(Could also be => and =<, ain't that familiar with it)

Best regards,
    Tony










Reply via email to