PDA

View Full Version : OpenGL fonts



mikau
06-27-2008, 02:25 PM
I'm still learning the basics of openGL but I wanted to try adding some on screen text to one of my practice applications. I peaked ahead a little in my book and was surprised to find openGL offers only very low level support for creating fonts. I assumed therefore, that someone has probably built a library to allow more sophisticated text drawing.

So I read the FAQ and they mentioned FreeType. Looks interesting. But I wanted to get some user opinions. Whats a good extension for simple text to screen drawing? I'd like, if at all possible, something simple, that doesn't take long to learn. I'd rather spend time learning openGL right now.

I'm also using GLUT to handle the windowing, so anything that works well with that is preferable.

Seth Hoffert
06-27-2008, 02:35 PM
I highly recommend quesoglc (http://quesoglc.sourceforge.net/).

mikau
06-27-2008, 03:15 PM
Interesting! Though that claims TrueType is a prerequisite. Which is annoying...

in any case, I'll look over the tutorials and see what its like.

Any more suggestions?

ZbuffeR
06-27-2008, 04:17 PM
I only see "FreeType 2" as requirement ? And not TrueType.

mikau
07-04-2008, 04:47 PM
Thanks, ZbuffeR, I meant to say FreeType.

But now I've got an interesting problem. I installed the FreeType 2 library (with some difficulty) and tried to run a test application to see if it was properly installed. And basically the worst thing imaginable happened, a syntax error was found in a header file of the library. Looking in, I found the following struct: (note the 'generic' and 'internal' fields)



typedef struct FT_FaceRec_
{
FT_Long num_faces;
FT_Long face_index;

FT_Long face_flags;
FT_Long style_flags;

FT_Long num_glyphs;

FT_String* family_name;
FT_String* style_name;

FT_Int num_fixed_sizes;
FT_Bitmap_Size* available_sizes;

FT_Int num_charmaps;
FT_CharMap* charmaps;

FT_Generic generic;

/*# The following member variables (down to `underline_thickness') */
/*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */
/*# for bitmap fonts. */
FT_BBox bbox;

FT_UShort units_per_EM;
FT_Short ascender;
FT_Short descender;
FT_Short height;

FT_Short max_advance_width;
FT_Short max_advance_height;

FT_Short underline_position;
FT_Short underline_thickness;

FT_GlyphSlot glyph;
FT_Size size;
FT_CharMap charmap;

/*@private begin */

FT_Driver driver;
FT_Memory memory;
FT_Stream stream;

FT_ListRec sizes_list;

FT_Generic autohint;
void* extensions;

FT_Face_Internal internal;

/*@private end */

} FT_FaceRec;



both fields, 'generic' and 'internal' of this struct, are recognized as keywords by my compiler (they are color coded in my editor) and so it naturally creates a syntax error.

I googled the particular error, and found this post from a guy claiming to have the exact same problem: http://bytes.com/forum/thread655129.html

a solution someone suggested in reply, was to try to use the preprocessor to redefine the term 'generic'. But I'm concerned about how to do that safely. I feel like I'd need to define the generic keyword, and then un-define it as soon as possible, in order to not screw up possible correct use of the 'generic' and 'internal' keywords.

Still, this library seems to be widely used, how could this obvious problem exist?

Zengar
07-04-2008, 11:20 PM
What compiler do you use?

mikau
07-05-2008, 01:36 PM
Visual C++ 9.0 Express Edition

Komat
07-05-2008, 06:38 PM
The generic keyword should be active only when the code is compiled with support for .NET (the /clr family of options). Unless you need that support for something, you can disable it and the default will again become ordinary identifier.

mikau
07-06-2008, 01:26 PM
I see. How can I disable it?

mikau
07-14-2008, 04:20 PM
Hey, guys. I succesfully installed freetype on my system, but I'm finding precious little information on how to install quesoGLC. The docs folder has no installation info.

I downloaded the binary files, with some libraries and dll's, and i THINK i put them in the right places. I'm able to compile and build quesoGLC but the program crashes at runtime, claiming fontconfig failed.

I kind of thought the fontconfig library came with quesogGLC but i think I was mistaken now.

In anycase, does anyone anything about this? I've been finding very little info on the web about it, for some odd reason.

ZbuffeR
07-15-2008, 03:14 AM
Little information ? first google link is http://fontconfig.org/

mikau
07-15-2008, 12:19 PM
I should remind you i'm still very much a beginner. >.< so I'm not always sure what to look for, nor recognize what I need when I see it.

Yeah, that was the first place i looked. It seems to give a lot of information about what it is, and how to use it, but i have found little info on how to install and set it up. I'm going to look again, maybe i missed something.

ZbuffeR
07-15-2008, 01:32 PM
In the quesoglc-0.7.1.zip, there is a nice INSTALL.win file that explains where to get a precompiled fontconfig dll, but apparently is has moved a bit. I found links to binaries near the bottom here :
http://www.gtk.org/download-windows.html
Oh, and you will need expat too.

Funny how setting up a working development environment is much easier under linux nowadays...

mikau
07-15-2008, 09:43 PM
SO I'VE NOTICED! Sheesh, everything is under linux these days!!

ugh... man. All this library setup stuff is always killing me. I'm not a bad programmer, but I seem pretty terrible at this, I wish I could get a big fat book just on installing library files. I'm not lazy, I'm just lost!

hmm.. that should be my new sig...

mikau
07-16-2008, 10:34 AM
well I opened up that Win file. It looks helpful, but the FontConfig part worries me.

I did find a precompiled package, which came with just a dll. I put the dll in the right place, I think, but the only thing that I don't know about is, FontConfig has to know where to find certain resource folders. So just pasting the dll into C:/WINDOWS/system32 probably wont' be enough in itself. Tutorials mention that there is an environment variable for this path, but it doesn't appear to exist on my system, I guess its on linux.

ZbuffeR
07-16-2008, 03:34 PM
http://www.google.com/search?q=install+fontconfig+windows
first link here has quite a bit of details.
good luck, it will work :-)

Anyway, maybe you could ask HexCat via P.M. how to use its "highly recommended quesoglc" :)
Maybe it is overkill for your purpose, and you may find that glFont is easier to use :
http://students.cs.byu.edu/~bfish/glfontfaq.php

mikau
07-16-2008, 04:49 PM
Thanks, Zbuffer for your time. I really do appreciate the help. I WOULD like to move to something simpler! However, this has been a learning process for me, and I want to follow through with it for that reason.

I discovered that the fontconfig DLL files have to have a folder named 'etc' that contains certain resources, so if I paste that into the folder with the DLL's, it no longer says 'cannot load default config files' however, the application still crashes, I think maybe fontconfig is okay now, but I haven't properly installed it.

So I opened that WIN file, and followed the directions, but attempting to use make completely failed. Here was what I got from the command prompt:



C:\Program Files\quesoglc-0.7.1>mingw32-make -f makefile.mgw
gcc -c -O2 -fomit-frame-pointer -ffast-math -DGLEW_MX -DGLEW_BUILD -Iinclude -Is
rc -Ic:\mingw\include -Ic:\mingw\include\freetype -DQUESOGLC_VERSION=\"0.7.1\" s
rc/context.c -o build/context.o
In file included from src/ofacedesc.h:29,
from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/omaster.h:28:35: fontconfig/fontconfig.h: No such file or directory
In file included from src/ocharmap.h:29,
from src/omaster.h:30,
from src/ofacedesc.h:29,
from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/ocontext.h:34:22: ft2build.h: No such file or directory
src/ocontext.h:35:10: #include expects "FILENAME" or <FILENAME>
src/ocontext.h:39:10: #include expects "FILENAME" or <FILENAME>
In file included from src/ocharmap.h:29,
from src/omaster.h:30,
from src/ofacedesc.h:29,
from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/ocontext.h:104: error: syntax error before "FT_ListNodeRec"
src/ocontext.h:104: warning: no semicolon at end of struct or union
src/ocontext.h:110: error: syntax error before "library"
src/ocontext.h:110: warning: data definition has no type or storage class
src/ocontext.h:114: error: syntax error before '*' token
src/ocontext.h:114: warning: data definition has no type or storage class
src/ocontext.h:122: error: syntax error before "currentFontList"
src/ocontext.h:122: warning: data definition has no type or storage class
src/ocontext.h:123: error: syntax error before "fontList"
src/ocontext.h:123: warning: data definition has no type or storage class
src/ocontext.h:124: error: syntax error before "genFontList"
src/ocontext.h:124: warning: data definition has no type or storage class
src/ocontext.h:140: error: syntax error before "atlasList"
src/ocontext.h:140: warning: data definition has no type or storage class
src/ocontext.h:151: error: syntax error before '}' token
src/ocontext.h:157: error: syntax error before "FT_ListRec"
src/ocontext.h:157: warning: no semicolon at end of struct or union
src/ocontext.h:159: error: syntax error before '}' token
src/ocontext.h:165: error: syntax error before "FT_ListRec"
src/ocontext.h:165: warning: no semicolon at end of struct or union
src/ocontext.h:187: error: syntax error before '}' token
src/ocontext.h:204: error: syntax error before '*' token
src/ocontext.h:204: warning: data definition has no type or storage class
In file included from src/ocharmap.h:30,
from src/omaster.h:30,
from src/ofacedesc.h:29,
from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/oglyph.h:34: error: syntax error before "FT_ListNodeRec"
src/oglyph.h:34: warning: no semicolon at end of struct or union
src/oglyph.h:36: warning: data definition has no type or storage class
src/oglyph.h:37: error: syntax error before "codepoint"
src/oglyph.h:37: warning: data definition has no type or storage class
src/oglyph.h:49: error: syntax error before '}' token
src/oglyph.h:51: error: syntax error before "inIndex"
In file included from src/omaster.h:30,
from src/ofacedesc.h:29,
from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/ocharmap.h:37: error: syntax error before "FT_ULong"
src/ocharmap.h:37: warning: no semicolon at end of struct or union
src/ocharmap.h:39: error: syntax error before '}' token
src/ocharmap.h:42: error: syntax error before "FcCharSet"
src/ocharmap.h:42: warning: no semicolon at end of struct or union
src/ocharmap.h:44: error: syntax error before '}' token
In file included from src/ofacedesc.h:29,
from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/omaster.h:35: error: syntax error before "FcPattern"
src/omaster.h:35: warning: no semicolon at end of struct or union
src/omaster.h:40: error: syntax error before '*' token
src/omaster.h:41: warning: data definition has no type or storage class
src/omaster.h:44: error: syntax error before '*' token
src/omaster.h:45: warning: data definition has no type or storage class
src/omaster.h:46: error: syntax error before "FcChar8"
In file included from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/ofacedesc.h:35: error: syntax error before "FT_ListNodeRec"
src/ofacedesc.h:35: warning: no semicolon at end of struct or union
src/ofacedesc.h:36: warning: data definition has no type or storage class
src/ofacedesc.h:37: error: syntax error before "face"
src/ofacedesc.h:37: warning: data definition has no type or storage class
src/ofacedesc.h:41: error: syntax error before "glyphList"
src/ofacedesc.h:41: warning: data definition has no type or storage class
src/ofacedesc.h:46: error: syntax error before '*' token
src/ofacedesc.h:51: error: syntax error before "__glcFaceDescOpen"
src/ofacedesc.h:52: warning: data definition has no type or storage class
src/ofacedesc.h:61: error: syntax error before "FT_ULong"
src/ofacedesc.h:63: error: syntax error before "FT_ULong"
src/ofacedesc.h:67: error: syntax error before "FT_ULong"
src/ofacedesc.h:70: error: syntax error before '*' token
src/ofacedesc.h:72: warning: data definition has no type or storage class
src/ofacedesc.h:76: error: syntax error before "FT_UInt"
src/ofacedesc.h:79: error: syntax error before '*' token
src/ofacedesc.h:79: warning: data definition has no type or storage class
In file included from include/internal.h:58,
from src/context.c:49:
src/ofont.h:62: error: syntax error before "FT_ULong"
In file included from src/context.c:49:
include/internal.h:206: error: syntax error before '*' token
include/internal.h:207: warning: data definition has no type or storage class
include/internal.h:213: error: syntax error before '*' token
include/internal.h:219: error: syntax error before '*' token
include/internal.h:221: warning: data definition has no type or storage class
include/internal.h:266: error: syntax error before '*' token
include/internal.h:306: error: syntax error before '*' token
include/internal.h:309: warning: data definition has no type or storage class
include/internal.h:314: error: syntax error before '*' token
include/internal.h:317: warning: data definition has no type or storage class
src/context.c: In function `glcCallbackFunc':
src/context.c:87: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:96: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:96: error: dereferencing pointer to incomplete type
src/context.c:102: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDataPointer':
src/context.c:123: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:126: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:126: error: dereferencing pointer to incomplete type
src/context.c:132: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDeleteGLObjects':
src/context.c:156: error: `FT_ListNode' undeclared (first use in this function)
src/context.c:156: error: (Each undeclared identifier is reported only once
src/context.c:156: error: for each function it appears in.)
src/context.c:156: error: syntax error before "node"
src/context.c:158: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:161: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:161: error: dereferencing pointer to incomplete type
src/context.c:170: error: `node' undeclared (first use in this function)
src/context.c:170: error: dereferencing pointer to incomplete type
src/context.c:174: error: dereferencing pointer to incomplete type
src/context.c:175: error: dereferencing pointer to incomplete type
src/context.c:176: error: dereferencing pointer to incomplete type
src/context.c:177: error: dereferencing pointer to incomplete type
src/context.c:178: error: dereferencing pointer to incomplete type
src/context.c:182: error: dereferencing pointer to incomplete type
src/context.c:183: error: dereferencing pointer to incomplete type
src/context.c:184: error: dereferencing pointer to incomplete type
src/context.c:188: error: dereferencing pointer to incomplete type
src/context.c:189: error: dereferencing pointer to incomplete type
src/context.c:190: error: dereferencing pointer to incomplete type
src/context.c: In function `__glcChangeState':
src/context.c:221: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:221: error: dereferencing pointer to incomplete type
src/context.c:230: error: dereferencing pointer to incomplete type
src/context.c:233: error: dereferencing pointer to incomplete type
src/context.c:236: error: dereferencing pointer to incomplete type
src/context.c:237: error: dereferencing pointer to incomplete type
src/context.c:240: error: dereferencing pointer to incomplete type
src/context.c:241: error: dereferencing pointer to incomplete type
src/context.c:251: error: dereferencing pointer to incomplete type
src/context.c:254: error: dereferencing pointer to incomplete type
src/context.c:257: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDisable':
src/context.c:305: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c: In function `glcEnable':
src/context.c:340: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c: In function `glcGetCallbackFunc':
src/context.c:360: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:369: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:369: error: dereferencing pointer to incomplete type
src/context.c:375: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetListc':
src/context.c:414: error: `FcChar8' undeclared (first use in this function)
src/context.c:414: error: `catalog' undeclared (first use in this function)
src/context.c:418: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:438: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:438: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetListi':
src/context.c:534: error: `FT_ListNode' undeclared (first use in this function)
src/context.c:534: error: syntax error before "node"
src/context.c:536: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:572: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:572: error: dereferencing pointer to incomplete type
src/context.c:583: error: `node' undeclared (first use in this function)
src/context.c:583: error: dereferencing pointer to incomplete type
src/context.c:591: error: dereferencing pointer to incomplete type
src/context.c:602: error: dereferencing pointer to incomplete type
src/context.c:605: error: syntax error before "glyphNode"
src/context.c:607: error: `glyphNode' undeclared (first use in this function)
src/context.c:607: error: dereferencing pointer to incomplete type
src/context.c:627: error: dereferencing pointer to incomplete type
src/context.c:628: error: dereferencing pointer to incomplete type
src/context.c:635: error: dereferencing pointer to incomplete type
src/context.c:636: error: dereferencing pointer to incomplete type
src/context.c:639: error: dereferencing pointer to incomplete type
src/context.c:639: error: dereferencing pointer to incomplete type
src/context.c:640: error: dereferencing pointer to incomplete type
src/context.c:654: error: dereferencing pointer to incomplete type
src/context.c:655: error: dereferencing pointer to incomplete type
src/context.c:663: error: dereferencing pointer to incomplete type
src/context.c:664: error: dereferencing pointer to incomplete type
src/context.c:667: error: dereferencing pointer to incomplete type
src/context.c:667: error: dereferencing pointer to incomplete type
src/context.c:668: error: dereferencing pointer to incomplete type
src/context.c:674: error: dereferencing pointer to incomplete type
src/context.c:676: error: dereferencing pointer to incomplete type
src/context.c:679: error: dereferencing pointer to incomplete type
src/context.c:682: error: syntax error before "glyphNode"
src/context.c:684: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetPointer':
src/context.c:728: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:737: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:737: error: dereferencing pointer to incomplete type
src/context.c:743: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetc':
src/context.c:790: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:804: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:804: error: dereferencing pointer to incomplete type
src/context.c:826: error: dereferencing pointer to incomplete type
src/context.c:830: error: dereferencing pointer to incomplete type
src/context.c:833: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetf':
src/context.c:866: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:875: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:875: error: dereferencing pointer to incomplete type
src/context.c:881: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetfv':
src/context.c:915: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:926: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:926: error: dereferencing pointer to incomplete type
src/context.c:932: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGeti':
src/context.c:1025: error: `FT_ListNode' undeclared (first use in this function)

