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

OpenGL Discussion :

[GLFW]Ecrire du texte sur une fenêtre GLFW


Sujet :

OpenGL

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 56
    Points
    56
    Par défaut [GLFW]Ecrire du texte sur une fenêtre GLFW
    Bonjour à tous,

    Je suis actuellement (et désespérement) en train d'essayer d'écrire un texte simple sur une fenêtre simple, crée avec le très simple GLFW.

    J'ai donc parcouru l'excellent tuto de nehe, et tenté de le retranscrire pour Delphi et GLFW (en m'aidant du code delphi fournit sur le site).

    Après cela ça ne marchait pas (sans pour autant générer d'erreur).

    J'ai donc pris le code delphi dispo sur le nehe, puis j'ai modifié tous les endroits où je différait dans l'espoir que ça marche (ce qui expliquera les commentaires en tchèque(?)).

    Je tente donc de compiler, une fenêtre s'ouvre bien, mais le texte d'apparait toujours pas.

    Je fais donc appel à la charmante communautée developpez.com dans l'espoir qu'au moins une personne sache ce que je peux faire :]

    Je vous fourni le code ici (sur pastebin.com).

    Merci à tous ceux qui se pencheront sur mon problème

    iLUV

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Je n'ai jamais fait de Delphi donc mon aide sera plus que sommaire:

    - Es-tu sûr de ton utilisation des ' à la place des guillemets "?
    - Toutes ces fonctions retournent quelque chose, pourquoi ne pas tester les retours pour des erreurs?

    J'ai donc pris le code delphi dispo sur le nehe, puis j'ai modifié tous les endroits où je différait dans l'espoir que ça marche (ce qui expliquera les commentaires en tchèque(?)).
    Quels endroits justement? Pourquoi ne pas d'abord tester le code nehe de base?

    Jc

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par fearyourself
    Je n'ai jamais fait de Delphi donc mon aide sera plus que sommaire:

    - Es-tu sûr de ton utilisation des ' à la place des guillemets "?
    - Toutes ces fonctions retournent quelque chose, pourquoi ne pas tester les retours pour des erreurs?

    J'ai donc pris le code delphi dispo sur le nehe, puis j'ai modifié tous les endroits où je différait dans l'espoir que ça marche (ce qui expliquera les commentaires en tchèque(?)).
    Quels endroits justement? Pourquoi ne pas d'abord tester le code nehe de base?

    Jc
    Salut Jc, et merci de t'être penché sur mon problème.

    En pascal c'est effectivement des quotes simples qu'on utilise pour délimiter les chaînes de caractères.

    J'ai testé le code de nehe de base, le truc c'est que sur ce site ils donnent du code en C et moi je bosse en Delphi, et ils n'utilisent pas glfw, que moi j'utilise :/
    Mais nehe propose les scripts sous différents langages, mais qui suivent strictement le tuto, c'est un de ceux là que j'ai utilisé pour les comparaisons, ce qui fait que normalement ça ne devrait pas planter.
    Surtout que le script delphi que j'ai pris fonctionne lui

    Enfin, j'ai fait comme tu as dit, j'ai testé avec les retours quelle fonction pouvait poser problème et il semblerait qu'il s'agisse de "wglUseFontBitmaps"...
    à vrai dire je n'ai aucune idée de comment la faire marcher, selon le tuto, elle prendrait en paramètre une variable de type HDC (?) qui est utilisée lors de l'initialisation opengl en utilisant l'API windows, mais qui ne me semble pas exister quand j'utilise glfw... j'en ai donc créé une, mais apprement ce n'est pas comme ça que ça marche...

  4. #4
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 528
    Points : 5 197
    Points
    5 197
    Par défaut
    Citation Envoyé par iluv
    J'ai testé le code de nehe de base, le truc c'est que sur ce site ils donnent du code en C et moi je bosse en Delphi, et ils n'utilisent pas glfw, que moi j'utilise :/
    Tu essayes de retranscrire le tutorial 13 de Nehe, "Bitmap Fonts" ?
    tout en bas de chaque tutorial, tu as les portages de code, y compris en delphi dans nombre de cas (peut-etre pazs tous)
    et là, le tut 13 en delphi
    http://nehe.gamedev.net/data/lessons/delphi/lesson13.zip
    il te reste à y utiliser glfw à la place de win32

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 56
    Points
    56
    Par défaut
    Salut,

    Merci de t'intéresser à mon problème mais ce que tu me dit là (adapter win32 à glfw) est justement (il me semble) mon problème

  6. #6
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par iluv
    Salut,

    Merci de t'intéresser à mon problème mais ce que tu me dit là (adapter win32 à glfw) est justement (il me semble) mon problème
    Oui j'ai eu le temps de regarder un peu. Il semblerait que glfw cache (un peu comme glut/sdl) l'implémentation système sous-jacente pour ouvrir une fenêtre.

    Vu que tu veux utiliser la fonction wglUseFontBitmaps, tu as besoin du descripteur de la fenêtre windows dans laquelle tu te trouves (généralement appelé hDC). glfw la stocke dans une variable globale (visiblement, mais je ne pourrais pas le certifié)

    [EDIT]
    On le voit ici:
    Dans le fichier lib/win32/platform.h lorsque tu regardes les sources...
    [/EDIT]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    struct _GLFWwin_struct {
        // Window states
        int       Opened;          // Flag telling if window is opened or not
        int       Active;          // Application active flag
        int       Iconified;       // Window iconified flag
     
        // User selected window settings
        int       SysKeysDisabled; // System keys disabled flag
        int       Fullscreen;      // Fullscreen flag
        int       RefreshRate;     // Refresh rate (for fullscreen mode)
        int       MouseLock;       // Mouse-lock flag
     
        // Window resources
     
        //fearyourself - C'est cette valeur qu'il te faudrait
        HDC       DC;              // Private GDI device context
     
     
        HGLRC     RC;              // Permanent rendering context
        HWND      Wnd;             // Window handle
        HINSTANCE Instance;        // Instance of the application
        int       ModeID;          // Mode ID for fullscreen mode
        HHOOK     KeyboardHook;    // Keyboard hook handle
     
        // Window status
        int       Width, Height;   // Window width and heigth
     
        // Extensions
        int       Has_GL_SGIS_generate_mipmap;
     
        // Various internal variables
        int       OldMouseLock;    // Old mouse-lock flag (used for remembering
                                   // mouse-lock state when iconifying)
        int       OldMouseLockValid;
    };
     
    GLFWGLOBAL _GLFWwin _glfwWin;
    Mais je ne sais pas si tu as accès à cette structure ou si tu devrais y accéder directement. Je n'ai rien vu dans la documentation, mais au final, il faut que tu récupères un descripteur valide et il doit avoir une solution pour que glfw te le procure. Une autre solution étant de ne pas utiliser wglUseFontBitmaps, comme ça plus de problème. Mais alors il faut faire ta propre fonction...

    De toute façon, en utilisant wglUseFontBitmaps ou en tentant de récupérer cette variable, ton code deviendra non portable, est-ce vraiment ce que tu veux?

    Pourquoi utiliser glfw alors?

    Espérant que cela inspirera des gens plus compétent que moi dans le monde de glfw (je n'en ai jamais fait)...

    Jc

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 56
    Points
    56
    Par défaut
    A vrai dire la portabilité je m'en fous un peu, je dois faire pour l'école un jeu (damn it) et il doit tourner sous windows (redamn it) donc la portabilité je verrais l'année prochaine :p

    GLFW j'utilise parcequ'on bosse en groupe, et vu que ça fait un certain temps qu'on bosse avec, autant continuer, surtout qu'il est clairement possible de finir le jeu avec.

    En tout cas merci pour ta réponse, je pense que ça m'aidera à avancer, je testerais après déjeuner

  8. #8
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 528
    Points : 5 197
    Points
    5 197
    Par défaut
    Citation Envoyé par iluv
    Salut,

    Merci de t'intéresser à mon problème mais ce que tu me dit là (adapter win32 à glfw) est justement (il me semble) mon problème
    Autant pour moi, en fait ton problème est un faux problème : wglUseFontBitmaps est une fonction... win32
    donc oui il lui faut le hDC, chose que (je pense) tu ne peux pas obtenir de glfw qui se veux portable (ce que n'est pas wglUseFontBitmaps)
    pour moi, tu as 2 solutions :
    -tu laisses tomber wglUseFontBitmaps pour utiliser glfw et tu te fait ta propre fonction de création de font bitmap (ou tu utilises une bibliothèque qui gère cela)
    -ou alors tu laisses tomber glfw pour pouvoir utiliser wglUseFontBitmaps (mauvaise solution de mon point de vue puisque tu perds le côté portable du code)

    pour info, dans les exemples fournis avec glfw il y a des quoi gérer du texte, mais je pense que c'est à base de texture
    sinon dans le projet suivant il utilises une petite portion de code simple pour afficher du texte en bitmap :
    http://www.codesampler.com/oglsrc/oglsrc_7.htm#ogl_occlusion_query

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 56
    Points
    56
    Par défaut
    Salut,

    Je dois avouer que je suis un peu troublé :/

    D'un côté fearyourself qui me fait plus ou moins comprendre que mon problème se resolverait si je pouvais accéder au descripteur utilisé par GLFW.

    De l'autre shenron666 qui me dit que c'est simplement impossible de l'obtenir sur glfw parceque sinon il ne serait pas portable.

    Mais pour ouvrir une fenetre glfw doit bien utiliser un équivalent non?

    Et puis dans platform.h on voit bien qu'il (glfw) utilise une variable "HDC" ( " HDC DC; // Private GDI device context ")

    Mais euh... j'ai vaguement cru comprendre que les .h s'utilisaient en C (je suis une quiche ne prog :/) et donc en delphi dans quel fichier dois je fouiller pour voir ça?

    Enfin, merci pour votre aide à tous quand même :]

    @+

    iLUV

  10. #10
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 670
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 670
    Points : 7 038
    Points
    7 038
    Par défaut
    Citation Envoyé par iluv
    Mais euh... j'ai vaguement cru comprendre que les .h s'utilisaient en C (je suis une quiche ne prog :/) et donc en delphi dans quel fichier dois je fouiller pour voir ça?
    En Delphi, tu n'as que des *.pas

  11. #11
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 528
    Points : 5 197
    Points
    5 197
    Par défaut
    Citation Envoyé par iluv
    Mais pour ouvrir une fenetre glfw doit bien utiliser un équivalent non?

    Et puis dans platform.h on voit bien qu'il (glfw) utilise une variable "HDC" ( " HDC DC; // Private GDI device context ")
    Oui mais le HDC c'est pour windows, pour mac ou linux il n'utilise pas de HDC
    de plus, dans platform.h comme tu le cite toi même, le HDC est private donc inaccessible

  12. #12
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par shenron666
    Citation Envoyé par iluv
    Mais pour ouvrir une fenetre glfw doit bien utiliser un équivalent non?

    Et puis dans platform.h on voit bien qu'il (glfw) utilise une variable "HDC" ( " HDC DC; // Private GDI device context ")
    Oui mais le HDC c'est pour windows, pour mac ou linux il n'utilise pas de HDC
    de plus, dans platform.h comme tu le cite toi même, le HDC est private donc inaccessible
    Ce qui est sûr c'est que trifouiller dans les entrailles de glfw pour utiliser le hdc est une mauvaise idée. Impossible, probablement pas? Qui devrait être évité? Oui!

    Tu as deux possibilités raisonnables:

    - Si tu programmes qu'en windows et tu fais du OpenGL, prend le premier tutoriel de nehe pour ouvrir une fenêtre en Windows en utilisant l'API windows. Tu auras directement accès à la variable hdc tant voulue.

    - Continues avec glfw et utilises autre chose pour gérer ton texte, une bibliothèque extérieur ou utilises un bitmap pour faire ton texte (encore une fois, un tutoriel nehe explique comment).

    Jc

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 56
    Points
    56
    Par défaut
    bon, bah on va oublier ce wglUseFontBitmaps :]

    Donc, je me suis tourné vers sulaco (je vais quand même lire le tuto suivant de nehe histoire de voir si c'est "mieux"), et j'

    J'arrive donc bien à afficher du texte.

    Seulement je ne comprend pas très bien comment ça marche, et je me que peut être quelqun saurait m'expliquer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
       rasters :array[0..94] of array[0..12] of GLubyte = (
        ($00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00),
        ($00, $00, $18, $18, $00, $00, $18, $18, $18, $18, $18, $18, $18),
        ($00, $00, $00, $00, $00, $00, $00, $00, $00, $36, $36, $36, $36),
        ($00, $00, $00, $66, $66, $ff, $66, $66, $ff, $66, $66, $00, $00),
        ($00, $00, $18, $7e, $ff, $1b, $1f, $7e, $f8, $d8, $ff, $7e, $18),
        ($00, $00, $0e, $1b, $db, $6e, $30, $18, $0c, $76, $db, $d8, $70),
        ($00, $00, $7f, $c6, $cf, $d8, $70, $70, $d8, $cc, $cc, $6c, $38),
        ($00, $00, $00, $00, $00, $00, $00, $00, $00, $18, $1c, $0c, $0e),
        ($00, $00, $0c, $18, $30, $30, $30, $30, $30, $30, $30, $18, $0c),
        ($00, $00, $30, $18, $0c, $0c, $0c, $0c, $0c, $0c, $0c, $18, $30),
        ($00, $00, $00, $00, $99, $5a, $3c, $ff, $3c, $5a, $99, $00, $00),
        ($00, $00, $00, $18, $18, $18, $ff, $ff, $18, $18, $18, $00, $00),
        ($00, $00, $30, $18, $1c, $1c, $00, $00, $00, $00, $00, $00, $00),
        ($00, $00, $00, $00, $00, $00, $ff, $ff, $00, $00, $00, $00, $00),
        ($00, $00, $00, $38, $38, $00, $00, $00, $00, $00, $00, $00, $00),
        ($00, $60, $60, $30, $30, $18, $18, $0c, $0c, $06, $06, $03, $03),
        ($00, $00, $3c, $66, $c3, $e3, $f3, $db, $cf, $c7, $c3, $66, $3c),
        ($00, $00, $7e, $18, $18, $18, $18, $18, $18, $18, $78, $38, $18),
        ($00, $00, $ff, $c0, $c0, $60, $30, $18, $0c, $06, $03, $e7, $7e),
        ($00, $00, $7e, $e7, $03, $03, $07, $7e, $07, $03, $03, $e7, $7e),
        ($00, $00, $0c, $0c, $0c, $0c, $0c, $ff, $cc, $6c, $3c, $1c, $0c),
        ($00, $00, $7e, $e7, $03, $03, $07, $fe, $c0, $c0, $c0, $c0, $ff),
        ($00, $00, $7e, $e7, $c3, $c3, $c7, $fe, $c0, $c0, $c0, $e7, $7e),
        ($00, $00, $30, $30, $30, $30, $18, $0c, $06, $03, $03, $03, $ff),
        ($00, $00, $7e, $e7, $c3, $c3, $e7, $7e, $e7, $c3, $c3, $e7, $7e),
        ($00, $00, $7e, $e7, $03, $03, $03, $7f, $e7, $c3, $c3, $e7, $7e),
        ($00, $00, $00, $38, $38, $00, $00, $38, $38, $00, $00, $00, $00),
        ($00, $00, $30, $18, $1c, $1c, $00, $00, $1c, $1c, $00, $00, $00),
        ($00, $00, $06, $0c, $18, $30, $60, $c0, $60, $30, $18, $0c, $06),
        ($00, $00, $00, $00, $ff, $ff, $00, $ff, $ff, $00, $00, $00, $00),
        ($00, $00, $60, $30, $18, $0c, $06, $03, $06, $0c, $18, $30, $60),
        ($00, $00, $18, $00, $00, $18, $18, $0c, $06, $03, $c3, $c3, $7e),
        ($00, $00, $3f, $60, $cf, $db, $d3, $dd, $c3, $7e, $00, $00, $00),
        ($00, $00, $c3, $c3, $c3, $c3, $ff, $c3, $c3, $c3, $66, $3c, $18),
        ($00, $00, $fe, $c7, $c3, $c3, $c7, $fe, $c7, $c3, $c3, $c7, $fe),
        ($00, $00, $7e, $e7, $c0, $c0, $c0, $c0, $c0, $c0, $c0, $e7, $7e),
        ($00, $00, $fc, $ce, $c7, $c3, $c3, $c3, $c3, $c3, $c7, $ce, $fc),
        ($00, $00, $ff, $c0, $c0, $c0, $c0, $fc, $c0, $c0, $c0, $c0, $ff),
        ($00, $00, $c0, $c0, $c0, $c0, $c0, $c0, $fc, $c0, $c0, $c0, $ff),
        ($00, $00, $7e, $e7, $c3, $c3, $cf, $c0, $c0, $c0, $c0, $e7, $7e),
        ($00, $00, $c3, $c3, $c3, $c3, $c3, $ff, $c3, $c3, $c3, $c3, $c3),
        ($00, $00, $7e, $18, $18, $18, $18, $18, $18, $18, $18, $18, $7e),
        ($00, $00, $7c, $ee, $c6, $06, $06, $06, $06, $06, $06, $06, $06),
        ($00, $00, $c3, $c6, $cc, $d8, $f0, $e0, $f0, $d8, $cc, $c6, $c3),
        ($00, $00, $ff, $c0, $c0, $c0, $c0, $c0, $c0, $c0, $c0, $c0, $c0),
        ($00, $00, $c3, $c3, $c3, $c3, $c3, $c3, $db, $ff, $ff, $e7, $c3),
        ($00, $00, $c7, $c7, $cf, $cf, $df, $db, $fb, $f3, $f3, $e3, $e3),
        ($00, $00, $7e, $e7, $c3, $c3, $c3, $c3, $c3, $c3, $c3, $e7, $7e),
        ($00, $00, $c0, $c0, $c0, $c0, $c0, $fe, $c7, $c3, $c3, $c7, $fe),
        ($00, $00, $3f, $6e, $df, $db, $c3, $c3, $c3, $c3, $c3, $66, $3c),
        ($00, $00, $c3, $c6, $cc, $d8, $f0, $fe, $c7, $c3, $c3, $c7, $fe),
        ($00, $00, $7e, $e7, $03, $03, $07, $7e, $e0, $c0, $c0, $e7, $7e),
        ($00, $00, $18, $18, $18, $18, $18, $18, $18, $18, $18, $18, $ff),
        ($00, $00, $7e, $e7, $c3, $c3, $c3, $c3, $c3, $c3, $c3, $c3, $c3),
        ($00, $00, $18, $3c, $3c, $66, $66, $c3, $c3, $c3, $c3, $c3, $c3),
        ($00, $00, $c3, $e7, $ff, $ff, $db, $db, $c3, $c3, $c3, $c3, $c3),
        ($00, $00, $c3, $66, $66, $3c, $3c, $18, $3c, $3c, $66, $66, $c3),
        ($00, $00, $18, $18, $18, $18, $18, $18, $3c, $3c, $66, $66, $c3),
        ($00, $00, $ff, $c0, $c0, $60, $30, $7e, $0c, $06, $03, $03, $ff),
        ($00, $00, $3c, $30, $30, $30, $30, $30, $30, $30, $30, $30, $3c),
        ($00, $03, $03, $06, $06, $0c, $0c, $18, $18, $30, $30, $60, $60),
        ($00, $00, $3c, $0c, $0c, $0c, $0c, $0c, $0c, $0c, $0c, $0c, $3c),
        ($00, $00, $00, $00, $00, $00, $00, $00, $00, $c3, $66, $3c, $18),
        ($ff, $ff, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00),
        ($00, $00, $00, $00, $00, $00, $00, $00, $00, $18, $38, $30, $70),
        ($00, $00, $7f, $c3, $c3, $7f, $03, $c3, $7e, $00, $00, $00, $00),
        ($00, $00, $fe, $c3, $c3, $c3, $c3, $fe, $c0, $c0, $c0, $c0, $c0),
        ($00, $00, $7e, $c3, $c0, $c0, $c0, $c3, $7e, $00, $00, $00, $00),
        ($00, $00, $7f, $c3, $c3, $c3, $c3, $7f, $03, $03, $03, $03, $03),
        ($00, $00, $7f, $c0, $c0, $fe, $c3, $c3, $7e, $00, $00, $00, $00),
        ($00, $00, $30, $30, $30, $30, $30, $fc, $30, $30, $30, $33, $1e),
        ($7e, $c3, $03, $03, $7f, $c3, $c3, $c3, $7e, $00, $00, $00, $00),
        ($00, $00, $c3, $c3, $c3, $c3, $c3, $c3, $fe, $c0, $c0, $c0, $c0),
        ($00, $00, $18, $18, $18, $18, $18, $18, $18, $00, $00, $18, $00),
        ($38, $6c, $0c, $0c, $0c, $0c, $0c, $0c, $0c, $00, $00, $0c, $00),
        ($00, $00, $c6, $cc, $f8, $f0, $d8, $cc, $c6, $c0, $c0, $c0, $c0),
        ($00, $00, $7e, $18, $18, $18, $18, $18, $18, $18, $18, $18, $78),
        ($00, $00, $db, $db, $db, $db, $db, $db, $fe, $00, $00, $00, $00),
        ($00, $00, $c6, $c6, $c6, $c6, $c6, $c6, $fc, $00, $00, $00, $00),
        ($00, $00, $7c, $c6, $c6, $c6, $c6, $c6, $7c, $00, $00, $00, $00),
        ($c0, $c0, $c0, $fe, $c3, $c3, $c3, $c3, $fe, $00, $00, $00, $00),
        ($03, $03, $03, $7f, $c3, $c3, $c3, $c3, $7f, $00, $00, $00, $00),
        ($00, $00, $c0, $c0, $c0, $c0, $c0, $e0, $fe, $00, $00, $00, $00),
        ($00, $00, $fe, $03, $03, $7e, $c0, $c0, $7f, $00, $00, $00, $00),
        ($00, $00, $1c, $36, $30, $30, $30, $30, $fc, $30, $30, $30, $00),
        ($00, $00, $7e, $c6, $c6, $c6, $c6, $c6, $c6, $00, $00, $00, $00),
        ($00, $00, $18, $3c, $3c, $66, $66, $c3, $c3, $00, $00, $00, $00),
        ($00, $00, $c3, $e7, $ff, $db, $c3, $c3, $c3, $00, $00, $00, $00),
        ($00, $00, $c3, $66, $3c, $18, $3c, $66, $c3, $00, $00, $00, $00),
        ($c0, $60, $60, $30, $18, $3c, $66, $66, $c3, $00, $00, $00, $00),
        ($00, $00, $ff, $60, $30, $18, $0c, $06, $ff, $00, $00, $00, $00),
        ($00, $00, $0f, $18, $18, $18, $38, $f0, $38, $18, $18, $18, $0f),
        ($18, $18, $18, $18, $18, $18, $18, $18, $18, $18, $18, $18, $18),
        ($00, $00, $f0, $18, $18, $18, $1c, $0f, $1c, $18, $18, $18, $f0),
        ($00, $00, $00, $00, $00, $00, $06, $8f, $f1, $60, $00, $00, $00)
     
    );
    On commence par définir ce gros tableau qui à vrai dire ne signifie absolument rien pour moi :/ enfin, je suppose que chaque case contient un caractère, mais je ne vois vraiment pas ce qui le définit (en gros, c'est quoi ces enchaînements de $00, $18, $0f ...)
    Je suppose aussi que c'est là qu'on définit la font utilisée, mais si par exemple j'avais envie d'en changer (faut avouer que c'est moche ce que ça rend^^) comment faire?

    Le reste du code est assez clair, donc je ne pense pas avoir besoin d'explications.

    Merci à tous pour votre aide.

    iLUV

  14. #14
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 528
    Points : 5 197
    Points
    5 197
    Par défaut
    le tableau doit effectivement définir la forme des caractères
    il faut déjà connaitre la fonction glBitmap pour comprendre ce que contient ce tableau
    en fait, glBitmap attend un champ de bits (et non de bytes)
    donc un caractère tel qu'un point tiendrait sur 1 bit mais bien sûr on ne sait pas stocker moins que des bytes donc il tiendrait de toute façon dans 1 octet

    si tu veux changer tu as 2 méthodes, aucune n'est simple

    -ou tu redéfinis le tableau, il existe peut-etre des utilitaires pour ça, je ne sais pas comment il l'a créé, peut-etre à la main, bref tu imagines la galère

    -ou alors tu te crée une classe (ou une structure remplie par une bonne fonction si tu roule en C) qui charge une police truetype (un fichier ttf) et qui te crée tes caractères, c'est plus long mais bien plus puissant souple ect (si cela t'intéresse, cherches FreeType ou regardes l'exemple nehe "FreeType Fonts in OpenGL")

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 56
    Points
    56
    Par défaut
    -ou alors tu te crée une classe (ou une structure remplie par une bonne fonction si tu roule en C) qui charge une police truetype (un fichier ttf) et qui te crée tes caractères, c'est plus long mais bien plus puissant souple ect (si cela t'intéresse, cherches FreeType ou regardes l'exemple nehe "FreeType Fonts in OpenGL")
    Cette solution me semble parfaitement correspondre à ce que je voudrais faire, je vais donc tenter de l'implémenter.

    J'ai donc jetté un oeil sur le tuto de nehe, et je suis donc partit à la recherche de Freetype pour delphi, j'arrive sur Koder.com qui me fournit (à première vue) tous les fichiers que je veux, mais quand j'essaye de compiler, un fichier me pose pas mal de problèmes, avec un certain nombre de fonctions non définies...

    Donc si certain d'entre vous utilisent freetype, est ce que vous sauriez me donner la définition de :

    procedure MulTo64( X, Y : Int32; var Z : Int64 );
    procedure Add64( var X, Y, Z : Int64 );
    procedure Sub64( var X, Y, Z : Int64 );
    function Div64by32( var X : Int64; Y : Int32 ) : Int32;

    ce serait plutôt sympa

Discussions similaires

  1. Ecrire du texte sur une fenêtre de Jeu vidéo (OSD)
    Par zenway dans le forum DirectX
    Réponses: 7
    Dernier message: 07/03/2009, 14h06
  2. Ecrire du texte sur une image
    Par Goofyjp dans le forum Composants VCL
    Réponses: 2
    Dernier message: 11/11/2008, 00h26
  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