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

2D Java Discussion :

[Slick-Util] Problème avec l'affichage de texte


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Par défaut [Slick-Util] Problème avec l'affichage de texte
    Bonjour, lorsque je veux dessiner du texte à l'écran avec l'aide de la librairie Slick-Util et de LWJGL, du texte avec plein de caractères s'affiche après le texte que je veux afficher o.O

    Voici un screenshot du problème :
    Nom : Nm8XD.png
Affichages : 524
Taille : 156,5 Ko

    Voici ma classe Window :
    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    package fr.megastudio.game.disp; 
     
    import static org.lwjgl.opengl.GL11.*;
     
    import org.lwjgl.LWJGLException;
    import org.lwjgl.opengl.Display;
    import org.lwjgl.opengl.DisplayMode;
     
    import fr.megastudio.game.Texture;
    import fr.megastudio.game.Util;
    import fr.megastudio.game.gui.Button;
     
    public class Window {
     
        private static int width;
        private static int height;
     
        private static boolean running = false;
     
        private static boolean tick = false;
        private static boolean render = false;
     
        private static final String NAME = "Game";
     
        private static DisplayMode dm;
     
        public Window(int width, int height){
            Window.width = width;
            Window.height = height;
     
            dm = new DisplayMode(1280, 720);
     
            try {
                Display.setDisplayMode(dm);
                Display.setResizable(true);
                Display.setTitle(NAME);
                Display.create();
     
            } catch (LWJGLException e) { e.printStackTrace(); }
        }
     
        private static void view2D(int width, int height){
     
            glEnable(GL_TEXTURE_2D);
            glShadeModel(GL_SMOOTH);
            glDisable(GL_DEPTH_TEST);
            glDisable(GL_LIGHTING);
     
            glEnable(GL_BLEND);
            glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
     
            glViewport(0, 0, width, height);
     
            glMatrixMode(GL_PROJECTION);
            glLoadIdentity();
     
            glOrtho(0, width, height, 0, 1, -1);
     
            glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();
        }
     
        public static void start(){
            if(running)
                return;
     
            running = true;
     
            loop();
        }
     
        public static void loop(){
     
            double elapsed = 0;
            double nanoSecond = 1000000000.0 / 60.0;
     
            long before = System.nanoTime();
            long timer = System.currentTimeMillis();
     
            int ticks = 0;
            int frames = 0;
     
            while(running){
                Display.update();
                if(Display.isCloseRequested()) stop();
     
                tick = false;
                render = false;
     
                long now = System.nanoTime();
                elapsed = now - before;
     
                if(elapsed > nanoSecond){
                    before += nanoSecond;
                    tick = true;
                    ticks++;
                }else{
                    render = true;
                    frames++;
                }
     
                if(render) render();
                if(tick) update();
     
                if(System.currentTimeMillis() - timer > 1000){
                    timer += 1000;
                    Display.setTitle(NAME + " | FPS: " + frames + " TPS: " + ticks);
                    ticks = 0;
                    frames = 0;
                }
     
            }
     
            exit();
        }
     
        public static void update(){
        }
     
        public static void render(){
            view2D(Display.getWidth(), Display.getHeight());
            width = Display.getWidth();
            height = Display.getHeight();
     
            glClear(GL_COLOR_BUFFER_BIT);
            glClearColor(0.8f, 0.9f, 1.0f, 1.0f);
     
            Renderer.renderQuad(0, 0, width, height, new float[]{0, 100, 50});
     
            Util.drawText("TEST", 16, 16);
        }
     
        public static void stop(){
            running = false;
        }
     
        public static void exit(){
            Display.destroy();
            System.exit(0);
        }
     
     
     
        public static int getWidth(){
            return width;
        }
     
        public static int getHeight(){
            return height;
        }
    }
    Et voici ma classe Util, qui contient la méthode qui permet d'afficher le "texte" :
    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
    package fr.megastudio.game;
     
    import static org.lwjgl.opengl.GL11.*;
     
    import java.awt.Font;
     
    import org.newdawn.slick.TrueTypeFont;
     
     
    public class Util {
     
        private static TrueTypeFont font;
        public static void drawText(String text, int x, int y){
            if(font == null)
                init();
     
            font.drawString(x, y, text);
        }
     
        public static void init(){
            glEnable(GL_BLEND);
            glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
     
            font = new TrueTypeFont(new Font("MS Sans Serif", Font.PLAIN, 30), true);
        }
     
    }

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Par défaut Corrigé mais autre problème.
    Bonjour, j'ai corrigé le problème, cela venait de ma classe Renderer où j'affichais les textures même si elles n'étaient pas précisées :/

    Mais maintenant, j'ai un nouveau problème, en fait, j'ai une classe Button, qui me permet de créer et d'afficher un bouton avec une texture, j'ai ces fonctions dans la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	public void bind(){
    		glBindTexture(GL_TEXTURE_2D, id);
    	}
     
    	public void unbind(){
    		glBindTexture(GL_TEXTURE_2D, 0);
    	}
    Dans ma fonction render() je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	public void render(){
    		img.bind();
    			Renderer.renderQuad(x, y, width, height, Color.WHITE, img, null);
    		img.unbind();
    	}
    Voici la fonction renderQuad du Renderer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	public static void renderQuad(float x, float y, float width, float height, Color color, Texture tex){
    		glBegin(GL_QUADS);
    			float[] c = color.get4f();
    			glColor4f(c[0], c[1], c[2], c[3]);
    			if(tex != null) glTexCoord2f(0, 0);    glVertex2f(x, y);
    			if(tex != null) glTexCoord2f(1, 0);    glVertex2f(x + width, y);
    			if(tex != null) glTexCoord2f(1, 1);    glVertex2f(x + width, y + height);
    			if(tex != null) glTexCoord2f(0, 1);    glVertex2f(x, y + height);
    		glEnd();
    	}
    Le problème est donc, qu'avec ce code, lorsque le bouton s'affiche, les textes n'affichent plus que des carrés blancs :/
    Si je commente le code qui est dans les fonctions bind() et unbind(), les textes s'affichent correctement mais les carrés n'affichent plus leur texture '-'

    Savez-vous comment corriger le problème ? Avez-vous besoin de plus de code de mes classes ?

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2016
    Messages : 2
    Par défaut Plus de précisions
    Pourrais tu mettre les codes de ton bouton en entier et la façon dont tu écrit tes texte (librairie), car si tu utilisé slick-util,
    j'ai trouvée une solution, tu peut utiliser cette classe http://pastebin.com/KK4UpXy8.

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/03/2007, 12h36
  2. problème avec l'affichage des caractères spéciaux
    Par michelkey dans le forum Général Python
    Réponses: 4
    Dernier message: 19/08/2005, 08h09
  3. Problème avec l'affichage de souris INT 33,01h
    Par belgampaul dans le forum Assembleur
    Réponses: 7
    Dernier message: 07/12/2004, 21h37
  4. Réponses: 11
    Dernier message: 16/12/2003, 19h58

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