Empat solusi utama muncul dalam pikiran.
Yang pertama adalah menggunakan versi DirectX SDK yang lebih lama. Saya sepertinya ingat bahwa versi dari bundaran 2004 atau sebelumnya terkait secara statis (tetapi jika ukuran yang lebih besar dapat dieksekusi membuat Anda takut yang mungkin tidak menjadi pilihan), dan itu juga kasus jika Anda menggunakan versi dari 2006/2007 atau sebelumnya maka DLL D3DX yang Anda butuhkan akan memiliki peluang yang jauh lebih tinggi untuk berada di mesin. Kelemahan dari ini adalah bahwa Anda akan kehilangan perbaikan bug, peningkatan kinerja dan peningkatan fungsionalitas di SDK yang lebih baru (itu juga mengesampingkan versi D3D selain 9).
Solusi kedua adalah menggunakan LoadLibrary dan GetProcAddress pada fungsi D3DX. Anda memilih versi yang didukung maksimum dan minimum (katakanlah, dari _42 ke _34), kemudian masuk ke loop dari maks ke min, membangun nama DLL, dan mencoba untuk LoadLibrary itu. Jika Anda memuatnya OK, Anda kemudian melakukan banyak panggilan GetProcAddress dan menggunakan pointer fungsi Anda alih-alih fungsi D3DX mentah. Jenis ekstensi OpenGL seperti, jika Anda tahu apa yang saya bicarakan. Yang ini berpotensi sedikit berbulu, dan Anda mungkin masih harus berurusan dengan kasus di mana Anda tidak dapat menemukan DLL dalam jangkauan Anda. Tetapi saya telah menggunakan yang ini di masa lalu dan itu bekerja dengan cukup baik.
Solusi ketiga adalah tidak menggunakan D3DX. Mungkin menjadi opsi dalam beberapa kasus, mungkin bukan opsi dalam kasus Anda.
Solusi keempat dan terakhir adalah memberi tahu pengguna Anda untuk meningkatkan 3D Langsung mereka. Mereka benar-benar harus melakukan ini, ini adalah unduhan kecil dan cepat dari Microsoft, dan ini adalah pemecah masalah instan. Pengguna Anda mungkin tidak suka harus melakukannya, dan Anda mungkin harus berurusan dengan pertanyaan seperti "Saya sudah punya D3D11, mengapa saya perlu memutakhirkan D3D9 saya", tetapi secara seimbang mungkin akan lebih ekonomis secara keseluruhan untuk mengambil itu di hidung.