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();
Имитация луча локатора в OpenGL.
Итак, беру .bmp файл, подтягиваю к 512х512 , далее создаю массив GLubyte BM[512][512] и пишу в него 0 или 0xFF в зависимости от цвета пикселя .bmp Эту одноцветную матрицу натягиваю как текстуру на квадрат и рисую - этот двуцветный (зелёный GL_GREEN) рисунок будет высвечивать луч "локатора".
А вот с лучом-то как раз и незадача...
Я использовал "веер" узких треугольников:
Код:
Этот веер крутится
Код:
glPushMatrix();
glRotatef(timer, 0, 0, 1);
RisLuchi();
glPopMatrix();
glRotatef(timer, 0, 0, 1);
RisLuchi();
glPopMatrix();
Но плавное угасание, как задумано... не совсем то...
Виден вращающийся веер. Может, я совсем не той дорогой пошёл? Есть мысль массив "сканировать" вращающимся "лучом" и запихивать результат по каждой точке в vector<TResult_of_Scan>, где и осуществлять "угасание", рисовать же потом этот вектор. Боюсь, это слишком большой объём вычислений... будет тормозить... то есть пробовал... тормозит...
Купил книжку по ассемблеру :-)
Нет ли каких-нибудь идей?