src/context.c:1025: error: syntax error before "node"
src/context.c:1028: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1065: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1065: error: dereferencing pointer to incomplete type
src/context.c:1074: error: dereferencing pointer to incomplete type
src/context.c:1076: error: `node' undeclared (first use in this function)
src/context.c:1076: error: dereferencing pointer to incomplete type
src/context.c:1080: error: dereferencing pointer to incomplete type
src/context.c:1084: error: dereferencing pointer to incomplete type
src/context.c:1087: error: syntax error before "glyphNode"
src/context.c:1089: error: `glyphNode' undeclared (first use in this function)
src/context.c:1089: error: dereferencing pointer to incomplete type
src/context.c:1098: error: dereferencing pointer to incomplete type
src/context.c:1100: error: dereferencing pointer to incomplete type
src/context.c:1102: error: dereferencing pointer to incomplete type
src/context.c:1105: error: dereferencing pointer to incomplete type
src/context.c:1107: error: dereferencing pointer to incomplete type
src/context.c:1109: error: dereferencing pointer to incomplete type
src/context.c:1110: error: dereferencing pointer to incomplete type
src/context.c:1113: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1115: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1117: error: dereferencing pointer to incomplete type
src/context.c:1121: error: dereferencing pointer to incomplete type
src/context.c:1125: error: dereferencing pointer to incomplete type
src/context.c:1126: error: dereferencing pointer to incomplete type
src/context.c:1127: error: dereferencing pointer to incomplete type
src/context.c:1130: error: syntax error before "glyphNode"
src/context.c:1132: error: dereferencing pointer to incomplete type
src/context.c: In function `glcIsEnabled':
src/context.c:1162: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1179: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1179: error: dereferencing pointer to incomplete type
src/context.c:1188: error: dereferencing pointer to incomplete type
src/context.c:1190: error: dereferencing pointer to incomplete type
src/context.c:1192: error: dereferencing pointer to incomplete type
src/context.c:1194: error: dereferencing pointer to incomplete type
src/context.c:1196: error: dereferencing pointer to incomplete type
src/context.c:1198: error: dereferencing pointer to incomplete type
src/context.c: In function `glcStringType':
src/context.c:1262: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1277: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1277: error: dereferencing pointer to incomplete type
src/context.c:1283: error: dereferencing pointer to incomplete type
src/context.c: In function `glcPushAttribQSO':
src/context.c:1415: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1418: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1418: error: dereferencing pointer to incomplete type
src/context.c:1424: error: dereferencing pointer to incomplete type
src/context.c:1429: error: dereferencing pointer to incomplete type
src/context.c:1429: error: dereferencing pointer to incomplete type
src/context.c:1433: error: dereferencing pointer to incomplete type
src/context.c:1438: error: dereferencing pointer to incomplete type
src/context.c:1443: error: dereferencing pointer to incomplete type
src/context.c: In function `glcPopAttribQSO':
src/context.c:1472: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1475: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1475: error: dereferencing pointer to incomplete type
src/context.c:1481: error: dereferencing pointer to incomplete type
src/context.c:1486: error: dereferencing pointer to incomplete type
src/context.c:1486: error: dereferencing pointer to incomplete type
src/context.c:1490: error: dereferencing pointer to incomplete type
src/context.c:1493: error: dereferencing pointer to incomplete type
src/context.c:1496: error: dereferencing pointer to incomplete type
src/context.c: At top level:
src/ocontext.h:186: error: storage size of `memoryManager' isn't known
mingw32-make: *** [build/context.o] Error 1

C:\Program Files\quesoglc-0.7.1>


the first thing that seems to go wrong is this: fontconfig/fontconfig.h: No such file or directory

a header file for fontconfig? I downloaded the fontconfig binaries straight from that link you referred to there, ZBuffer, and there's no header files included.

ZbuffeR
07-16-2008, 04:54 PM
In the gtk.org windows page I provided, there are binaries (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig-2.4.2-tml-20071015.zip), as well as a dev package (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig-dev-2.4.2-tml-20071015.zip).
you did the etc\fonts\fonts.conf modifications as explained here (http://lists.freedesktop.org/archives/fontconfig/2007-October/002685.html) ?

mikau
07-16-2008, 04:59 PM
oh I see. Sorry, thanks. Thus far, I've always found the binaries to contain the headers and such as well. I'll get to work!

sorry for all the questions, I need to learn more about this.. somewhere.

mikau
07-16-2008, 11:50 PM
Okay, so I got both the dev package, and the binaries and installed them into: c:\program files\fontconfigdev and c:\program files\fontconfigbin respectively. The binaries contain a subset of the folders in the dev package. So I guess i need to... combine them somehow?

Once I've got these installed though, as far as I know, the next thing I need to do is tell whatever needs to use fontconfig where to find it. (if not put the fontconfig files in a specific location)I THINK that would be MinGW in this case, and since its looking for fontconfig/fontconfig.h, I suspect that I have to paste the contents of the fontconfig/include folder, into the mingw32/include folder. Thats only my best guess though.

so I just copied the dll from the binaries into system32 along with the folder 'etc\' into C:\Windows\system32. I then followed the directions described in the INSTALL.win for building quesoGLC. This time, it didn't say anything about fontconfig.h, so I think I put that in the right place, but I still got a massive pile of errors while trying to use make:

typed:


C:\Program Files\quesoglc-0.7.1>mingw32-make -f makefile.mgw

results:


gcc -c -O2 -fomit-frame-pointer -ffast-math -DGLEW_MX -DGLEW_BUILD -Iinclude -Is
rc -Ic:\mingw\include -Ic:\mingw\include\freetype -DQUESOGLC_VERSION=\"0.7.1\" s
rc/context.c -o build/context.o
In file included from src/ocharmap.h:29,
from src/omaster.h:30,
from src/ofacedesc.h:29,
from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/ocontext.h:34:22: ft2build.h: No such file or directory
src/ocontext.h:35:10: #include expects "FILENAME" or <FILENAME>
src/ocontext.h:39:10: #include expects "FILENAME" or <FILENAME>
In file included from src/ocharmap.h:29,
from src/omaster.h:30,
from src/ofacedesc.h:29,
from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/ocontext.h:104: error: syntax error before "FT_ListNodeRec"
src/ocontext.h:104: warning: no semicolon at end of struct or union
src/ocontext.h:110: error: syntax error before "library"
src/ocontext.h:110: warning: data definition has no type or storage class
src/ocontext.h:122: error: syntax error before "currentFontList"
src/ocontext.h:122: warning: data definition has no type or storage class
src/ocontext.h:123: error: syntax error before "fontList"
src/ocontext.h:123: warning: data definition has no type or storage class
src/ocontext.h:124: error: syntax error before "genFontList"
src/ocontext.h:124: warning: data definition has no type or storage class
src/ocontext.h:140: error: syntax error before "atlasList"
src/ocontext.h:140: warning: data definition has no type or storage class
src/ocontext.h:151: error: syntax error before '}' token
src/ocontext.h:157: error: syntax error before "FT_ListRec"
src/ocontext.h:157: warning: no semicolon at end of struct or union
src/ocontext.h:159: error: syntax error before '}' token
src/ocontext.h:165: error: syntax error before "FT_ListRec"
src/ocontext.h:165: warning: no semicolon at end of struct or union
src/ocontext.h:187: error: syntax error before '}' token
In file included from src/ocharmap.h:30,
from src/omaster.h:30,
from src/ofacedesc.h:29,
from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/oglyph.h:34: error: syntax error before "FT_ListNodeRec"
src/oglyph.h:34: warning: no semicolon at end of struct or union
src/oglyph.h:36: warning: data definition has no type or storage class
src/oglyph.h:37: error: syntax error before "codepoint"
src/oglyph.h:37: warning: data definition has no type or storage class
src/oglyph.h:49: error: syntax error before '}' token
src/oglyph.h:51: error: syntax error before "inIndex"
In file included from src/omaster.h:30,
from src/ofacedesc.h:29,
from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/ocharmap.h:37: error: syntax error before "FT_ULong"
src/ocharmap.h:37: warning: no semicolon at end of struct or union
src/ocharmap.h:39: error: syntax error before '}' token
In file included from src/ofont.h:28,
from include/internal.h:58,
from src/context.c:49:
src/ofacedesc.h:35: error: syntax error before "FT_ListNodeRec"
src/ofacedesc.h:35: warning: no semicolon at end of struct or union
src/ofacedesc.h:37: error: syntax error before "face"
src/ofacedesc.h:37: warning: data definition has no type or storage class
src/ofacedesc.h:41: error: syntax error before "glyphList"
src/ofacedesc.h:41: warning: data definition has no type or storage class
src/ofacedesc.h:51: error: syntax error before "__glcFaceDescOpen"
src/ofacedesc.h:52: warning: data definition has no type or storage class
src/ofacedesc.h:61: error: syntax error before "FT_ULong"
src/ofacedesc.h:63: error: syntax error before "FT_ULong"
src/ofacedesc.h:67: error: syntax error before "FT_ULong"
src/ofacedesc.h:76: error: syntax error before "FT_UInt"
In file included from include/internal.h:58,
from src/context.c:49:
src/ofont.h:62: error: syntax error before "FT_ULong"
src/context.c: In function `glcCallbackFunc':
src/context.c:87: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:96: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:96: error: dereferencing pointer to incomplete type
src/context.c:102: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDataPointer':
src/context.c:123: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:126: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:126: error: dereferencing pointer to incomplete type
src/context.c:132: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDeleteGLObjects':
src/context.c:156: error: `FT_ListNode' undeclared (first use in this function)
src/context.c:156: error: (Each undeclared identifier is reported only once
src/context.c:156: error: for each function it appears in.)
src/context.c:156: error: syntax error before "node"
src/context.c:158: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:161: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:161: error: dereferencing pointer to incomplete type
src/context.c:170: error: `node' undeclared (first use in this function)
src/context.c:170: error: dereferencing pointer to incomplete type
src/context.c:174: error: dereferencing pointer to incomplete type
src/context.c:175: error: dereferencing pointer to incomplete type
src/context.c:176: error: dereferencing pointer to incomplete type
src/context.c:177: error: dereferencing pointer to incomplete type
src/context.c:178: error: dereferencing pointer to incomplete type
src/context.c:182: error: dereferencing pointer to incomplete type
src/context.c:183: error: dereferencing pointer to incomplete type
src/context.c:184: error: dereferencing pointer to incomplete type
src/context.c:188: error: dereferencing pointer to incomplete type
src/context.c:189: error: dereferencing pointer to incomplete type
src/context.c:190: error: dereferencing pointer to incomplete type
src/context.c: In function `__glcChangeState':
src/context.c:221: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:221: error: dereferencing pointer to incomplete type
src/context.c:230: error: dereferencing pointer to incomplete type
src/context.c:233: error: dereferencing pointer to incomplete type
src/context.c:236: error: dereferencing pointer to incomplete type
src/context.c:237: error: dereferencing pointer to incomplete type
src/context.c:240: error: dereferencing pointer to incomplete type
src/context.c:241: error: dereferencing pointer to incomplete type
src/context.c:251: error: dereferencing pointer to incomplete type
src/context.c:254: error: dereferencing pointer to incomplete type
src/context.c:257: error: dereferencing pointer to incomplete type
src/context.c: In function `glcDisable':
src/context.c:305: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c: In function `glcEnable':
src/context.c:340: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c: In function `glcGetCallbackFunc':
src/context.c:360: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:369: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:369: error: dereferencing pointer to incomplete type
src/context.c:375: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetListc':
src/context.c:418: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:438: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:438: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetListi':
src/context.c:534: error: `FT_ListNode' undeclared (first use in this function)
src/context.c:534: error: syntax error before "node"
src/context.c:536: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:572: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:572: error: dereferencing pointer to incomplete type
src/context.c:583: error: `node' undeclared (first use in this function)
src/context.c:583: error: dereferencing pointer to incomplete type
src/context.c:591: error: dereferencing pointer to incomplete type
src/context.c:602: error: dereferencing pointer to incomplete type
src/context.c:605: error: syntax error before "glyphNode"
src/context.c:607: error: `glyphNode' undeclared (first use in this function)
src/context.c:607: error: dereferencing pointer to incomplete type
src/context.c:627: error: dereferencing pointer to incomplete type
src/context.c:628: error: dereferencing pointer to incomplete type
src/context.c:635: error: dereferencing pointer to incomplete type
src/context.c:636: error: dereferencing pointer to incomplete type
src/context.c:639: error: dereferencing pointer to incomplete type
src/context.c:639: error: dereferencing pointer to incomplete type
src/context.c:640: error: dereferencing pointer to incomplete type
src/context.c:654: error: dereferencing pointer to incomplete type
src/context.c:655: error: dereferencing pointer to incomplete type
src/context.c:663: error: dereferencing pointer to incomplete type
src/context.c:664: error: dereferencing pointer to incomplete type
src/context.c:667: error: dereferencing pointer to incomplete type
src/context.c:667: error: dereferencing pointer to incomplete type
src/context.c:668: error: dereferencing pointer to incomplete type
src/context.c:674: error: dereferencing pointer to incomplete type
src/context.c:676: error: dereferencing pointer to incomplete type
src/context.c:679: error: dereferencing pointer to incomplete type
src/context.c:682: error: syntax error before "glyphNode"
src/context.c:684: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetPointer':
src/context.c:728: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:737: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:737: error: dereferencing pointer to incomplete type
src/context.c:743: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetc':
src/context.c:790: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:804: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:804: error: dereferencing pointer to incomplete type
src/context.c:826: error: dereferencing pointer to incomplete type
src/context.c:830: error: dereferencing pointer to incomplete type
src/context.c:833: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetf':
src/context.c:866: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:875: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:875: error: dereferencing pointer to incomplete type
src/context.c:881: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGetfv':
src/context.c:915: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:926: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:926: error: dereferencing pointer to incomplete type
src/context.c:932: error: dereferencing pointer to incomplete type
src/context.c: In function `glcGeti':
src/context.c:1025: error: `FT_ListNode' undeclared (first use in this function)

src/context.c:1025: error: syntax error before "node"
src/context.c:1028: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1065: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1065: error: dereferencing pointer to incomplete type
src/context.c:1074: error: dereferencing pointer to incomplete type
src/context.c:1076: error: `node' undeclared (first use in this function)
src/context.c:1076: error: dereferencing pointer to incomplete type
src/context.c:1080: error: dereferencing pointer to incomplete type
src/context.c:1084: error: dereferencing pointer to incomplete type
src/context.c:1087: error: syntax error before "glyphNode"
src/context.c:1089: error: `glyphNode' undeclared (first use in this function)
src/context.c:1089: error: dereferencing pointer to incomplete type
src/context.c:1098: error: dereferencing pointer to incomplete type
src/context.c:1100: error: dereferencing pointer to incomplete type
src/context.c:1102: error: dereferencing pointer to incomplete type
src/context.c:1105: error: dereferencing pointer to incomplete type
src/context.c:1107: error: dereferencing pointer to incomplete type
src/context.c:1109: error: dereferencing pointer to incomplete type
src/context.c:1110: error: dereferencing pointer to incomplete type
src/context.c:1113: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1115: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1117: error: dereferencing pointer to incomplete type
src/context.c:1121: error: dereferencing pointer to incomplete type
src/context.c:1125: error: dereferencing pointer to incomplete type
src/context.c:1126: error: dereferencing pointer to incomplete type
src/context.c:1127: error: dereferencing pointer to incomplete type
src/context.c:1130: error: syntax error before "glyphNode"
src/context.c:1132: error: dereferencing pointer to incomplete type
src/context.c: In function `glcIsEnabled':
src/context.c:1162: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1179: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1179: error: dereferencing pointer to incomplete type
src/context.c:1188: error: dereferencing pointer to incomplete type
src/context.c:1190: error: dereferencing pointer to incomplete type
src/context.c:1192: error: dereferencing pointer to incomplete type
src/context.c:1194: error: dereferencing pointer to incomplete type
src/context.c:1196: error: dereferencing pointer to incomplete type
src/context.c:1198: error: dereferencing pointer to incomplete type
src/context.c: In function `glcStringType':
src/context.c:1262: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1277: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1277: error: dereferencing pointer to incomplete type
src/context.c:1283: error: dereferencing pointer to incomplete type
src/context.c: In function `glcPushAttribQSO':
src/context.c:1415: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1418: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1418: error: dereferencing pointer to incomplete type
src/context.c:1424: error: dereferencing pointer to incomplete type
src/context.c:1429: error: dereferencing pointer to incomplete type
src/context.c:1429: error: dereferencing pointer to incomplete type
src/context.c:1433: error: dereferencing pointer to incomplete type
src/context.c:1438: error: dereferencing pointer to incomplete type
src/context.c:1443: error: dereferencing pointer to incomplete type
src/context.c: In function `glcPopAttribQSO':
src/context.c:1472: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1475: error: invalid use of incomplete typedef `__GLCcommonArea'
src/context.c:1475: error: dereferencing pointer to incomplete type
src/context.c:1481: error: dereferencing pointer to incomplete type
src/context.c:1486: error: dereferencing pointer to incomplete type
src/context.c:1486: error: dereferencing pointer to incomplete type
src/context.c:1490: error: dereferencing pointer to incomplete type
src/context.c:1493: error: dereferencing pointer to incomplete type
src/context.c:1496: error: dereferencing pointer to incomplete type
src/context.c: At top level:
src/ocontext.h:186: error: storage size of `memoryManager' isn't known
mingw32-make: *** [build/context.o] Error 1

C:\Program Files\quesoglc-0.7.1>

mikau
07-22-2008, 12:51 PM
um, problem... solved?

I noted that in the QueoGLC Binary package I downloaded, there are a couple of Test exe's in the subfolder 'test', and the folder contained 5 dll's, including one for fontconfig, freetype, expat, and basically all that were mentioned as prerequisites. Also folders that appeared to be resources for the dll's.

I also noted how when I tried switching to glFont, initially the program wouldn't work because I tried to instantiate the font before creating a GL context. So I wondered, maybe I was making that same mistake in quesoGLC?

So I dumped all the dll's and other folders I found in the QuesoGLC/Test folder into the same folder as my applications exe. I then was carefull to instantiate my glc context after the GL context, and.... it works!!

So what did I learn from this... One thing is that the other libraries cited as being prerequisites, for some reason, came with queoglc. I wish i knew why it said we needed them. Secondly, it would seem that the dll's of these libraries were all that was needed to get it to run! O_o I thought we at least needed a .lib and some header files as well!

I'm glad I got it to work, I just wish I could have succesfully gotten MinGW to work for me, and in general, knew how to make myself better equipped to handle these installation problems. I"m not sure if I should read more about C++, or maybe operating systems, or what.

ZbuffeR
07-22-2008, 01:56 PM
Some practice will help, for sure.
Learning about how to use your dev environment, is more a trial-and-error experience. Compilers, libs, etc. GNU tool chains, more or less adapted to Windows, etc.

nicolelee
05-12-2009, 09:32 PM
hi mikau, I confronted the same compile error, and I switched to glfont(which I found in this forum,too), it seems easier than quesoglc on Windows.

Phynix
05-15-2009, 04:48 PM
I'd suggest going to nehe. They have some [excellent] tutorials, including like 5 on fonts. Go to nehe.gamedev.net for a bunch of opengl tutorials. Good luck!