IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

DirectX sous Java


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut DirectX sous Java
    Bonjour à tous,

    Je souhaiterais savoir s'il est possible, sous Windows, d'accéder aux fonctions DirectX en Java ?
    Et dans ce cas, que se passe-t-il si je passe sous Linux, puis-je installer un "patch" ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par yomapoitiers
    Je souhaiterais savoir s'il est possible, sous Windows, d'accéder aux fonctions DirectX en Java ?
    Tu es obligé de passer par du code natif et JNI... donc non portable...

    Citation Envoyé par yomapoitiers
    Et dans ce cas, que se passe-t-il si je passe sous Linux, puis-je installer un "patch" ?


    Etant donné que DirectX est une API propriétaire de Microsoft, je ne pense pas que ce soit possible


    Mais que veux-tu faire exactement ?

    a++

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Ce que je cherche à faire ?
    Et bien je développe des applis Windows en C++ qui utilisent les fonctionnalités de DirectX. Prenons un exemple simple, un video renderer d'un flux en provenance d'une camera locale. Bien entendu, je suis confronté à différents problèmes de compatibilités, notamment la version du DirectX installée, la carte graphique (les fonctions graphiques DirectX prises en charge par la carte), les drivers, bref les performances de mon appli vont dépendre du soft- comme du hardware.
    Mais en plus, je souhaiterais pouvoir utiliser mon appli sous Linux, sans avoir à émuler windows !
    J'imagine bien que DirectX ne tourne pas sous Linux mais y'a-t-il des librairies existantes qui permettraient de bénéficier des mêmes fonctionnalités, quitte à avoir un code différent ? Quelqu'un aurait-il été assez barjot pour développer une librairie ayant les mêmes appels que DirectX mais avec des traitements Linux derrière ? Ca serait génial de pouvoir avoir un appel de fonctions commun aux différentes plateformes, et derrière des traitements différents suivant l'OS ou le processeur comme c'est déjà le cas pour ce dernier.
    Et pour l'interface graphique, qu'ai-je comme solution pour en développer une qui puisse être lancée sous Linux et Windows sans avoir à émuler l'un des OS ? En effet, le but de DirectX est la rapidité, donc si c'est pour émuler... autant aller se coucher.

    Voilà, j'espère avoir été clair, merci beaucoup.

  4. #4
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Citation Envoyé par yomapoitiers
    Et pour l'interface graphique, qu'ai-je comme solution pour en développer une qui puisse être lancée sous Linux et Windows sans avoir à émuler l'un des OS ?
    Pour les interfaces graphiques, tu peux utiliser Swing qui fait partie de l'api standard et qui fonctionnera sans problème aussi bien sous windows que sur linux.
    Sinon en ce qui concerne DirectX, pourquoi ne pas utiliser JOGL qui est basée sur OpenGl ? tu y gagnera en portabilité.
    Plus d'informations dans ces articles :
    Les api 3D pour java
    Apprendre l'OpenGL avec Java : Introduction



    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Sauf erreur de lecture et de compréhension, JOGL est l'OpenGL pour Java, c'est à dire tout ce qu'il faut pour faire de la 3D sous Java. Mais ce n'est pas du tout ce que je cherche ! Il y a du y avoir confusion entre DirectX et Direct 3D qui est certes une composante de DirectX !
    DirectX, c'est Direct 3D + Direct Sound + Direct Show + ...
    C'est à dire un ensemble de librairies donc de fonctions permettant de gérer le multimedia dans un environnement Windows. Windows Media Player, par exemple, exploite les fonctionnalités de DirectX pour lire des sons et des videos. DirectX permet de développer des applications en s'affranchissant des drivers nécessaires pour tel ou tel périphérique. Par exemple si je veux développer une application qui enregistre ce que filme une caméra connectée à mon PC, je développe l'interface en MFC par exemple, en C++ donc, et je gère les flux audio et video via directX. Quand la caméra est branchée, j'interroge le flux pour connaître le type d'image, la taille, le nombre de couleurs, le fps... bref tout ce qui me sera nécessaire pour allouer proprement la mémoire nécessaire à la gestion du flux. Ainsi il est possible d'écrire des filtres (des DLL) qui sont des espèces de Beans, interconnectables à souhait, et permettant le développement d'applications performantes très rapidement.

    Ce que je cherche à faire, dans un premier temps, c'est tout simplement réaliser une interface graphique avec des boutons, curseurs, listes déroulantes, radiobuttons... qui puisse tourner sous Windows et Linux en tant qu'application (sinon je peux toujours l'écrire en html !).
    Ensuite, je vais y intégrer des fonctionnalités utilisant DirectX, telles que l'affichage d'une vidéo temps réel, l'enregistrement vocal, la lecture sonore...
    Sous Windows, je sais faire, mais sous Linux, je ne sais pas faire !
    Je voudrais donc savoir si :
    1 - je dois renoncer à ce projet et démissionner
    2 - écrire moi-même DirectX pour Linux et commencer le développement de mon application dans 110 ans
    3 - Emuler Windows sous Linux et faire le café avec mon lave-vaisselle
    4 - Trouver une solution qu me permette d'utiliser les fonctionnalités de DirectX sous un autre nom sous Linux mais avec le même résultat
    5 - Programmer sur Amiga

    Voilà, si besoin, je peux donner d'avantage d'infos sur DirectX, mais je pense que ce n'est pas difficile de trouver !

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Pour la gestion du multimédia, tu peux peut-être te tourner vers JMF (Java Media Framework) : http://java.sun.com/products/java-me...ocs/index.html


    a++

  7. #7
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    SAlut,
    tu fais du C++ ou du Java ?
    Parce qu'en C++ un combo SDL(un espece de DirectX open source, masi je sais pas s'il est portable ?) + Qt ?

    [edit]
    http://fr.wikipedia.org/wiki/Simple_DirectMedia_Layer

    portable et meme attaquable de Java
    "vaste programme"

  8. #8
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    En terme d'interface Java est bien pourvu (swing, swt...). C'est portable, c'est chouette. Pour traiter la vidéo la proposition d'adiGuba a l'air très bien.

    Le problème à mon avis sera l'aquisition du signal de la webCam qui dépend pas mal du système. J'ai peur qu'en pur Java ce soit difficile.

    Sinon il est toujours possible d'appeler du C[++] depuis Java mais pour que ce soit portable il faut founir une version de la partie C pour chaque plateforme. Si le C fourni toujours les mêmes services à la partie Java, il est possible d'utiliser DX sur un système et un autre moyen sur un autre (ou une lib qui existe sur toutes les plateformes). Mais il n'y aura pas direct X tel quel ailleurs que sur Windows... encore que Wine propose certaines de ces fonctionnalités... Tu devrais peut-être regarder ce que wine peut apporter. Il ne fera pas TOUT ce que fait DX10 au complet, mais il doit pouvoir se substituer aux vieilles versions.

    Pour en revenir à la webCam, SANE semble exister aussi sur Windows.

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Sivrît
    Le problème à mon avis sera l'aquisition du signal de la webCam qui dépend pas mal du système. J'ai peur qu'en pur Java ce soit difficile.
    JMF le fait !!! Toutefois cela dépend des implémentations...


    Je m'explique : JMF permet d'encoder/décoder divers types de flux multimedia (audio, video, périphérique de capture).

    JMF propose 4 implémentations :
    • Une implémentation "cross-platform", et donc indépendante du système d'exploitation. Cette implémentation n'est pas forcément un bon choix car elle ne bénéficie pas des optimisations spécifique à un système, ni l'accès aux périphériques bien entendu...
    • Viennent ensuite trois versions "Performance Pack" spécifique a des OS (Windows, Linux et Solaris). Ces dernières permettent de bénéficier des API du système (comme DirectX sous Windows par exemple) et d'accéder aux périphérique.



    Si je ne me trompe pas, tout ce qui passe par DirectShow sous Windows peut être utilisé via JMF version Windows, et tout ce qui utilise Video4Linux sous Linux peut l'être avec la version Linux

    a++

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/04/2006, 12h49
  2. [Date]Date sous Java != celle sous Access
    Par Cyborg289 dans le forum JDBC
    Réponses: 4
    Dernier message: 27/07/2005, 23h11
  3. [Système][Class-Path]cherche aide sous java pour fedoracore ou linux
    Par mickey hollywood dans le forum Général Java
    Réponses: 4
    Dernier message: 29/03/2005, 01h13
  4. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo