Hallo liebe Leute
Ich habe ein kleines Problem und komme nicht dahinter, woran das liegen könnte.
Ich wollte gerne in OpenGL ein NSString als Texture darstellen. Dieser wird mit
in ein NSImage gezeichnet, welches ich später in eine Texture reinpacke.
Hier ist mein Codebeispiel (vereinfacht):
Alles anzeigen
Später wird das alles in einer anderen Methode gezeichnet und funktioniert soweit gut (siehe Screenshot 1).
Nun wenn ich jetzt aber beim Font die Größe von 16 auf 17 ändere, dann wird der Text in der Texture verzerrt dargestellt (siehe Screenshot 2).
Beim Zeichnen der Texturen wird nichts geändert. Habe auch die das NSImage als Datei auf platte gepackt, und dort sieht der Text korrekt aus.
Weiß jemand von euch, was hier schief läuft? Hatte jemand schon mal ähnliche Probleme damit?
Mir fällt hier aber noch auf, dass in den Screenshots die letzten Buchstaben links in der Texture gezeichnet werden. Könnte es vielleicht ein Hinweis darauf sein?
Vielen Dank im Vorraus.
Ich habe ein kleines Problem und komme nicht dahinter, woran das liegen könnte.
Ich wollte gerne in OpenGL ein NSString als Texture darstellen. Dieser wird mit
in ein NSImage gezeichnet, welches ich später in eine Texture reinpacke.
Hier ist mein Codebeispiel (vereinfacht):
Quellcode
- NSMutableDictionary *attribs = [[NSMutableDictionary alloc] init];
- [attribs setObject:[NSFont fontWithName:@"Helvetica" size:16.0] forKey:NSFontAttributeName];
- NSSize textSize = [m_Title sizeWithAttributes:attribs];
- NSImage *image = [[NSImage alloc] initWithSize:textSize];
- [image lockFocus];
- [m_Title drawAtPoint:NSZeroPoint withAttributes:attribs]; //hier ist der NSString zum darstellen
- [image unlockFocus];
- glGenTextures(1, &m_TitleTexture);
- NSData *imageData = [image TIFFRepresentation];
- glBindTexture(GL_TEXTURE_2D, m_TitleTexture);
- glTexImage2D(GL_TEXTURE_2D, 0, 4, [image size].width, [image size].height, 0, GL_RGBA, GL_UNSIGNED_BYTE, [imageData bytes]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- [image release];
- [attribs release];
Später wird das alles in einer anderen Methode gezeichnet und funktioniert soweit gut (siehe Screenshot 1).
Nun wenn ich jetzt aber beim Font die Größe von 16 auf 17 ändere, dann wird der Text in der Texture verzerrt dargestellt (siehe Screenshot 2).
Beim Zeichnen der Texturen wird nichts geändert. Habe auch die das NSImage als Datei auf platte gepackt, und dort sieht der Text korrekt aus.
Weiß jemand von euch, was hier schief läuft? Hatte jemand schon mal ähnliche Probleme damit?
Mir fällt hier aber noch auf, dass in den Screenshots die letzten Buchstaben links in der Texture gezeichnet werden. Könnte es vielleicht ein Hinweis darauf sein?
Vielen Dank im Vorraus.