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

如果 SharpGLglBitmap()在幕后使用,您必须将文本渲染为纹理 ( glReadPixels()/PBO/FBO),然后使用该纹理渲染(旋转的)四边形。

于 2013-03-13T20:52:42.807 回答