Выбрать дату в календареВыбрать дату в календаре

Страницы:1

Инициализация OpenGL в C#. Библиотека Tao Framework.
 
[QUOTE]masterkonst написал:
[QUOTE] noname написал:
могу посоветовать еще раз все внимательно проверить по шагам. Еще желательно перезагрузиться после установки переменной path.
как правило, все кто просил помочь в этой проблемой решали ее перебрасыванием файлов в windows / system32, перезагрузкой, сменой типа проекта на x86, либо оказывалось что ссылки на библиотеки не добавлены (рис 1), либо не добавлен (или добавлен в неверно месте) код [/QUOTE]
Спасибо, пойду еще раз создам проект и переделаю все, что перечислено. А на счет кода в нужном месте - его же добавлять в файл form1.cs (двойной клик по форм
[QUOTE]masterkonst написал:
[QUOTE] noname написал:
могу посоветовать еще раз все внимательно проверить по шагам. Еще желательно перезагрузиться после установки переменной path.
как правило, все кто просил помочь в этой проблемой решали ее перебрасыванием файлов в windows / system32, перезагрузкой, сменой типа проекта на x86, либо оказывалось что ссылки на библиотеки не добавлены (рис 1), либо не добавлен (или добавлен в неверно месте) код [/QUOTE]
Спасибо, пойду еще раз создам проект и переделаю все, что перечислено. А на счет кода в нужном месте - его же добавлять в файл form1.cs (двойной клик по форме)?[/QUOTE]
Лучше скачай пример из Первых уроков и пробуй запустить его, чтобы быть уверенным что дело не в коде или других бибилиотеках
Может у тебя какието программы или антивирус запрещают доступ к какимто директориям? или на этих папках доступ запрещен
Также попробуй переустановить Студию или поставить другую - в них бывают глюки
[/QUOTE]
Визуализация графика функции в С# и OpenGL.
 
[QUOTE]Anvi написал:
[QUOTE] releyshic написал:
Как остановить Отрисовку AnT-а ? то есть чтобы в неактивном окне ничего не рисовалось, а замирало как есть?[/QUOTE]
[CODE] if(!bStop)
Draw(); // функция, отвечающая за отрисовку сцены  [/CODE]
ну и bStop меняется, к примеру, по событию нажатия на кнопку[/QUOTE]
bStop это какого Объекта?, Пробовал Glut, Gl, AnT, this  он у меня подчеркивается как ошибка
Изменено:releyshic - 10 Ноября 2016 06:08:34
Библиотека GLUT. GLUT OpenGl.
 
Как сделать Масштабирование От Скрола мышки? Не нашёл таких событий в [I]SimpleOpenGLControl, события как то можно свои добавлять или портировать из WinForm?[/I]
Визуализация графика функции в С# и OpenGL.
 
[QUOTE]releyshic пишет:
[QUOTE]Anvi пишет:
Значит как минимум нужно проверить, будет ли повторяться проблема на компьютерах с другими видеокартами (точно помню, что как-то мне попадались скриншоты с сильными артефактами на окне с визуализацией, и проблема была в видеокарте и драйверах ноутбука).

Ну а дальше да, сначала проверить - поможет ли вообще перерисовка неактивного окна от этих артефактов.

А потом уже думать над тем, как выходить из ситуации - либо перерисовка от доп. события, либо еще какие-нибудь варианты.

Обратите внимание на glReadPixels / glDrawPixels, но это не самый быстрый способ. [/QUOTE]Пока отложил эти Артефакты, есть другая проблема более насущная, не могу никак понять почему так?

Запускаешь Одно Окошко MDI, затем второе и Когда по нему водишь мышкой (по 2му, активному), то Рисуется в 1м окне почему-то, а когда выходишь мышкой за пределы окна но над 1м окном (не активным) то рисуется в нём правильно. Когда переключаешьня на 1е окно то всё тоже самое, только наоборот ))
Если добавлять дальше окошки то Рисуется опять в предыдущем а не в активном, хотя Координаты Считываются правильно По активному окну
Вот проект [url=/redirect/?url=https%3A%2F%2Fcloud.mail.ru%2Fpublic%2F2nDr%2FxeZoYKRbj&cd=60d3ceb04e270171817954fbb67c6c5c]https://cloud.mail.ru/public/2nDr/xeZoYKRbj[/url]
Думал думал - ничего не понимаю )) [/QUOTE]всё исправил сам: уюрал из Таймера ф-цию Draw(); и засунул в Событие AnT_MouseMove.

