Laden...

CSGL - OpenGL - Text ausgeben, aber wie?

Erstellt von dr4g0n76 vor 18 Jahren Letzter Beitrag vor 16 Jahren 3.316 Views
dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 18 Jahren
CSGL - OpenGL - Text ausgeben, aber wie?

Ich habe mir jetzt ein Programm mit CSGL geschrieben. Wie gebe ich darin mit CSGL Text in OpenGL aus!? Finde bisher nichts!?

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

N
177 Beiträge seit 2006
vor 18 Jahren

Ist blind geklaut. Benutzt auch nicht CSGL, aber sieht so aus als sollte es trotzdem gehen.


[DllImport("gdi32.dll", EntryPoint = "SelectObject")]
public static extern IntPtr SelectObject(IntPtr hdc, IntPtr bmp);

protected void FontMapping()
{

    Graphics g = this.CreateGraphics();

    IntPtr hdc = new IntPtr();

    hdc = g.GetHdc();

    Font font = new Font("Tahoma", 8.25f);
    SelectObject(hdc, font.ToHfont());
    if (wgl.UseFontBitmaps(hdc, 0, 255, 1000) == false)
        Console.WriteLine("wglUseFontBitmaps failed: font");

    Font boldFont = new Font("Tahoma", 8.25f, FontStyle.Bold);
    SelectObject(hdc, boldFont.ToHfont());
    if (wgl.UseFontBitmaps(hdc, 0, 255, 2000) == false)
         Console.WriteLine("wglUseFontBitmaps failed: boldFont");

    g.ReleaseHdc(hdc);

}

N
177 Beiträge seit 2006
vor 18 Jahren

Und so scheint es benutzt zu werden...


namespace openglFramework
{
    public class Label
    {
        protected string text;

        public Label(string text)
        {
            this.text = text;
        }

        public void Draw(int xPos, int yPos)
        {
            gl.RasterPos2f(xPos, yPos);
            gl.ListBase(1000); // normal
            gl.CallLists(text.Length, gl.UNSIGNED_BYTE, text);
        }
    }
}

Im Übrigen geklaut aus der freien Basic-Version von http://www.csharpopenglframework.com

M
456 Beiträge seit 2004
vor 18 Jahren

CSGL wird doch schon lange nicht mehr weiterentwickelt. Die Wrapper von Tao sind doch viel aktueller und noch dazu 100% CLS kompatibel.

I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.

E
4 Beiträge seit 2007
vor 16 Jahren

wow. der wahsinn. Es funktioniert.

Nach wochenlangen tests und versuchen Schrift in opengl zu bekommen, ist das die bis jetzt am besten funktionierende Lösung. Erst habe ich mich mit dem C64-Style des Buchstaben aus Bitmaps schneiden rumgeschlagen. Dann habe ich mich mit der Freeglut dll fast erhängt. Ich konnte die dll einbinden, doch beim zugriff auf glut-funktionen stürzte mein programm ohne Vorwarnung ab.

Einzigen Verbesserungsvorschlag für die glCallListfunktion die ich noch hätte, anstelle GL_UNSIGNED_BYTE GL_UNSIGNED_SHORT zu verwenden. Mit der Byte-Variante malte mir OpenGL nach jedem Buchstaben ein leeres Kästchen. also hier meine veränderung:

 Gl.glCallLists(text.Length, Gl.GL_UNSIGNED_SHORT, text);

Nochmals vielen Dank elix