Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > OpenGL + рисование менюшки по верх 3D


Автор: ILyAHA 11.3.2010, 23:50
Вопрос следующий:

Как в 3D приложении в OpenGL вывести картинку-менюшку, по которой можно было бы тыкать мышью в нужных местах, и уже дальше буду какие-нибудь действия(это например как во всяких стратегиях).
Т.е. воросы следующие:

-Вывести 2D картинку поверх 3D сцены.
-Определять в какой области изображения такнули мышью.


Очень буду рад коду и примерам.

Юзаю QT 3.3.4 + OpenGL(но OpenGL везде одинаковый, поэтому средства разработки не важны я думаю).

Автор: kemiisto 12.3.2010, 00:44
Цитата(ILyAHA @  12.3.2010,  00:50 Найти цитируемый пост)
Юзаю QT 3.3.4

Ты бы ещё 2-ой использовал. smile 

Тут, видимо, 2 варианта:
  • Самому разбираццо с OverPainting'ом, много писать. 
  • http://www.cegui.org.uk/wiki/index.php/Main_Page. Последний можно http://artis.imag.fr/Membres/Xavier.Decoret/resources/CEGUI/ с http://www.libqglviewer.com/'ом.

Автор: Mazzi 12.3.2010, 14:01
После вывода 3д переключаешь окно для вывода 2д и на нём рисуешь

Автор: ILyAHA 12.3.2010, 17:27
Цитата(Mazzi @  12.3.2010,  14:01 Найти цитируемый пост)
После вывода 3д переключаешь окно для вывода 2д и на нём рисуешь

как переключить?

Автор: Alexeis 12.3.2010, 17:35
Цитата(ILyAHA @  11.3.2010,  22:50 Найти цитируемый пост)
-Вывести 2D картинку поверх 3D сцены.

Типа битмап? Может это подойдет? http://www.opengl.org/sdk/docs/man/xhtml/glDrawPixels.xml

Автор: darkAv 12.3.2010, 17:47
просто переключаешся в режим орто и через него выводиш 2д графику

Автор: Alexeis 12.3.2010, 17:53
Цитата(darkAv @  12.3.2010,  16:47 Найти цитируемый пост)
просто переключаешся в режим орто и через него выводиш 2д графику 

  Тогда еще камеру повернуть нужно на плоскость XOY.

Добавлено через 54 секунды
Опять же, а Z-буфер? Не получиться ли картинка в середине меша?

Автор: darkAv 12.3.2010, 17:56
почему просто очередность рендеринга должна быть

Добавлено через 8 минут и 21 секунду
С вызовами функций OrthoMode() и PerspectiveMode() происходит замена между 3д точками и 2д точками. Это значит, что вместо передавания OpenGL трехмерных координат, в ortho-режиме мы передаем ему пикселные координаты экрана.

Добавлено через 10 минут и 26 секунд
Код

void OrthoMode(int left, int top, int right, int bottom)
{
    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    glOrtho( left, right, bottom, top, 0, 1 );
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}


Автор: darkAv 12.3.2010, 18:19
Режим Ortho - режим проекции, позволяющий рисовать примитивы в 2Д. Вместо 
glVertex3f() используется glVertex2f(), в которую передаются экранные 2д координаты 
вместо мировых 3д. Это очень полезно, если имеешь дело с интерфейсом или чем-то,
что должно оставатся на экране независимо от движения камеры.

Автор: ILyAHA 14.3.2010, 19:56
Спасибо darkAv, воспользовался твоим советом.
еще помогла http://www.mfwweb.com/OpenGL/Loading_Textures/

Автор: darkAv 15.3.2010, 11:24
на здоровье я недавно сталкивался с такой проблеммой

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)