1 А где посмотреть Список всех Свойств и Методов AnT-а ?
2 Как остановить Отрисовку AnT-а ? то есть чтобы в неактивном окне ничего не рисовалось, а замирало как есть?
Визуализация графика функции в С# и OpenGL.
 
[QUOTE]Anvi пишет:
Значит как минимум нужно проверить, будет ли повторяться проблема на компьютерах с другими видеокартами (точно помню, что как-то мне попадались скриншоты с сильными артефактами на окне с визуализацией, и проблема была в видеокарте и драйверах ноутбука).

Ну а дальше да, сначала проверить - поможет ли вообще перерисовка неактивного окна от этих артефактов.

А потом уже думать над тем, как выходить из ситуации - либо перерисовка от доп. события, либо еще какие-нибудь варианты.

Обратите внимание на glReadPixels / glDrawPixels, но это не самый быстрый способ. [/QUOTE]Пока отложил эти Артефакты, есть другая проблема более насущная, не могу никак понять почему так?

Запускаешь Одно Окошко MDI, затем второе и Когда по нему водишь мышкой (по 2му, активному), то Рисуется в 1м окне почему-то, а когда выходишь мышкой за пределы окна но над 1м окном (не активным) то рисуется в нём правильно. Когда переключаешьня на 1е окно то всё тоже самое, только наоборот ))
Если добавлять дальше окошки то Рисуется опять в предыдущем а не в активном, хотя Координаты Считываются правильно По активному окну
Вот проект https://cloud.mail.ru/public/2nDr/xeZoYKRbj
Думал думал - ничего не понимаю ))
Уроки 3D Max. Освоение интерфейса 3D Max.
 
[QUOTE]Иван Новиков написал:
 
 [URL=/uroki/3d-max/kurs_modelirovaniya/3D_max_urok_1_1/]Уроки 3D Max. Освоение интерфейса 3D Max.[/URL]

Освоение интерфейса 3D Studio Max. Построение трехмерного объекта из библиотечных примитивов. Данный урок посвящен основам работы с программой 3D Studio Max: знакомству с интерфейсом, созданию простейших геометрических примитивов, а также установке единиц измерения. Другими словами, все самое простое и необходимое для начала работы с 3D Studio Max.[/QUOTE]
почемуто в уроках 3max не отображается в низу форма для коментариев как в разделе OpenGL. Наверно так не было задумано ))
Какую версию 3D Max лучше поставить чтобы по этим урокам все делать?
Визуализация графика функции в С# и OpenGL.
 
[QUOTE]Anvi пишет:
ужно смотреть весь проект и экспериментировать.

Мне кажется что артефакты можно убрать только перерисовкой окна, на котором они появились, и что они не связаны с тем, как реализован рендер в приложении.
Но это все надо опытным путем делать.[/QUOTE]ниужели надо всегда всё перерисовывать полностью? и что никак нельзя например сделать постоянный фон (кроме картинки конечно)? или есть слои какието? можно ли как то сохранить текущий вид во чтото (для быстрого использования конечно)?
Создание второго оконного приложения в C# .NET
 
Есть у меня один глобально важный вопрос - вот для данного примера как зовут Объект типа Preview ? те экземпляр класса/формы который мы видим при запуске проги. Он явно в коде не написан конструктором
Разработка класса в C# и реализация консольной программы на основе этого класса.
 
эта функциЯ нигде не вызывается
[CODE] // функция, возвращающая показатель - жив ли данный человек.
       public bool IsAlive()[/CODE]
Разработка класса в C# и реализация консольной программы на основе этого класса.
 
