Gerix
Active Member
- Joined
- Jan 25, 2010
- Messages
- 767
- Age
- 37
I am attempting to write a class that prints text to the screen using openGL. I was trying to follow NeHe's tutorial on outline fonts, but it seems he farms out the loading of the font to a wgl function. Since the tutorial didn't go into detail on what the function did, I looked at the SDL_ttf documentation to see if there was an comparable function. I couldn't find anything. I even read that it would be a bad idea to access the data directly, as it might change between versions. So I decided to implement it as textures instead of polygons.
Anyway, after writing the class, I was trying to debug it on my netbook, but something (I think mingw) is configured to send standard out straight to a file, and doesn't even write it if the program crashes. So I moved over to my Linux system and got most of it working (I still need to flesh out the print function so characters maintain the correct width/height). I was at my parents' this weekend, so I was back to working on the netbook. Anyway, the program kept crashing, and I narrowed it down to the line where I load the character as a texture. It took me a bit of searching to find something I should have already known: the character dimensions weren't power of two. When I draw my own textures, I make sure they are PoT, but there's no easy way to specify that every character should be (to my knowledge).
At first, I was looking at writing a shader, since I read somewhere it allows non power of two and it might be a good experience. But then I read shaders were first supported in OGL 2.1, where NPoT was supported in 2.0, so it seems I would be losing compatibility instead of gaining it. Now, I'm thinking I need to pad the texture up to the next power of two. I figured I would look to see if a tutorial covered what I was doing and discussed a workaround. However, the first one I found ignored the issue. So I'm wondering how much of a problem this is. My netbook can't handle my game anyway. I would hate to put effort into writing some clunky solution to find out it wasn't necessarily needed.
Also, if I need to rewrite the code, should I drop SDL_ttf and use something else? For example, I came across a suggestion to use freetype.
Anyway, after writing the class, I was trying to debug it on my netbook, but something (I think mingw) is configured to send standard out straight to a file, and doesn't even write it if the program crashes. So I moved over to my Linux system and got most of it working (I still need to flesh out the print function so characters maintain the correct width/height). I was at my parents' this weekend, so I was back to working on the netbook. Anyway, the program kept crashing, and I narrowed it down to the line where I load the character as a texture. It took me a bit of searching to find something I should have already known: the character dimensions weren't power of two. When I draw my own textures, I make sure they are PoT, but there's no easy way to specify that every character should be (to my knowledge).
At first, I was looking at writing a shader, since I read somewhere it allows non power of two and it might be a good experience. But then I read shaders were first supported in OGL 2.1, where NPoT was supported in 2.0, so it seems I would be losing compatibility instead of gaining it. Now, I'm thinking I need to pad the texture up to the next power of two. I figured I would look to see if a tutorial covered what I was doing and discussed a workaround. However, the first one I found ignored the issue. So I'm wondering how much of a problem this is. My netbook can't handle my game anyway. I would hate to put effort into writing some clunky solution to find out it wasn't necessarily needed.
Also, if I need to rewrite the code, should I drop SDL_ttf and use something else? For example, I came across a suggestion to use freetype.
Last edited by a moderator: