1

テクスチャ/頂点への変換の適用について質問があります (私は OpenGL の学習者です)。SharpGL の DrawText 関数を使用している状況があります。X 座標と Y 座標を指定できますが、テキストが垂直になるように回転させたいと考えています。ただし、この関数は角度を取りません。SharpGL がテキストを書き込む方法は、画面に書き込むビットマップの配列を取得することです。

何を試しても、テキストは常に横向きになります。

gl.DrawText 関数は次のことを行います (ソース コードを掘り下げました)。

gl.MatrixMode(OpenGL.GL_PROJECTION); gl.PushMatrix(); gl.LoadIdentity();

        int[] viewport = new int[4];
        gl.GetInteger(OpenGL.GL_VIEWPORT, viewport);
        gl.Ortho(0, width, 0, height, -1, 1);

        //  Create the appropriate modelview matrix.
        gl.MatrixMode(OpenGL.GL_MODELVIEW);
        gl.PushMatrix();
        gl.LoadIdentity();
        gl.Color(r, g, b);
        gl.RasterPos(x, y);

        gl.PushAttrib(OpenGL.GL_LIST_BIT | OpenGL.GL_CURRENT_BIT |
            OpenGL.GL_ENABLE_BIT | OpenGL.GL_TRANSFORM_BIT);
        gl.Color(r, g, b);
        gl.Disable(OpenGL.GL_LIGHTING);
        gl.Disable(OpenGL.GL_TEXTURE_2D);
        gl.Disable(OpenGL.GL_DEPTH_TEST);
        gl.RasterPos(x, y);

        //  Set the list base.
        gl.ListBase(fontBitmapEntry.ListBase);

        //  Create an array of lists for the glyphs.
        var lists = text.Select(c => (byte) c).ToArray();

        //  Call the lists for the string.
        gl.CallLists(lists.Length, lists);
        gl.Flush();

既に作成され、関連付けられた行列が取り除かれた図面に変換呼び出しを適用する方法はありますか?

4

1 に答える 1

3

SharpGL がglBitmap()舞台裏で使用している場合は、テキストをテクスチャ ( glReadPixels()/PBO/FBO) にレンダリングしてから、そのテクスチャで (回転した) クワッドをレンダリングする必要があります。

于 2013-03-13T20:52:42.807 に答える