扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:wyb_star 来源:CSDN 2007年10月31日
关键字:
procedure TForm1.Draw; const D=1.5; H1=D/1.732; H2=D*1.732-H1; // D/H = tg(30) = 1/sqrt(3) HY=3.0; const //vertexes a1:TGLArrayf3=(-D, 0, -H1); //bootom left a2:TGLArrayf3=( D, 0, -H1); //bootom right a3:TGLArrayf3=( 0, 0, H2); //bootom back a4:TGLArrayf3=( 0, HY, 0); //top begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glLoadIdentity; glTranslatef(0.0, 0.0, -12.0); glBegin(GL_TRIANGLES); glVertex3fv(@a1); glVertex3fv(@a3); glVertex3fv(@a2); glVertex3fv(@a1); glVertex3fv(@a2); glVertex3fv(@a4); glVertex3fv(@a2); glVertex3fv(@a3); glVertex3fv(@a4); glVertex3fv(@a3); glVertex3fv(@a1); glVertex3fv(@a4); glEnd; SwapBuffers(wglGetCurrentDC); end; |
![]() |
procedure GLInit; const light0_position:TGLArrayf4=( -8.0, 8.0, -16.0, 0.0); ambient: TGLArrayf4=( 0.3, 0.3, 0.3, 0.3); begin // set viewing projection glMatrixMode(GL_PROJECTION); glFrustum(-0.1, 0.1, -0.1, 0.1, 0.3, 25.0); // position viewer */ glMatrixMode(GL_MODELVIEW); glEnable(GL_DEPTH_TEST); // set lights glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0, GL_POSITION, @light0_position); glLightfv(GL_LIGHT0, GL_AMBIENT, @ambient); glEnable(GL_LIGHT0); end; |
function getNormal(p1,p2,p3:TGLArrayf3):TGLArrayf3; var a,b:TGLArrayf3; begin //make two vectors a[0]:=p2[0]-p1[0]; a[1]:=p2[1]-p1[1]; a[2]:=p2[2]-p1[2]; b[0]:=p3[0]-p1[0]; b[1]:=p3[1]-p1[1]; b[2]:=p3[2]-p1[2]; //calculate cross-product result[0]:=a[1]*b[2]-a[2]*b[1]; result[1]:=a[2]*b[0]-a[0]*b[2]; result[2]:=a[0]*b[1]-a[1]*b[0]; end; |
procedure TForm1.Draw; const D=1.5; H1=D/1.732; H2=D*1.732-H1; // D/H = tg(30) = 1/sqrt(3) HY=3.0; const //vertexes a1:TGLArrayf3=(-D, 0, -H1); a2:TGLArrayf3=(D, 0, -H1); a3:TGLArrayf3=(0, 0, H2); a4:TGLArrayf3=(0, HY, 0); var n1, n2, n3, n4: TGLArrayf3; //normals begin n1 := getNormal(a1,a3,a2); n2 := getNormal(a1,a2,a4); n3 := getNormal(a2,a3,a4); n4 := getNormal(a3,a1,a4); glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glEnable(GL_NORMALIZE); glShadeModel(GL_FLAT); glCullFace(GL_BACK); glLoadIdentity; glTranslatef(0.0, 0.0, -12.0); glBegin(GL_TRIANGLES); glNormal3fv(@n1); glVertex3fv(@a1); glVertex3fv(@a2); glVertex3fv(@a3); glNormal3fv(@n2); glVertex3fv(@a1); glVertex3fv(@a2); glVertex3fv(@a4); glNormal3fv(@n3); glVertex3fv(@a2); glVertex3fv(@a3); glVertex3fv(@a4); glNormal3fv(@n4); glVertex3fv(@a3); glVertex3fv(@a1); glVertex3fv(@a4); glEnd; SwapBuffers(wglGetCurrentDC); end; |
![]() |
procedure TForm1.Timer1Timer(Sender: TObject); begin angle:=angle+1.0; Draw; end; |
glRotatef(angle, 0.0, 1.0, 0.0); |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。