[QUOTE]Мы делаем это, проверяя, не равен ли наш объект (к примеру, SomeMan) null. Если не выполнить такую проверку, а потом в ходе работы программы окажется, что SomeMan = null, а мы попытаемся вызвать лубой из его методов (кроме конструктора класса – он как раз и создает объект в памяти), то в программе произойдет ошибка и обработка исключения. [/QUOTE] "лубой " очепятка ))

[QUOTE]// пустой (раный null) экземпляр класса Man[/QUOTE]что значит пустой? те сам экземпляр класса есть но просто все его свойства и поля не заполнены - равны 0
а зачем вообще тогда его создавать?
Введение в C# | Описание синтаксиса C#
 
[QUOTE]releyshic пишет:
это не оператор а "условная операция", -> выполняется гораздо быстрее оператора ))
[/QUOTE]но не допускает использования блоков конечно
Введение в C# | Описание синтаксиса C#
 
[QUOTE] подобно [B]С++[/B] используя оператор: [B](resault == 777) ? true : false; [/B][/QUOTE]это не оператор а "условная операция", -> выполняется гораздо быстрее оператора ))
про использование "break" в if и в switch  надобно упомянуть  )
Визуализация графика функции в С# и OpenGL.
 
[QUOTE]releyshic пишет:
хорошим вариантом было бы останавливать любую отрисовку на окне при пропадании активности на нем но как это сделать? да еще и чтоб не пропадало последнее нарисованное?
есть ли в АнТе какаянибудь функция "остановки" ? ))
"// завершаем режим рисованияGl.glEnd();" тут не поможет?[/QUOTE]а может получится проверять в условном операторе не активно ли какоето еще окно при текущей отрисовке здесь помимо
[CODE]MDIChildren1_Active == true[/CODE]
[CODE] private void AnT_MouseMove(object sender, MouseEventArgs e)
 {
// сохраняем координаты мыши
Mcoord_X = e.X;
Mcoord_Y = e.Y;
// вычисляем параметры для будущей дорисовки линий от указателя мыши к координатным осям.
lineX = devX * e.X;
lineY = (float)(ScreenH - devY * e.Y);

if (MDIChildren1_Active == true)
{
   // функция визуализации
   Draw();
   /*// сигнал для обновление элемента реализующего визуализацию.
   AnT.Invalidate();*/
}
 }[/CODE]но вот как проверить на активность все открытые дочерние окна ?
Визуализация графика функции в С# и OpenGL.
 
[QUOTE]Anvi пишет:
А если перерисовывать 1 раз (даже без вычислений) неактивное окно по окончанию перемещения активного? Возможно это единственный вариант.[/QUOTE]не совсем понял чем это поможет ведь рисуется крокозябры в процессе движения окна а не "по окончанию"

хорошим вариантом было бы останавливать любую отрисовку на окне при пропадании активности на нем но как это сделать? да еще и чтоб не пропадало последнее нарисованное?
есть ли в АнТе какаянибудь функция "остановки" ? ))
"// завершаем режим рисования  Gl.glEnd();" тут не поможет?
Визуализация графика функции в С# и OpenGL.
 
У меня при помещении в дочернее окно MDI какая то непонятная вещь - когда запускаешь вторую вкладку, берешь её за рамку для перетаскивания на 1 окошке рисуются каляки от окошка при перемещении
не пойму как с этим бороться?
[IMG]http://cs631227.vk.me/v631227601/105e1/yYcvkDwzN6Q.jpg[/IMG]

[CODE]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;

// для работы с библиотекой OpenGL
using Tao.OpenGl;
// для работы с библиотекой FreeGLUT
using Tao.FreeGlut;
// для работы с элементом управления SimpleOpenGLControl
using Tao.Platform.Windows;

namespace GraphRed2010
{
   public partial class MDIChildren1 : Form
   {
       private bool MDIChildren1_Active = false; //активно ли окно
     
       // размеры окна
       double ScreenW, ScreenH;

       // отношения сторон окна визуализации
       // для корректного перевода координат мыши в координаты,
       // принятые в программе

       private float devX;
       private float devY;

       // массив, который будет хранить значения x,y точек графика
       private float[,] GrapValuesArray;
       // количество элементов в массиве
       private int elements_count = 0;

       // флаг, означающий, что массив с значениями координат графика пока еще не заполнен
       private bool not_calculate = true;

