1
我對將紋理/頂點應用變換(我是OpenGL學習者)有個疑問。我遇到了使用SharpGL的DrawText功能的情況。您可以指定X和Y座標,但我想旋轉文本以使其垂直定向。該功能雖然沒有采取任何角度。 SharpGL寫入文本的方式是獲得一組寫入屏幕的位圖。OpenGL旋轉已經彈出的東西
無論我嘗試什麼,我的文字總是出現水平。
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();
有沒有一種方法,我可以改造調用適用於已經取得並有關聯矩陣彈出任何繪圖?
您是否熟悉Windows wglUseFontBitmaps函數?這是一個Windows圖形庫擴展。看來SharpGL正在調用它來在顯示列表中創建位圖,然後通過調用CallLists來觸發它。根據MSDN的說法,它在後臺調用glBitmap。所以我會做一個glReadPixels並旋轉?如果它與某些事物重疊會發生什麼?如果我構建了一個優雅的場景,它可以讀取我不想要的東西嗎? – 2013-03-14 01:12:01
如果你使用'glReadPixels()'路由,當你的framebuffer爲空時,你通常需要在你的初始'glClear()'後渲染你的字符串,然後在繪製你的場景之前發出另一個'glClear()'。這樣你就不會無意中拾取任何場景的顏色。 – genpfault 2013-03-14 17:25:03