Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Без бутылки не разберёшься


Автор: astradan 8.6.2006, 19:01
Этот код рисует полый цилиндр мне непонятно каким способом задаётся поверхность     *****glBegin(vmode[tek_mode]);*****

Код

const
      H : integer = 45;
      Fi:real=20;
      alpha : real = 0.2;
      m:real= 0.6;
      d : integer = 15;
      l:real=1;
      pers : integer = 30;
      vmode : array [0..4] of integer =(2,gl_polygon,gl_polygon,gl_points,gl_polygon);
      tek_mode : integer = 0;
      tek_vec : byte = 0;
      num_vec : array [0..4] of byte = (90,36,18,12,6);
      num_grad : array [0..4] of byte = (2,5,10,15,30);

procedure tform2.CreateFig;
var i,j,k: longint;
    AppPath: string;
    angl_i,angl_i2 : real;
    x,y : real;
    tx,ty,tz :real;
    g,r:real;
begin
 glNewList(CubeModel,GL_COMPILE);
r:=0;
    g:=1/(2*num_vec[tek_vec]);
    if mater then gltexcoord2f(0,r) else glcolor3f(1,0,0) {цвет примитивов} ;
    for j:=0 to (360 div num_grad[tek_vec])-1 do
     begin
      angl_i:=j*num_grad[tek_vec]*pi/180;
      angl_i2:=(j+1)*num_grad[tek_vec]*pi/180;
      tx:=cos(angl_i)*(d/100);
       ty:=sin(angl_i)*(d/100);
      x:=cos(angl_i2)*(d/100);
       y:=sin(angl_i2)*(d/100);

 {рисуем цилиндр}
    *****glBegin(vmode[tek_mode]);*****
       gltexcoord2f(0.25,r);
       glNormal3f(cos(angl_i),sin(angl_i),0);
       glVertex3f(cos(angl_i)*(d/100),sin(angl_i)*(d/100),-h/100);
       gltexcoord2f(1,r+g);
       glVertex3f(tx,ty,h/100);
       gltexcoord2f(1,r+g);
       glVertex3f(x,y,h/100);
       gltexcoord2f(0.25,r);
       glVertex3f(cos(angl_i2)*(d/100),sin(angl_i2)*(d/100),-h/100);
    glEnd;
      r:=r+g;
     end;

  

Автор: Snowy 8.6.2006, 19:08
Модератор: Название темы должно отражать ее суть!
Модератор: Используйте кнопку КОД!

Добавлено @ 19:14 
В чём вопрос-то? 

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