988 end; |
988 end; |
989 {$ENDIF GL2} |
989 {$ENDIF GL2} |
990 |
990 |
991 procedure UpdateProjection; |
991 procedure UpdateProjection; |
992 var |
992 var |
993 s: GLfloat; |
993 l,r,t,b,s: GLfloat; |
994 begin |
994 begin |
995 s:=cScaleFactor; |
995 s:=cScaleFactor; |
996 mProjection[0,0]:= s/cScreenWidth; mProjection[0,1]:= 0.0; mProjection[0,2]:=0.0; mProjection[0,3]:= 0.0; |
996 |
997 mProjection[1,0]:= 0.0; mProjection[1,1]:= -s/cScreenHeight; mProjection[1,2]:=0.0; mProjection[1,3]:= 0.0; |
997 l:= 0.5; |
998 mProjection[2,0]:= 0.0; mProjection[2,1]:= 0.0; mProjection[2,2]:=1.0; mProjection[2,3]:= 0.0; |
998 r:= cScreenWidth + 0.5; |
999 mProjection[3,0]:= cStereoDepth; mProjection[3,1]:= s/2; mProjection[3,2]:=0.0; mProjection[3,3]:= 1.0; |
999 t:= 0.5; |
|
1000 b:= cScreenHeight + 0.5; |
|
1001 |
|
1002 l:= l - (cScreenWidth div 2); |
|
1003 r:= r - (cScreenWidth div 2); |
|
1004 |
|
1005 mProjection[0,0]:= s/(r-l); mProjection[1,0]:= 0; mProjection[2,0]:= 0; mProjection[3,0]:= -(r+l)/(r-l) {+ cStereoDepth}; |
|
1006 mProjection[0,1]:= 0; mProjection[1,1]:= s/(t-b); mProjection[2,1]:= 0; mProjection[3,1]:= -(t+b)/(t-b); |
|
1007 mProjection[0,2]:= 0; mProjection[1,2]:= 0; mProjection[2,2]:= 1; mProjection[3,2]:= 0; |
|
1008 mProjection[0,3]:= 0; mProjection[1,3]:= 0; mProjection[2,3]:= 0; mProjection[3,2]:= 1; |
1000 |
1009 |
1001 {$IFDEF GL2} |
1010 {$IFDEF GL2} |
1002 UpdateModelviewProjection; |
1011 UpdateModelviewProjection; |
1003 {$ELSE} |
1012 {$ELSE} |
1004 glMatrixMode(GL_PROJECTION); |
1013 glMatrixMode(GL_PROJECTION); |