Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OpenGL перемещение элемента мышью. Затупил... Затупил... 
:(
    Опции темы
DoctorSwat
Дата 4.9.2013, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.4.2013

Репутация: нет
Всего: нет



Занимаюсь разработкой интерфейса для моих опенгл приложений. Сейчас сделал кнопки и окошки. С окошками встала такая проблема:
Само окно я нарисовал, сделал подсветку, тени, выделение, а сейчас нужно перемещать это окно мышкой за верхнюю часть.
Я беру координаты мышки, перевожу их в координаты сцены, определяю пересечение с нужной мне частью, а дальше засел. Нужно после всего это при нажатой и двигающийся левой кнопки мыши сдвигать окно туда, куда двигается мышка, то есть  перетаскивать его. Раньше с мышкой я не работал поэтому жду помощи.

Использую глут чтобы контролить мышку.
Вот код: 
Код

void MousePressed(int button,int state,int x,int y)
{   
      gui.setmouse(x,y);  
      //cout<<gui.ctransx(x)<<" "<<gui.ctransy(y)<<endl;
    if(button==GLUT_LEFT_BUTTON && state==GLUT_DOWN)
    {
      win.setbutstate(true);
        glutPostRedisplay();
      if(bb.collision()){cout<<"b1"<<endl;}
      if(bb2.collision()){cout<<"b2"<<endl;}
      if(win.tbcollision()){cout<<"tb"<<endl;}

    }
    else{win.setbutstate(false);}



}


void MousePressedMove(int ax,int ay)
{  
  gui.setmouse(ax,ay);  
  cout<<"move"<<endl;

    if(win.tbcollision() && win.getbutstate())
    {
    win.winmove(ax,ay);
    win.setwinmoveold();
    glutPostRedisplay();
    }


}


void MouseMove(int x,int y)
{  
        gui.setmouse(x,y);  
    if(win.collision()){win.winfocus(true);}
    else{win.winfocus(false);}    
    if(win.tbcollision()){win.tbfocus(true);}
    else{win.tbfocus(false);}
    if(bb.collision()){bb.focus(true);}
    else{bb.focus(false);}
    if(bb2.collision()){bb2.focus(true);}
    else{bb2.focus(false);}
}


Этот код работает и окно двигается, но рывками. Надеюсь на помощь)
PM MAIL   Вверх
DoctorSwat
Дата 5.9.2013, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.4.2013

Репутация: нет
Всего: нет



Ап. Ребят ну любые идеи.
PM MAIL   Вверх
DoctorSwat
Дата 5.9.2013, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.4.2013

Репутация: нет
Всего: нет



Итак, решил я проблему с перемещением. Просто надо плавно двигать окно. Но теперь такой вопрос: после перемещения окно остаётся на месте и если его опять начать двигать то оно возвращается в начальную точку. Знаю, что надо сохранять координаты, я их вроде сохраняю, но видно плохо. Надеюсь на ответы. 
PM MAIL   Вверх
Bitter
Дата 5.9.2013, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 1
Всего: 27



А какие вы ждете ответы? Ну вот вам ответ
PM MAIL ICQ Skype   Вверх
tzirechnoy
Дата 7.9.2013, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Первая идея: когда спрашываете об ошыбках -- демонстрируйте какой-нибудь работающий код, в котором есть интересующая Вас ошыбка.

А вообще -- http://segfault.kiev.ua/smart-questions-ru.html
PM MAIL   Вверх
DoctorSwat
Дата 8.9.2013, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.4.2013

Репутация: нет
Всего: нет



tzirechnoy, Вобще не понял о чём ты говоришь, либо пиши правильно, либо разборчиво, а лучше сразу и разборчиво, и правильно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.1078 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.