Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.125.109] |
|
Сообщ.
#1
,
|
|
|
OpenTK - не удалось отобразить текст (метку) в терхмерном графике 3D.
Мне мучительно, целые 2 месяца у меня не получалось, что какую функцию для отображения текста (или метки), заданного точки координат (X,Y,Z). Пожалуйста, помогите мне!!! Например, коды программы: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenTK; using OpenTK.Graphics.OpenGL; namespace WindowsFormsApplication16 { public partial class Form1 : Form { int chartWidth; int chartHeight; float AngleX = 45; float AngleY = 0; float AngleZ = 45; const float AngleDl = 5; float Масштаб = 1; public Form1() { InitializeComponent(); chartWidth = glChart.Width; chartHeight = glChart.Height; } private void BuildFonts() { } private void glChart_Paint(object sender, PaintEventArgs e) { GL.ClearColor(0.5f, 0.5f, 0.75f, 1.0f); // цвет фона // очистка буферов цвета и глубины GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); // поворот изображения GL.LoadIdentity(); GL.Rotate(AngleX, 1.0, 0.0, 0.0); GL.Rotate(AngleY, 0.0, 1.0, 0.0); GL.Rotate(AngleZ, 0.0, 0.0, 1.0); // увеличение или уменьшение изображения GL.Scale(Масштаб, Масштаб, Масштаб); //GL.Translate(0, 0, 0); // формирование осей координат GL.Begin(BeginMode.Lines); GL.Color3(1f, 0f, 0f); GL.Vertex3(-10, 0, 0); GL.Vertex3(10, 0, 0); GL.Color3(0f, 1f, 0f); GL.Vertex3(0, -10, 0); GL.Vertex3(0, 10, 0); GL.Color3(0f, 0f, 1f); GL.Vertex3(0, 0, -10); GL.Vertex3(0, 0, 10); GL.End(); // видовые преобразования GL.Rotate(45, 0, 0, 1); GL.Translate(5, 0, 0); // формирования квадрата GL.Color3(0f, 0f, 1f); // цвет фона GL.Rect(-1f, -1f, 1f, 1f); // формирование метки X - не удалось отобразить метку???? char[] str = { 'X' }; GL.RasterPos3(10, 0, 0); GL.CallLists(1, ListNameType.UnsignedByte, str); // завершение формирования изображения GL.Flush(); GL.Finish(); glChart.SwapBuffers(); } private void glChart_Resize(object sender, EventArgs e) { GL.Viewport(0, 0, glChart.Width, glChart.Height); GL.MatrixMode(MatrixMode.Projection); GL.LoadIdentity(); GL.Ortho(-10, 10, -10, 10, -10, 10); GL.MatrixMode(MatrixMode.Modelview); glChart.Invalidate(); } private void glChart_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Insert: AngleX += AngleDl; break; case Keys.Delete: AngleX -= AngleDl; break; case Keys.Home: AngleY += AngleDl; break; case Keys.End: AngleY -= AngleDl; break; case Keys.Prior: AngleZ += AngleDl; break; case Keys.Next: AngleZ -= AngleDl; break; case Keys.Add: Масштаб += 0.01f; break; case Keys.Subtract: Масштаб -= 0.01f; break; } glChart.Invalidate(); } } } |
Сообщ.
#2
,
|
|
|
danisxp
Учите русский язык и английскй. читайте статьи и книги. Существует два метода для вывода растровый и векторный. Формируем в текстуре текст и выводим квадрат с нужной текстурой. http://www.opentk.com/doc/graphics/how-to-...xt-using-opengl В векторной форме тоже самое загружаем 3D объекты букв и выводим. |