Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Helius en 06 de Agosto de 2005, 12:38:12 PM

Título: Comprobar Versión De Directx
Publicado por: Helius en 06 de Agosto de 2005, 12:38:12 PM
 Buenas, quiero comprobar que la versión de DirectX 9.c, concretamente la de junio de 2005 está instalada en un PC.

Creo que esto puede hacerse mirando a ver si existe la librería "d3dx9_26.dll" pero no estoy muy seguro...

¿Alguien me lo puede confirmar?

¿Si por ejemplo quisiese buscar si existe la de Febrero que librería debería buscar?
Título: Comprobar Versión De Directx
Publicado por: fiero en 06 de Agosto de 2005, 01:01:49 PM
 ¿Has visto el fichero version.c (o .cpp, no recuerdo) que viene en el SDK? Suele venir una función para distinguir hasta la propia versión en la que viene el fichero.

un saludo
Título: Comprobar Versión De Directx
Publicado por: Helius en 09 de Agosto de 2005, 02:05:00 PM
 Otra cosa...

Si yo compilo con la versión de DX, pongamos la que acaba de salir de Agosto, y alguien tiene los runtime de DX 9.0c de invierno ¿le funcionará mi programa? Se supone que lo único que cambia es D3DX ¿no? Estoy perdido entre tanta actualización...

Mi problema es que no se con qué versión compilar el proyecto de Art Futura, de momento lo estoy haciendo con la de Junio...  :huh:

Lo que hago ahora es cazar si tiene "d3dx9_26.dll" o superior y sino mostrar un mensage pero no se si esto es necesario o no...
Título: Comprobar Versión De Directx
Publicado por: Mandelbrot en 09 de Agosto de 2005, 05:08:51 PM
 Yo tenia un programa compilado con la version 9.0b y al instalar el runtime de la 9.0c me daba un error grave de excepcion (o como se llame)  en la funcion CreateDevice (creo recordar).

decidi instalar el sdk de la 9.0c y compilarlo con esta version, ya me fue bien, pero para mi sorpresa, al ejecutarlo sobre otro ordenador que tenia la 9.0b me daba el mismo error.

Igual alguien al que le haya pasado esto sabe como solucionarlo, y por lo tanto conoce en que version se esta ejecutando. De momento mi solucion a todos los problemas con DirectX ha sido pasar de el, y usar OpenGL
Título: Comprobar Versión De Directx
Publicado por: Helius en 01 de Septiembre de 2005, 08:43:19 PM
 Vamos a ver... resulta que si instalas la revisión de agosto de DX se instala la librería "d3dx9_27.dll"... ¿¿y las anteriores no??

Mi juego necesita la de junio, es decir "d3dx9_26.dll", pero parece ser que la única forma de que un usuario tenga esta librería es hacerle instalar la distribución de Junio de DX, pero si el usuario tiene ya instalada la de Agosto no tiene por qué tener la librería de junio... ¿es cierto esto? Pues me parece muy mal que no funcione con distribuciones nuevas...  (grrr)

Voy a acabar poniendo la dll en el mismo directorio que el juego...  <_<
Título: Comprobar Versión De Directx
Publicado por: TheAzazel en 01 de Septiembre de 2005, 09:08:03 PM
 Y el metodo de toda la vida? o es que no sirve para diferenciar esas "subversiones"?


DWORD dwVersion;
DWORD dwRevision;

// Version de DirectX
dwVersion=0; dwRevision=0;
if(DirectXSetupGetVersion(&dwVersion, &dwRevision))
{
   printf("DirectX v%d",LOWORD(dwVersion));
   printf(".%d\n",HIWORD(dwRevision));
}
else
{
// Meecckkkk!!! Error!
}


Hay que linkar contra dsetup.lib y luego utilizar dsetup.dll. En mi codigo hago una sencilla comprobacion pero solo necesito dwVersion, supongo que dwRevision os puede servir a vosotros.....

