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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как передать переменную с++ в glфункцию? 
:(
    Опции темы
wolver17
  Дата 15.5.2011, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здраствуйте, возник вопрос такого плана:
есть одномерный массив n-элементов, описанный в main функции, например:
Код
int main(int argc, char **argv)
{
float x[n]={1,2,3,4,5};
...


далее, я делаю кучу различный расчётов в ф-циях, и в конце мне надо отобразить визуально значения элементов массива, построивши график.
вызов ф-ции
glutDisplayFunc(Display);
вызывает ф-цию 
void Display(void)
а вот сами значения массива x не передаёт же. Как сделать чтобы в Display я мог увидеть массив?
(например что-то вроде этого:
Код
...
glBegin(GL_LINE_STRIP);    
        glColor3f(1.0f,0.0f, 0.0f);        
        for(int i=0;i<n;i++)
        glVertex2f(x[i], y[i]);        
glEnd();
...
)

Модератор: пользуйтесь тэгом "код"

Это сообщение отредактировал(а) Rickert - 24.5.2011, 14:24
PM MAIL   Вверх
volatile
Дата 15.5.2011, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



float x[n]={1,2,3,4,5};
вероятно объявить глобальной ? ну или во всяком случае видимой как из main();, так и из Display();
Насколько помню, по-другому там не сделаешь. Хотя с OpenGL давно не работал, так что возможно ошибаюсь.

Добавлено через 51 секунду
Увы, OpenGL далека от таких идей С++ как инкапсуляции и проч.

PM MAIL   Вверх
wolver17
Дата 15.5.2011, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ну у мя было 2 идеи: 
1) как ты, volatile, сказал, глобальными объявить, но а если у мя динамич. массив будет, его что тож глобальным делать?
и 2) загнать все другие не opengl ф-ции в display, и объявить массив там, только это както кверху попой всё наверно получится....

я думал, что может я чегото недопонимаю в связке с++ и opengl? и просто чтото не так описываю?
PM MAIL   Вверх
Vetos
Дата 15.5.2011, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ты можешь глобально объявить указатель, и в функции main присвоить указателю ссылку на массив. Если же массив у тебя динамический то естественно можно сделать его глобальным, я чет непонимаю чего тут такого страшногоsmile
Кстати загонять все функции в Display не самый лучший вариант с точки зрения производительности, ведь эта функция вызывается каждый кадр.

Это сообщение отредактировал(а) Vetos - 15.5.2011, 21:19


--------------------
Строить нужно так, чтоб никто не сломал!
А ломать, чтоб никто не знал 8) :ne_huliganit 
PM MAIL ICQ   Вверх
wolver17
Дата 15.5.2011, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да, ничё страшного   smile , просто пока отписываться тут на форуме, перерыл в гугле кучу хлама, так ничё и не найдя, зато  про глобальный дин. массив писали, что это не очень красиво так делать, что луче по другому делать.
ладно. завтра переделавши прогу, поспрашиваю тут ещё, если возникнут вопросы))
всем спс за варианты решения.

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

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

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


 




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


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

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