       // номер ячейки массива, из которой будут взяты координаты для красной точки
       // для визуализации текущего кадра
       private int pointPosition = 0;

       // вспомогательные переменные для построения линий от курсора мыши к координатным осям
       float lineX, lineY;

       // текущение координаты курсора мыши
       float Mcoord_X = 0, Mcoord_Y = 0;

       public MDIChildren1()
       {
           InitializeComponent();
           AnT.InitializeContexts();        
       }

       private void MDIChildren1_Load(object sender, EventArgs e)
       {
           // инициализация библиотеки glut
          /* Glut.glutInit();
           // инициализация режима экрана
           Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE);*/

           // установка цвета очистки экрана (RGBA)
           Gl.glClearColor(255, 255, 255, 1);

           // установка порта вывода
           Gl.glViewport(0, 0, AnT.Width, AnT.Height);

           // активация проекционной матрицы
           Gl.glMatrixMode(Gl.GL_PROJECTION);
           // очистка матрицы
           Gl.glLoadIdentity();

           // определение параметров настройки проекции в зависимости от размеров сторон элемента AnT.
           if ((float)AnT.Width <= (float)AnT.Height)
           {
               ScreenW = 30.0;
               ScreenH = 30.0 * (float)AnT.Height / (float)AnT.Width;
               Glu.gluOrtho2D(0.0, ScreenW, 0.0, ScreenH);
           }
           else
           {
               ScreenW = 30.0 * (float)AnT.Width / (float)AnT.Height;
               ScreenH = 30.0;
               Glu.gluOrtho2D(0.0, 30.0 * (float)AnT.Width / (float)AnT.Height, 0.0, 30.0);
           }

           // сохранение коэффициентов, которые нам необходимы для перевода координат указателя в оконной системе в координаты,
           // принятые в нашей OpenGL сцене
           devX = (float)ScreenW / (float)AnT.Width;
           devY = (float)ScreenH / (float)AnT.Height;

           // установка объектно-видовой матрицы
           Gl.glMatrixMode(Gl.GL_MODELVIEW);

           // старт счетчика, отвечающего за вызов функции визуализации сцены
           /*PointInGrap.Start();
           */
           // функция визуализации
           Draw();
           // сигнал для обновление элемента реализующего визуализацию.
           AnT.Invalidate();

           MDIChildren1_Active = true; //окно активно
       }

       private void MDIChildren1_Resize(object sender, EventArgs e)
       {
           //this.Text = "4356436";
           // сигнал для обновление элемента реализующего визуализацию.
           AnT.Invalidate();
       }

       private void PointInGrap_Tick(object sender, EventArgs e)
       {
           // если мы дошли до последнего элемента массива
           if (pointPosition == elements_count - 1)
               pointPosition = 0; // переходим к начальному элементу

           /*// функция визуализации
           Draw();*/
           DrawDiagram();
           // переход к следующему элементу массива
           pointPosition++;
       }
       
       private void AnT_MouseMove(object sender, MouseEventArgs e)
       {
           // сохраняем координаты мыши
           Mcoord_X = e.X;
           Mcoord_Y = e.Y;

           // вычисляем параметры для будущей дорисовки линий от указателя мыши к координатным осям.
           lineX = devX * e.X;
           lineY = (float)(ScreenH - devY * e.Y);

           if (MDIChildren1_Active == true)
           {
               // функция визуализации
               Draw();
               /*// сигнал для обновление элемента реализующего визуализацию.
               AnT.Invalidate();*/
           }
       }

       // функция визуализации текста
       private void PrintText2D(float x, float y, string text)
       {

           // устанавливаем позицию вывода растровых символов
           // в переданных координатах x и y.
           Gl.glRasterPos2f(x, y);

           // в цикле foreach перебираем значения из массива text,
           // который содержит значение строки для визуализации
           foreach (char char_for_draw in text)
           {
               // символ C визуализируем с помощью функции glutBitmapCharacter, используя шрифт GLUT_BITMAP_9_BY_15.
               Glut.glutBitmapCharacter(Glut.GLUT_BITMAP_9_BY_15, char_for_draw);
           }

       }