saludos
Título: Comprobar Versión De Directx
Publicado por: Helius en 01 de Septiembre de 2005, 09:46:53 PM
 Mi problema es que no entiendo bien que versiones de la dll D3DX va a tener el usuario final, y cuando decirle que debe instalar tal o cual distribución  :(
Título: Comprobar Versión De Directx
Publicado por: Ray en 01 de Septiembre de 2005, 10:23:23 PM
 Se me ocurre una solución drástica que quizás te puede funcionar.

Hazte con todas las versiones de librerías de DirectX que puedas (solo lib), clasificalas en carpetas lib_junio, lib_Agosto, lib_primavera, etc.  Y cuando liberes el programa o lo quieras probar en otros ordenadores enlaza tu proyecto con cada una de ellas al compilarlo, para asi obtener diferentes ejecutables.

Lógicamente solo podras ejecutarlo en tu ordenador con las librerías que coincidan con la versión de las dll de ejecución que tengas instaladas, pero nada te impide crear los exe para cualquier otra.

Crea un programa lanzador que detecte la versión instalada y ejecute el exe que corresponda. O haz ese proceso copiando solo durante la instalación el que coincida con la versión que tenga el usuario.

No se si te servirá porque no lo he probado, o quizas luego tiene más dificultades de las previstas, Pero tampoco se pierde mucho por intentarlo. Vaya verguenza que es esto de las versiones del IndirectX.

Hasta pronto.
Título: Comprobar Versión De Directx
Publicado por: TheAzazel en 01 de Septiembre de 2005, 11:06:08 PM
 Joer, pues vaya historias esto de los multiuniversos...digo tantas versiones de dx incompatibles entre si....
y como lo hacen los juegos comerciales? que yo sepa, solo tengo instalada una version de dx y cada juego usara la suya (me refiero a los nuevos, los que usan las 9.0 susudicha) y nunca me han petado....
lo mismo es que incluyen las dll junto con ellos... y visto lo visto, me parece la solucion mas idonea para no marear a nadie..


PD: esas cosas no pasan con OpengGL  :P  
Título: Comprobar Versión De Directx
Publicado por: Helius en 01 de Septiembre de 2005, 11:15:20 PM
 
Cita de: "Ray"Se me ocurre una solución drástica que quizás te puede funcionar.

Hazte con todas las versiones de librerías de DirectX que puedas (solo lib), clasificalas en carpetas lib_junio, lib_Agosto, lib_primavera, etc.  Y cuando liberes el programa o lo quieras probar en otros ordenadores enlaza tu proyecto con cada una de ellas al compilarlo, para asi obtener diferentes ejecutables.

Lógicamente solo podras ejecutarlo en tu ordenador con las librerías que coincidan con la versión de las dll de ejecución que tengas instaladas, pero nada te impide crear los exe para cualquier otra.

Crea un programa lanzador que detecte la versión instalada y ejecute el exe que corresponda. O haz ese proceso copiando solo durante la instalación el que coincida con la versión que tenga el usuario.

No se si te servirá porque no lo he probado, o quizas luego tiene más dificultades de las previstas, Pero tampoco se pierde mucho por intentarlo. Vaya verguenza que es esto de las versiones del IndirectX.

Hasta pronto.
Esto me parece excesivo  :huh:

Antes prefiero incluir la dll en la instalación del juego y que la copie al system32 si no existe...

Los juegos comerciales sinceramente no se qué es lo que hacen  :blink:

PD: ya me están fastidiando los de opengl...  :P  es broma
Título: Comprobar Versión De Directx
Publicado por: Ray en 01 de Septiembre de 2005, 11:33:08 PM
 Es excesivo, pero quizás es efectivo para no complicarse mucho la vida, total... solo hay que compilar 3 o 4 veces más el programa.

Seguramente haya una solución mas profesional, tal vez separando las partes "criticas" del programa en dlls de diferentes versiones, y que estas sean llamadas dependiendo de la versión final del usuario, o vete tu a saber.

En cualquier caso lo mejor efectivamente es no marear al usuario y adaptarse a lo que tenga él, porque poca gracia le va a hacer como le instales tus dlls y luego  no le funcione su juego favorito. Como mucho pedirle que tenga cualquier revisión de la versión 9.

Geleros al poder!!! (twist)  
Título: Comprobar Versión De Directx
Publicado por: SkyNetBCN en 02 de Septiembre de 2005, 09:01:02 AM
 De verdad os da tantos problemas? la verdad es que yo soy novatillo, pero la verdad es que al cambiar de Versión de DirectX a mi sólo me supuso problemas con la función (Sprite->Draw(...);)
de todas maneras, y aunque no sé cua´l, estoy seguro que debe haber una manera mucho más sencilla que las propuestas para hacer esto... no puede ser que con cada nueva versión de DirectX SDK se nos joda....  (genial)