Показать сообщение отдельно
  #1  
Старый 22.01.2008, 20:46
Аватар для IllVDG
IllVDG IllVDG вне форума
Новичок
 
Регистрация: 14.07.2007
Сообщения: 85
Репутация: 10
Вопрос OpenGl линии в переспективе

Имеется такой код:
Код:
 
wglMakeCurrent ( Canvas.Handle , hrc );
glClearColor ( col1 , 0.5 , 0.7 , 1.0 );
glClear ( GL_COLOR_BUFFER_BIT );
glPushMatrix;
glFrustum(-1,1,-1,1,3,10);
glTranslatef(0,0,-4);
 
if (d > 0.79) and (d < 0.81) then d2 := -0.01;
if (d1 > 0.79) and (d1 < 0.81) then d3 := -0.02;
if (d < -0.79) and (d > -0.81) then d2 := 0.01;
if (d1 < -0.79) and (d1 > -0.81) then d3 := 0.02;
d := d + d2;
d1 := d1 + d3;
glPointSize ( 7 );
glColor3f ( col1,col4,col3 );
glBegin ( GL_POINTS );
glVertex3f ( d , d1,0 );
glEnd;

if (da > 0.79) and (da < 0.81) then da2 := -0.02;
if (da1 > 0.79) and (da1 < 0.81) then da3 := -0.01;
if (da < -0.79) and (da > -0.81) then da2 := 0.02;
if (da1 < -0.79) and (da1 > -0.81) then da3 := 0.01;
da := da + da2;
da1 := da1 + da3;

if (db > 0.77) and (db < 0.81) then db2 := -0.02;
if (db1 > 0.77) and (db1 < 0.81) then db3 := -0.03;
if (db < -0.77) and (db > -0.81) then db2 := 0.02;
if (db1 < -0.77) and (db1 > -0.81) then db3 := 0.03;
db := db + db2;
db1 := db1 + db3;

glColor3f ( col3,col2,col4 );
glPointSize ( 9 );
glBegin ( GL_POINTS );
glVertex3f ( db , db1 ,0);
glEnd;

glColor3f ( col4,col2,col3 );
glPointSize ( 5 );
glBegin ( GL_POINTS );
glVertex3f ( da , da1,0 );
glEnd;
 
glColor3f ( col1,col3,col2 );
glLineWidth ( 7.0 );
glBegin ( GL_LINES );
glVertex3f ( -0.8 , -0.8,0 );
glVertex3f ( -0.8 , 0.8,0 );
glEnd;

glColor3f ( col1,col3,col2);
glLineWidth ( 7.0 );
glBegin ( GL_LINES );
glVertex3f ( -0.8 , -0.8,0 );
glVertex3f ( 0.8 , -0.8,0 );
glEnd;

glColor3f ( col1,col3,col2 );
glLineWidth ( 7.0 );
glBegin ( GL_LINES );
glVertex3f ( 0.8 , 0.8,0 );
glVertex3f ( 0.8 , -0.8,0 );
glEnd;

glColor3f (col1,col3,col2 );
glLineWidth ( 7.0 );
glBegin ( GL_LINES );
glVertex3f ( -0.8 , 0.8,0 );
glVertex3f ( 0.8 , 0.8,0 );
glEnd;
 
glPopMatrix;
if tb then glRotatef(5,-1,0,0);
if lb then glRotatef(5,0,1,0);
if bb then glRotatef(5,1,0,0);
if rb then glRotatef(5,0,-1,0);
 
 

wglMakeCurrent (0, 0) ;

Почму-то при его выполнении эти линии не сходятся. объясните почму, плиз
__________________
Жизнь - это игра... Сюжет не очень, зато графика - отпад.
Ответить с цитированием