       // функция, производящая вычисления координат графика
       // и заносящая их в массив GrapValuesArray
       private void functionCalculation()
       {

           // определение локальных переменных X и Y
           float x = 0, y = 0;

           // инициализация массива, который будет хранить значение 300 точек,
           // из которых будет состоять график

           GrapValuesArray = new float[300, 2];

           // счетчик элементов массива
           elements_count = 0;

           // вычисления всех значений y для x, принадлежащего промежутку от -15 до 15 с шагом в 0.01f
           for (x = -15; x < 15; x += 0.1f)
           {
               // вычисление y для текущего x
               // по формуле y = (float)Math.Sin(x)*3 + 1;
               // эта строка задает формулу, описывающую график функции для нашего уравнения y = f(x).
               y = (float)Math.Sin(x) * 3 + 1;

               // запись координаты x
               GrapValuesArray[elements_count, 0] = x;
               // запись координаты y
               GrapValuesArray[elements_count, 1] = y;
               // подсчет элементов
               elements_count++;

           }

           // изменяем флаг, сигнализировавший о том, что координаты графика не вычислены
           not_calculate = false;

       }

       // визуализация графика
       private void DrawDiagram()
       {

           // проверка флага, сигнализирующего о том, что координаты графика вычислены
           if (not_calculate)
           {
               // если нет, то вызываем функцию вычисления координат графика
               functionCalculation();
           }

           // стартуем отрисовку в режиме визуализации точек
           // объединяемых в линии (GL_LINE_STRIP)
           Gl.glBegin(Gl.GL_LINE_STRIP);

           // рисуем начальную точку
           Gl.glVertex2d(GrapValuesArray[0, 0], GrapValuesArray[0, 1]);

           // проходим по массиву с координатами вычисленных точек
           for (int ax = 1; ax < elements_count; ax += 2)
           {
               // передаем в OpenGL информацию о вершине, участвующей в построении линий
               Gl.glVertex2d(GrapValuesArray[ax, 0], GrapValuesArray[ax, 1]);
           }

           // завершаем режим рисования
           Gl.glEnd();

           // устанавливаем размер точек, равный 5 пикселям
           Gl.glPointSize(5);
           // устанавливаем текущим цветом - красный цвет
           Gl.glColor3f(255, 0, 0);
           // активируем режим вывода точек (GL_POINTS)
           Gl.glBegin(Gl.GL_POINTS);
           // выводим красную точку, используя ту ячейку массива, до которой мы дошли (вычисляется в функции обработчике событий таймера)
           Gl.glVertex2d(GrapValuesArray[pointPosition, 0], GrapValuesArray[pointPosition, 1]);
           // завершаем режим рисования
           Gl.glEnd();
           // устанавливаем размер точек равный единице
           Gl.glPointSize(1);

           // возвращаем матрицу из стека
           Gl.glPopMatrix();

           // дожидаемся завершения визуализации кадра
           Gl.glFlush();

           // сигнал для обновление элемента реализующего визуализацию.
           AnT.Invalidate();
       }

