На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
  
> OpenTK - не удалось отобразить текст (метку) в терхмерном графике 3D. , OpenTK - не удалось отобразить текст (метку) в терхмерном графике 3D.
    OpenTK - не удалось отобразить текст (метку) в терхмерном графике 3D.

    Мне мучительно, целые 2 месяца у меня не получалось, что какую функцию для отображения текста (или метки), заданного точки координат (X,Y,Z).
    Пожалуйста, помогите мне!!!

    Например, коды программы:

    ExpandedWrap disabled
      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();
              }
          }
      }
      danisxp
      Учите русский язык и английскй. читайте статьи и книги.
      Существует два метода для вывода растровый и векторный.
      Формируем в текстуре текст и выводим квадрат с нужной текстурой.
      http://www.opentk.com/doc/graphics/how-to-...xt-using-opengl
      В векторной форме тоже самое загружаем 3D объекты букв и выводим.
      Сообщение отредактировано: Pavia -
      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0183 ]   [ 14 queries used ]   [ Generated: 18.05.24, 12:12 GMT ]