Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > как передать переменную с++ в glфункцию? |
Автор: wolver17 15.5.2011, 18:14 | ||||
Здраствуйте, возник вопрос такого плана: есть одномерный массив n-элементов, описанный в main функции, например:
далее, я делаю кучу различный расчётов в ф-циях, и в конце мне надо отобразить визуально значения элементов массива, построивши график. вызов ф-ции glutDisplayFunc(Display); вызывает ф-цию void Display(void) а вот сами значения массива x не передаёт же. Как сделать чтобы в Display я мог увидеть массив? (например что-то вроде этого:
Модератор: пользуйтесь тэгом "код" |
Автор: volatile 15.5.2011, 20:07 |
float x[n]={1,2,3,4,5}; вероятно объявить глобальной ? ну или во всяком случае видимой как из main();, так и из Display(); Насколько помню, по-другому там не сделаешь. Хотя с OpenGL давно не работал, так что возможно ошибаюсь. Добавлено через 51 секунду Увы, OpenGL далека от таких идей С++ как инкапсуляции и проч. |
Автор: wolver17 15.5.2011, 21:09 |
ну у мя было 2 идеи: 1) как ты, volatile, сказал, глобальными объявить, но а если у мя динамич. массив будет, его что тож глобальным делать? и 2) загнать все другие не opengl ф-ции в display, и объявить массив там, только это както кверху попой всё наверно получится.... я думал, что может я чегото недопонимаю в связке с++ и opengl? и просто чтото не так описываю? |
Автор: Vetos 15.5.2011, 21:16 |
Ты можешь глобально объявить указатель, и в функции main присвоить указателю ссылку на массив. Если же массив у тебя динамический то естественно можно сделать его глобальным, я чет непонимаю чего тут такого страшного![]() Кстати загонять все функции в Display не самый лучший вариант с точки зрения производительности, ведь эта функция вызывается каждый кадр. |
Автор: wolver17 15.5.2011, 21:59 |
да, ничё страшного ![]() ладно. завтра переделавши прогу, поспрашиваю тут ещё, если возникнут вопросы)) всем спс за варианты решения. |