       // функция, управляющая визуализацией сцены
       private void Draw()
       {

           // очистка буфера цвета и буфера глубины
           Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

           // очищение текущей матрицы
           Gl.glLoadIdentity();

           // установка черного цвета
           Gl.glColor3f(0, 0, 0);

           // помещаем состояние матрицы в стек матриц
           Gl.glPushMatrix();

           // выполняем перемещение в пространстве по осям X и Y
           Gl.glTranslated(15, 15, 0);

           // активируем режим рисования (Указанные далее точки будут выводиться как точки GL_POINTS)
           Gl.glBegin(Gl.GL_POINTS);

           // с помощью прохода вдумя циклами, создаем сетку из точек
           for (int ax = -15; ax < 15; ax++)
           {
               for (int bx = -15; bx < 15; bx++)
               {
                   // вывод точки
                   Gl.glVertex2d(ax, bx);
               }
           }

           // завершение режима рисования примитивов
           Gl.glEnd();

           // активируем режим рисования, каждые 2 последовательно вызванные команды glVertex
           // объединяются в линии
           Gl.glBegin(Gl.GL_LINES);

           // далее мы рисуем координатные оси и стрелки на их концах
           Gl.glVertex2d(0, -15);
           Gl.glVertex2d(0, 15);

           Gl.glVertex2d(-15, 0);
           Gl.glVertex2d(15, 0);

           // вертикальная стрелка
           Gl.glVertex2d(0, 15);
           Gl.glVertex2d(0.1, 14.5);
           Gl.glVertex2d(0, 15);
           Gl.glVertex2d(-0.1, 14.5);

           // горизонтальная трелка
           Gl.glVertex2d(15, 0);
           Gl.glVertex2d(14.5, 0.1);
           Gl.glVertex2d(15, 0);
           Gl.glVertex2d(14.5, -0.1);

           // завершаем режим рисования
           Gl.glEnd();

           // выводим подписи осей "x" и "y"
           PrintText2D(15.5f, 0, "x");
           PrintText2D(0.5f, 14.5f, "y");

           // вызываем функцию рисования графика
           DrawDiagram();

           // возвращаем матрицу из стека
           Gl.glPopMatrix();

           // выводим текст со значением координат возле курсора
           PrintText2D(devX * Mcoord_X + 0.2f, (float)ScreenH - devY * Mcoord_Y + 0.4f, "[ x: " + (devX * Mcoord_X - 15).ToString() + " ; y: " + ((float)ScreenH - devY * Mcoord_Y - 15).ToString() + "]");
           
           // устанавливаем красный цвет
           Gl.glColor3f(255, 0, 0);

           // включаем режим рисования линий, для того чтобы нарисовать
           // линии от курсора мыши к координатным осям
           Gl.glBegin(Gl.GL_LINES);

           Gl.glVertex2d(lineX, 15);
           Gl.glVertex2d(lineX, lineY);
           Gl.glVertex2d(15, lineY);
           Gl.glVertex2d(lineX, lineY);

           Gl.glEnd();

           // дожидаемся завершения визуализации кадра
           Gl.glFlush();

           // сигнал для обновление элемента реализующего визуализацию.
           AnT.Invalidate();
       }

       private void MDIChildren1_Deactivate(object sender, EventArgs e)
       {
           MDIChildren1_Active = false; //окно неактивно при деактивации
       }

       private void MDIChildren1_Activated(object sender, EventArgs e)
       {
           MDIChildren1_Active = true; //окно активно при активации формы
       }
   }
}
[/CODE]
Формирование тел вращения - реализация алгоритма на OpenGl.
 
[QUOTE]admin пишет:
releyshic , смотрите ответ выше [/QUOTE]Спасибо! И правда как блин не заметил, Вообще я думал что если в коде обработчик есть то он работать будет, а тут вот оно как
Формирование тел вращения - реализация алгоритма на OpenGl.
 
[QUOTE]noname пишет:
[QUOTE] releyshic написал:
это всё при ВКЛЮЧЕННОМ таймере НЕ работает[/QUOTE]
[QUOTE] releyshic написал:
запихнул в кнопку, закоментал всё остальное - всё работает с кнопки
[/QUOTE]
событие таймера отрабатывает в коде? оно создано через вкладку events при выборе таймера? есть функция, код в которой можно проверить отладчиком, или на крайняк через MessageBox.Show?

надо функцию отрисовки выделить в отдельную функцию, допустим DrawScene().
затем повесить вывод этой функции на кнопку. проверить, что нажатие на кнопку рисует сцену. затем добавить вызов функции в функцию обработчик тика таймера.

подозреваю, что функция для обработки события таймера создана руками или копипастом, а не через вкладку event таймера [/QUOTE]функция создана двойным щелчком по таймеру в конструкторе окна
"надо функцию отрисовки выделить в отдельную функцию" это откуда до куда? она же вроде и так есть
// функция отрисовки сцены private void Draw() {

Удалил  её вызов из Таймера и добавил в кнопку - черный АнТ, при нажатии на кнопку ничего не происходит
Формирование тел вращения - реализация алгоритма на OpenGl.
 
