Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Имитация луча локатора в OpenGL.

58K
29 марта 2010 года
Medvedishko
1 / / 29.03.2010
Здравствуйте!
Итак, беру .bmp файл, подтягиваю к 512х512 , далее создаю массив GLubyte BM[512][512] и пишу в него 0 или 0xFF в зависимости от цвета пикселя .bmp Эту одноцветную матрицу натягиваю как текстуру на квадрат и рисую - этот двуцветный (зелёный GL_GREEN) рисунок будет высвечивать луч "локатора".
А вот с лучом-то как раз и незадача...
Я использовал "веер" узких треугольников:
Код:
glBegin(GL_TRIANGLES);
for(angle = 0; angle < 360; angle = angle + dA){
 x2 = r * sin(angle * 3.1415926 / 180);
 y2 = r * cos(angle * 3.1415926 / 180);
 x3 = r * sin((angle + dA) * 3.1415926 / 180);
 y3 = r * cos((angle + dA) * 3.1415926 / 180);
 a = angle / 360.0;
   glColor4d(0, 0, 0, a);//установка прозрачности "луча"
 glVertex3d(0, 0, 1);
 glVertex3d(x2, y2, 1);
 glVertex3d(x3, y3, 1);
}
glEnd();

Этот веер крутится
 
Код:
glPushMatrix();
glRotatef(timer, 0, 0, 1);

   RisLuchi();

glPopMatrix();

Но плавное угасание, как задумано... не совсем то...
Виден вращающийся веер. Может, я совсем не той дорогой пошёл? Есть мысль массив "сканировать" вращающимся "лучом" и запихивать результат по каждой точке в vector<TResult_of_Scan>, где и осуществлять "угасание", рисовать же потом этот вектор. Боюсь, это слишком большой объём вычислений... будет тормозить... то есть пробовал... тормозит...
Купил книжку по ассемблеру :-)

Нет ли каких-нибудь идей?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог