Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (499)
Games in Android Showcase (118)
games submitted by our members
Games in WIP (567)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Need help understanding TextRenderer and positioning text along z axis  (Read 530 times)
0 Members and 1 Guest are viewing this topic.
Offline Furrage

Junior Newbie





« Posted 2011-01-04 05:03:05 »

Hi all, how do I get the TextRenderer to respect the depth buffer?

I want my text drawn with depth/z = 0 but to respect the depth function GL_LESS. That means it should not overwrite pixels already drawn with depth = 0 and not be overwritten by pixels drawn later with depth = 0.

To be more specific, I am experimenting with OpenGL and was trying to build a basic GUI component (textbox/label) for my application. I have reached the point where I can do a box using gl.glBegin(GL_LINE_LOOP), fill in the background using gl.glBegin(GL_QUADS), and want to use a TextRenderer to render text. However, if I let it disable the depth test using textRenderer.Draw(...) the control's text draws on top of everthing, even if the box is hidden by something. If I allow depth testing it appears that the text is being drawn with a depth/z value of -0.5 which is behind the control's background and other images. Neither of these results are desireable.

I also tried using TextRenderer.Draw3D(x, y, z = 0...) and it seems to draw properly, but I get artifacts around the letters, like the letters are on a rectangle with a black background. If I could even get that background transparent that would help. That looks like something to do with drawing textures, but I barely understand textures and I can't see how to specify texture coordinates and bindings for the text from the TextRenderer
Offline Furrage

Junior Newbie





« Reply #1 - Posted 2011-01-04 05:06:42 »

This is the latest code I have. When I use it I get artifacts around the letters.
 
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  
    /** Displays the control.
     * @param gl Reference to the OpenGL context.
     */

    public void Display(GL gl) {

        /* If control's border should be shown... */
        if (options.IsSet(OPTION_VISIBLE_BORDER)) {
           
            /* Set drawing colour for control's border. */
            gl.glColor4fv(currentBorderColour, 0);

            /* Draw control's borders. */
            gl.glBegin(GL.GL_LINE_LOOP);
                gl.glVertex3d(left, bottom, 0);
                gl.glVertex3d(right, bottom, 0);
                gl.glVertex3d(right, top, 0);
                gl.glVertex3d(left, top, 0);
            gl.glEnd();

        }

        /* If control's text should be shown... */
        if (options.IsSet(OPTION_VISIBLE_TEXT) && (null != textRenderer) && (null != text) && !text.equals("")) {

            /* Prepare text renderer to display text. */
            textRenderer.begin3DRendering();

            /* Set drawing colour for control's text. */
            textRenderer.setColor(currentTextColour[0], currentTextColour[1], currentTextColour[2], currentTextColour[3]);

            /* Draw control's text. */
            textRenderer.draw3D(text, (int)(left + margin), (int)(bottom + margin + textOffset), 0, 1f);

            /* Complete text rendering. */
            textRenderer.end3DRendering();

        }

        /* If control's background should be shown... */
        if (options.IsSet(OPTION_VISIBLE_BACKGROUND)) {

            /* Set drawing colour for control's background. */
            gl.glColor4fv(currentBackgroundColour, 0);

            /* Draw control's background. */
            gl.glBegin(GL.GL_QUADS);
                gl.glVertex3d(left, bottom, 0);
                gl.glVertex3d(right, bottom, 0);
                gl.glVertex3d(right, top, 0);
                gl.glVertex3d(left, top, 0);
            gl.glEnd();

        }

        /* (TODO) complete drawing code. */

    }
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

Pippogeek (38 views)
2014-09-24 16:13:29

Pippogeek (29 views)
2014-09-24 16:12:22

Pippogeek (18 views)
2014-09-24 16:12:06

Grunnt (42 views)
2014-09-23 14:38:19

radar3301 (24 views)
2014-09-21 23:33:17

BurntPizza (61 views)
2014-09-21 02:42:18

BurntPizza (31 views)
2014-09-21 01:30:30

moogie (36 views)
2014-09-21 00:26:15

UprightPath (49 views)
2014-09-20 20:14:06

BurntPizza (53 views)
2014-09-19 03:14:18
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!