[QUOTE]releyshic пишет:
[QUOTE]releyshic пишет:
[QUOTE]noname пишет:
[QUOTE] releyshic написал:
так и стоит )[/QUOTE]просто надо переключить его в [COLOR=#333333] enabled = true и должно заработать (если для таймера создано событие и прописана функция в это событие для перерисовки окна).[/COLOR] [/QUOTE]сделал тру, теперь АнТа как будто вообще нет - цвет фона окна на его месте [/QUOTE]
[QUOTE]noname пишет:
[QUOTE] releyshic написал:
так и стоит )[/QUOTE]просто надо переключить его в [COLOR=#333333] enabled = true и должно заработать (если для таймера создано событие и прописана функция в это событие для перерисовки окна).[/COLOR] [/QUOTE]дело и правда в таймере или в том что надо как то при каждом счете таймера чтото обновлять или чтото подобное делать
запихнул внутрь таймера Рисование сферы и тоже самое - черный экран. запихнул в кнопку, закоментал всё остальное - всё работает с кнопки
удалил из таймера функцию draw и с кнопки тоже перестало работать [/QUOTE]это всё при ВКЛЮЧЕННОМ таймере НЕ работает
Формирование тел вращения - реализация алгоритма на OpenGl.
 
[QUOTE]noname пишет:
releyshic ,тут простой принцип:

1. есть функция визуализации сцены. в ней происходит рисование.
2. есть таймер, он размещается на форме. Ему создается событие, которые вызывается при очередном тике таймера (создается на вкладке событий таймера). В функции, которая обрабатывает тик таймера (она появляется в коде при добавлении события на тик таймера), вызывается функция отрисовки (визуализации).
3. таймер должен быть включен.

при запуске приложения таймер начинает каждые 30 мс вызывать функцию визуализации сцены - и мы видим на форме нашу нарисованную сцену. т.е. примерно с 33fps [/QUOTE]ты не понял - это всё при ВКЛЮЧЕННОМ таймере НЕ работает
Формирование тел вращения - реализация алгоритма на OpenGl.
 
[QUOTE]releyshic пишет:
[QUOTE]noname пишет:
[QUOTE] releyshic написал:
так и стоит )[/QUOTE]просто надо переключить его в [COLOR=#333333] enabled = true и должно заработать (если для таймера создано событие и прописана функция в это событие для перерисовки окна).[/COLOR] [/QUOTE]сделал тру, теперь АнТа как будто вообще нет - цвет фона окна на его месте [/QUOTE]
[QUOTE]noname пишет:
[QUOTE] releyshic написал:
так и стоит )[/QUOTE]
просто надо переключить его в [COLOR=#333333] enabled = true и должно заработать (если для таймера создано событие и прописана функция в это событие для перерисовки окна).[/COLOR] [/QUOTE]дело и правда в таймере или в том что надо как то при каждом счете таймера чтото обновлять или чтото подобное делать
запихнул внутрь таймера Рисование сферы и тоже самое - черный экран. запихнул в кнопку, закоментал всё остальное - всё работает с кнопки
удалил из таймера функцию draw и с кнопки тоже перестало работать
Формирование тел вращения - реализация алгоритма на OpenGl.
 
[QUOTE]noname пишет:
[QUOTE] releyshic написал:
так и стоит )[/QUOTE]
просто надо переключить его в [COLOR=#333333] enabled = true и должно заработать (если для таймера создано событие и прописана функция в это событие для перерисовки окна).[/COLOR] [/QUOTE]сделал тру, теперь АнТа как будто вообще нет - цвет фона окна на его месте
Формирование тел вращения - реализация алгоритма на OpenGl.
 
[QUOTE]noname пишет:
releyshic ,а если добавить кнопку на форму, которая будет вызывать функцию отрисовки? И потом нажать на кнопку - перерисуется черное поле? [/QUOTE]функция отрисовки это : // возвращаем сохраненную матрицу Gl.glPopMatrix(); // завершаем рисование Gl.glFlush(); // обновляем элемент AnT AnT.Invalidate(); ???
Формирование тел вращения - реализация алгоритма на OpenGl.
 
[QUOTE]noname пишет:
на скриншоте вверху (в тексте урока) счетчик с параметром enabled = false
именно этот счетчик дергает функцию отрисовки. возможно он у вас false (не включен) [/QUOTE]так и стоит )
Формирование тел вращения - реализация алгоритма на OpenGl.
 
