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

DirectX Discussion :

Ecrire du texte sur une fenêtre de Jeu vidéo (OSD)


Sujet :

DirectX

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Ecrire du texte sur une fenêtre de Jeu vidéo (OSD)
    Bonjour,

    J'aimerais savoir quelle méthode peut être utilisée pour afficher via un programme externe, des informations dans la fenêtre Overlay d'un Jeu vidéo fonctionnant sur une machine (par exemple un compteur FPS).

    Ceci dans le but d'afficher des informations techniques sur la machine pendant l'exécution d'un jeu.

    Le langage utilisé est principalement C#

    Merci d'avance pour vos conseils

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    hello,
    il existe un programme pour voire le nombre d'immages par secondes, sa marche avec directx et open gl

    c'est ici -->http://www.01net.com/telecharger/win...ches/5190.html

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Fraps je connais bien... Là c'est différent il s'agit pour moi de coder un module intégré à un systeme de dialogue VoIP.

    Afin d'afficher dans un jeu ou autre, des informations, un peu comme les affichages "tête haute" des avions.

    Je ne demande pas des sources ou autre, mais une approche permettant de le faire.

    Merci

  4. #4
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    pas possible en C# (à moins de s'interfacer avec une partie en C..).

    la méthode utilisée par Fraps:
    injection dans le process de tout programme tournant sur ton PC,
    recherche de l'adresse de la fonction begin/end scene ou present.
    Remplacement du code d'appel de ces fonctions par un code custom (en sauvegardant le tout pour pouvoir se décharger proprement).

    Ensuite l'overlay lui-meme se fait par envoi de nouvelles commandes à l'API (clear dans le cas de fraps)

    Une librairie développée par MS qui facilite l'instrumentation de dlls :
    http://research.microsoft.com/sn/detours/

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Points : 2 113
    Points
    2 113
    Par défaut
    Bonjour,

    Est-ce la seule méthode pour arriver à afficher un programme (simplement du texte ou pourquoi pas une fenêtre) au dessus de "la fenêtre Overlay d'un Jeu vidéo" ?

    L'overlay signifie que l'application à la monopole de l'écran ? Et la seule possibilité est de modifier (par injection de code) cette application si on veut rajouter des choses à l'écran ?
    "If you can't teach it then you don't know it."

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 68
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par goomazio Voir le message
    Bonjour,

    Est-ce la seule méthode pour arriver à afficher un programme (simplement du texte ou pourquoi pas une fenêtre) au dessus de "la fenêtre Overlay d'un Jeu vidéo" ?

    L'overlay signifie que l'application à la monopole de l'écran ? Et la seule possibilité est de modifier (par injection de code) cette application si on veut rajouter des choses à l'écran ?
    La méthode "par overlay" peu fonctionner mais seulement si le jeu n'est pas en plein écran... tu pourrais te poser "au dessus".

    Pour le DirectX en plein écran il n'y a pas que la solution de l'injection, tu pourrais très bien fonctionner en "proxy dll", c'est à dire créer une d3d9.dll et la placer dans le répertoire du jeu, qui, du coup, ne va pas aller la chercher dans \system32\.
    Par contre évidemment c'est à toi de faire la liaison avec la "vrai" d3d9.dll et de hooker, entre autre, "Present" où tu pourras ajouter ton code et donc tes affichages personnels puisque c'est le point entre BeginScene et EndScene....

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Points : 2 113
    Points
    2 113
    Par défaut
    Merci pour t'as réponse.
    Finalement, pour faire une simple chose comme afficher du texte à l'écran, c'est super compliqué. Ce problème est du au système d'exploitation ou c'est une obligation technique ?

    Sur linux c'est la même chose ?
    "If you can't teach it then you don't know it."

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 68
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par goomazio Voir le message
    Merci pour t'as réponse.
    Finalement, pour faire une simple chose comme afficher du texte à l'écran, c'est super compliqué. Ce problème est du au système d'exploitation ou c'est une obligation technique ?

    Sur linux c'est la même chose ?

    Bonjour,

    J'ai trouvé ça compliqué aussi mais l'aventure m'interresse donc je fonce...

    Afficher quelque chose à l'écran est très simple dès l'instant où ont est dans sa propre application. Par contre effectivement, si l'on veut "ajouter" du texte ou des éléments graphiques dans une autre application, DirectX de surcroit, les choses se compliquent !

    Personnellement j'ai opté pour le proxy-dll en exploitant le fait qu'un programme DirectX cherche "d3d9.dll" dans son répertoire d'installation avant d'aller la chercher dans le répertoire system32.
    Donc forcément, en nommant ma dll "d3d9.dll" je suis sûr que le jeu va la confondre avec celle de microsoft et la charger.

    Ensuite évidemment il faut faire sois-même le lien avec la "vrai" et établir des hook sur les fonctions et procédures requise.

    Le fait de hooker DirectX"Present" fait que je me retrouve entre BeginScene et EndScene.... c'est l'endroit idéal pour ajouter du texte à l'écran dans une application DirectX.....

    Alek.


    PS: Je ne connais de Linux que sont nom :s ^^

Discussions similaires

  1. Ecrire du texte sur une image
    Par Goofyjp dans le forum Composants VCL
    Réponses: 2
    Dernier message: 11/11/2008, 00h26
  2. [GLFW]Ecrire du texte sur une fenêtre GLFW
    Par iluv dans le forum OpenGL
    Réponses: 14
    Dernier message: 12/04/2006, 16h00
  3. Ecrire du texte sur une Overlay Surface
    Par deakuk dans le forum DirectX
    Réponses: 1
    Dernier message: 17/02/2006, 13h52
  4. Faire défiler un texte sur une fenêtre
    Par Crisanar dans le forum Windows
    Réponses: 15
    Dernier message: 24/11/2004, 23h05
  5. [VMR9][D3D9]ecrire un texte sur une surface
    Par drizztfr dans le forum DirectX
    Réponses: 2
    Dernier message: 13/11/2003, 15h06

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