Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Comprobar Versión De Directx

Iniciado por Helius, 06 de Agosto de 2005, 12:38:12 PM

« anterior - próximo »

Helius

 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?
Geardome Devlog
Tutoriales sobre DirectX 9, Nintendo DS y PSP.

fiero

 ¿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
www.videopanoramas.com Videopanoramas 3D player

Helius

 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...
Geardome Devlog
Tutoriales sobre DirectX 9, Nintendo DS y PSP.

Mandelbrot

 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

Helius

 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...  <_<
Geardome Devlog
Tutoriales sobre DirectX 9, Nintendo DS y PSP.

TheAzazel

 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

Helius

 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  :(
Geardome Devlog
Tutoriales sobre DirectX 9, Nintendo DS y PSP.

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.

TheAzazel

 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  

Helius

 
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
Geardome Devlog
Tutoriales sobre DirectX 9, Nintendo DS y PSP.

Ray

 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)  

SkyNetBCN

 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)  






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.