[QUOTE]noname пишет:
releyshic , последовательно пробовал выполнить уроки 4.3, 4.4 (в 4.4. пачка примечаний в конце)? [/QUOTE]4 весь работает в том то и дело и без проблем, хотя я запихнул АнТ в дочернее окно МДИ, всё запускается каждое окно открывается ,но когда в нём нажимаешь Развернуть окно или Свернуть (стандартные кнопки в правом верхнем углу) то тоже черный экран, пробовал в обработчик сворачивания/разворачивания запихивать
// возвращаем сохраненную матрицу Gl.glPopMatrix(); // завершаем рисование Gl.glFlush(); // обновляем элемент AnT AnT.Invalidate();  и никаких изменений нет ))
Формирование тел вращения - реализация алгоритма на OpenGl.
 
[QUOTE]releyshic пишет:
Черный остаётся и всё AnT, ничего не показывает, вроде всё нормально сделал
Вот всё сверил с твоим скачанным от и до и код и все элементы со свойствами, вообще всё совпадает! ))) но у меня черный Ант а у тебя картнки ))
Вообще не пойму в чем дело, у меня VS 2010 [/QUOTE]причём копирую код Form1 целиком из твоего файла котрый работает и вставляю в свой и тоже самое! черный АнТ и все
http://файлообменник.рф/ue986q01xcgm.html
Формирование тел вращения - реализация алгоритма на OpenGl.
 
Черный остаётся и всё AnT, ничего не показывает, вроде всё нормально сделал
Вот всё сверил с твоим скачанным от и до и код и все элементы со свойствами, вообще всё совпадает! ))) но у меня черный Ант а у тебя картнки ))
Вообще не пойму в чем дело, у меня VS 2010
Формирование тел вращения - реализация алгоритма на OpenGl.
 
забыл подключить пространство имён ) [B]// для работы с библиотекой OpenGL
using Tao.OpenGl;
// для работы с библиотекой FreeGLUT
using Tao.FreeGlut;
// для работы с элементом управления SimpleOpenGLControl
using Tao.Platform.Windows;


[/B]
Нужны Уроки по С#
 
Я конечно понимаю, что сайт посвящен графике, но поскольку большинство примеров для C# то и уроки по нему тоже должны быть, в особенности практические: как организовывать взаимодействие между окнами и тп, в основном того чего мало в сети, но при этом не сложные вещи
Инициализация OpenGL в C#. Библиотека Tao Framework.
 
Инициализация заработала, все окна открываются, НО теперь при нажатии на кнопку Закрывается прога причем не  важно сколько окон запущено =))
Изменено:releyshic - 1 Февраля 2015 19:12:02
Обсуждение нового сайта и нововведений
 
1 А то, что авторизация через ВК слетает постоянно так и должно быть? Зачем так?
2 Можно ли привязать регистрацию с ВК к регистрации на форуме, чтобы сайт понимал что это я оди и тот же челове, а то меня 2 онлайн ))) Да и к тому же чтоб на форуме личная активность мне одному записывалась а не мне двум )))
Страницы:1

^
Регистрация
Регистрируясь, вы принимаете правила сайта. Если вы не получили код подтв. регистрации - не забудьте проверить папку спам.
Логин*
Email*
Пароль*
Подтверждение пароля*
 
Логин*
Код*
 
×
Восстановление пароля
Пожалуйста, заполните поля, после чего вы получите код подтверждения на ваш Email. Если код не пришел в течении нескольких минут - проверьте папку спам.
Логин

или Email
Логин*
Код подтверждения*
Новый пароль*
Подтверждение пароля*
×
Авторизация
  • Используйте вашу учетную запись на Facebook.com для входа на сайт.
  • Используйте вашу учетную запись VKontakte для входа на сайт.
  • Используйте вашу учетную запись Google для входа на сайт.
Авторизуйтесь с помощью соц. сети или с помощью аккаунта на сайте:
×