Дополнительной инфы не нашёл, поэтому соглашусь как с аксиомой  .
------------ Дoбавленo:
Выкладываю ещё один пример с использованием буфера трафарета.
Зеркало
Add(MainForm,15261923,-276,-7) { Left=20 Top=105 Width=789 Height=541 Point(MouseX) Point(MouseY) Point(onResize) Point(Handle) link(onCreate,16299401:doEvent1,[(-236,13)(-236,34)]) link(onResize,3213527:doWork1,[(-139,20)]) } Add(Timer,9506849,-276,105) { Interval=10 Enable=1 link(onTimer,1049454:doEvent1,[]) } Add(GL_GTools,771925,-143,105) { Point(doClear) Point(doPushMatrix) Point(doPopMatrix) link(onEvent,3410847:doPerspective,[]) } Add(GL_GluTools,4593655,109,28) { link(onInit,11539355:doEnabled,[]) } Add(Hub,1049454,-227,105) { OutCount=5 link(onEvent1,771925:doClear,[]) link(onEvent2,771925:doPushMatrix,[]) link(onEvent3,3276760:doRotate,[(-171,125)(-171,210)(-232,210)(-232,237)]) link(onEvent4,771925:doPopMatrix,[(-163,132)(-163,125)]) link(onEvent5,12986311:doFlip,[(-148,139)(-148,48)]) } Add(Hub,16299401,-227,28) { OutCount=4 link(onEvent1,12986311:doInit,[]) link(onEvent2,3213527:doWork2,[]) link(onEvent3,9506849:doTimer,[(-176,48)(-176,80)(-288,80)(-288,111)]) } Add(HubEx,3213527,-143,28) { link(onEvent,12986311:doViewPort,[]) } Add(GL_Options,16663485,-45,28) { Flag=2 link(onEvent,1571481:doEnabled,[]) } Add(GL_Options,1571481,11,28) { link(onEvent,15984634:doEnabled,[]) } Add(GL_Options,15984634,60,28) { Flag=1 link(onEvent,4593655:doInit,[]) } Add(GL_Perspective,3410847,-87,105) { Fovy=5 } Add(ChildPanel,10677880,-101,-56) { } BEGIN_SDK Add(EditMulti,9128714,10,10) { EventCount=1 VarCount=3 link(Var1,246425:Handle,[(16,174)(20,174)]) link(Var2,246425:MouseX,[(23,174)(27,174)]) link(Var3,246425:MouseY,[(30,174)(34,174)]) } Add(Panel,246425,14,105) { Width=512 Height=512 Point(Handle) Point(onMouseMove) Point(MouseX) Point(MouseY) link(onMouseMove,9128714:onEvent1,[(189,118)(189,16)]) } END_SDK Add(GL_Rotate,3276760,-220,231) { Y=1 link(onRotate,8079493:doRotate,[]) link(Angle,4326144:Position,[(-214,215)(-291,215)]) } Add(GL_Rotate,8079493,-171,231) { X=1 link(onRotate,12798500:doRotate,[]) link(Angle,95109:Position,[(-165,215)(-151,215)]) } Add(GL_Rotate,12798500,-115,231) { Z=1 link(onRotate,2230488:doEnabled,[]) } Add(Label,11860779,-115,168) { Left=715 Top=70 Caption="" } Add(Label,613228,-73,168) { Left=530 Top=70 Width=93 Height=17 Caption="Поворот по оси X" } Add(TrackBar,95109,-157,168) { Left=520 Top=95 Width=260 Max=360 link(onPosition,11860779:doText,[]) } Add(Label,5918248,-255,168) { Left=715 Top=10 Caption="" } Add(Label,5443084,-213,168) { Left=530 Top=10 Width=93 Height=17 Caption="Поворот по оси Y" } Add(TrackBar,4326144,-297,168) { Left=520 Top=35 Width=260 Max=360 link(onPosition,5918248:doText,[]) } Add(GL_Disk,8741455,144,231) { OutRadius=0.15 Slices=40 Stacks=40 link(onDraw,6616114:doEnabled,[]) } Add(GL_StencilOp,14661851,-24,231) { Fail=2 zFail=2 zPass=2 link(onStencilOp,649034:doStencilFunc,[]) } Add(GL_StencilFunc,649034,25,231) { Func=6 Ref=1 link(onStencilFunc,5116921:doDisabled,[(73,237)(73,244)]) } Add(GL_Options,5116921,88,231) { link(onEvent,8741455:doDraw,[]) } Add(GL_Options,2230488,-66,231) { Flag=11 link(onEvent,14661851:doStencilOp,[]) } Add(GL_StencilOp,5805993,235,231) { link(onStencilOp,2156549:doStencilFunc,[]) } Add(GL_StencilFunc,2156549,284,231) { Func=4 Ref=1 link(onStencilFunc,4082630:doDraw,[(328,237)(328,269)(-71,269)(-71,300)]) } Add(Gl_Translate,16460065,88,294) { Z=0.2 link(onTranslate,8474916:doDraw,[]) } Add(GL_GTools,16329553,25,294) { Point(doPushMatrix) link(onEvent,16460065:doTranslate,[]) } Add(GL_GTools,16348534,179,294) { Point(doPopMatrix) } Add(GL_Main,12986311,-101,28) { Color=32896 StencilBits=1 link(onInit,16663485:doEnabled,[]) link(Handle,10677880:Var1,[]) } Add(GL_Options,6616114,193,231) { link(onEvent,5805993:doStencilOp,[]) } Add(GL_Options,1130235,-24,294) { Flag=11 link(onEvent,16329553:doPushMatrix,[]) } Add(GL_Cylinder,4082630,-66,294) { BaseRadius=0.1 TopRadius=0.1 Height=0.1 Slices=60 Stacks=60 link(onDraw,1130235:doDisabled,[(-33,300)(-33,307)]) } Add(GL_Cylinder,8474916,130,294) { BaseRadius=0.1 TopRadius=0.1 Height=0.1 Slices=60 Stacks=60 link(onDraw,16348534:doPopMatrix,[]) } Add(GL_Light,11539355,165,28) { Ambient=5059373 Diffuse=11171692 Specular=255 }
------------ Дoбавленo:
Зеркало + объект с текстурой.
Add(MainForm,15261923,-373,-21) { Left=20 Top=105 Width=789 Height=541 Point(MouseX) Point(MouseY) Point(onResize) Point(Handle) link(onCreate,16299401:doEvent1,[(-333,-1)(-333,20)]) link(onResize,3213527:doWork1,[(-236,6)]) } Add(Timer,9506849,-373,91) { Interval=10 Enable=1 link(onTimer,1049454:doEvent1,[]) } Add(GL_GTools,771925,-240,91) { Point(doClear) Point(doPushMatrix) Point(doPopMatrix) link(onEvent,3410847:doPerspective,[]) } Add(GL_GluTools,4593655,110,14) { Texture=0 link(onInit,11539355:doEnabled,[]) } Add(Hub,1049454,-324,91) { OutCount=5 link(onEvent1,771925:doClear,[]) link(onEvent2,771925:doPushMatrix,[]) link(onEvent3,3276760:doRotate,[(-268,111)(-268,196)(-329,196)(-329,223)]) link(onEvent4,771925:doPopMatrix,[(-260,118)(-260,111)]) link(onEvent5,12986311:doFlip,[(-245,125)(-245,34)]) } Add(Hub,16299401,-324,14) { OutCount=4 link(onEvent1,12986311:doInit,[]) link(onEvent2,3213527:doWork2,[]) link(onEvent3,9506849:doTimer,[(-273,34)(-273,66)(-385,66)(-385,97)]) } Add(HubEx,3213527,-240,14) { link(onEvent,12986311:doViewPort,[]) } Add(GL_Options,16663485,-142,14) { Flag=2 link(onEvent,1571481:doEnabled,[]) } Add(GL_Options,1571481,-86,14) { link(onEvent,15984634:doEnabled,[]) } Add(GL_Options,15984634,-37,14) { Flag=1 link(onEvent,7386030:doEnabled,[(11,20)(11,27)]) } Add(GL_Perspective,3410847,-184,91) { Fovy=5 } Add(ChildPanel,10677880,-198,-70) { } BEGIN_SDK Add(EditMulti,9128714,10,10) { EventCount=1 VarCount=3 link(Var1,246425:Handle,[(16,174)(20,174)]) link(Var2,246425:MouseX,[(23,174)(27,174)]) link(Var3,246425:MouseY,[(30,174)(34,174)]) } Add(Panel,246425,14,105) { Width=512 Height=512 Point(Handle) Point(onMouseMove) Point(MouseX) Point(MouseY) link(onMouseMove,9128714:onEvent1,[(189,118)(189,16)]) } END_SDK Add(GL_Rotate,3276760,-317,217) { Y=1 link(onRotate,8079493:doRotate,[]) link(Angle,4326144:Position,[(-311,201)(-388,201)]) } Add(GL_Rotate,8079493,-268,217) { X=1 link(onRotate,12798500:doRotate,[]) link(Angle,95109:Position,[(-262,201)(-248,201)]) } Add(GL_Rotate,12798500,-212,217) { Z=1 link(onRotate,13133799:doCallList,[(-168,223)(-168,230)]) } Add(Label,11860779,-212,154) { Left=715 Top=70 Caption="" } Add(Label,613228,-170,154) { Left=530 Top=70 Width=93 Height=17 Caption="Поворот по оси X" } Add(TrackBar,95109,-254,154) { Left=520 Top=95 Width=260 Max=360 link(onPosition,11860779:doText,[]) } Add(Label,5918248,-352,154) { Left=715 Top=10 Caption="" } Add(Label,5443084,-310,154) { Left=530 Top=10 Width=93 Height=17 Caption="Поворот по оси Y" } Add(TrackBar,4326144,-394,154) { Left=520 Top=35 Width=260 Max=360 link(onPosition,5918248:doText,[]) } Add(GL_Disk,8741455,103,224) { OutRadius=0.15 Slices=40 Stacks=40 link(onDraw,6616114:doEnabled,[]) } Add(GL_StencilOp,14661851,-65,224) { Fail=2 zFail=2 zPass=2 link(onStencilOp,649034:doStencilFunc,[]) } Add(GL_StencilFunc,649034,-16,224) { Func=6 Ref=1 link(onStencilFunc,5116921:doDisabled,[(32,230)(32,237)]) } Add(GL_Options,5116921,47,224) { link(onEvent,8741455:doDraw,[]) } Add(GL_Options,2230488,-107,224) { Flag=11 link(onEvent,14661851:doStencilOp,[]) } Add(GL_StencilOp,5805993,194,224) { link(onStencilOp,2156549:doStencilFunc,[]) } Add(GL_StencilFunc,2156549,257,224) { Func=4 Ref=1 link(onStencilFunc,16000784:doCallList,[(301,230)(301,269)(-224,269)(-224,300)]) } Add(Gl_Translate,16460065,61,294) { Z=0.2 link(onTranslate,16487823:doDraw,[]) } Add(GL_GTools,16329553,-2,294) { Point(doPushMatrix) link(onEvent,16460065:doTranslate,[]) } Add(GL_GTools,16348534,159,294) { Point(doPopMatrix) } Add(GL_Main,12986311,-198,14) { Color=32896 StencilBits=1 link(onInit,16663485:doEnabled,[]) link(Handle,10677880:Var1,[]) } Add(GL_Options,6616114,152,224) { link(onEvent,5805993:doStencilOp,[]) } Add(GL_Options,1130235,-51,294) { Flag=11 link(onEvent,16329553:doPushMatrix,[]) } Add(GL_Light,11539355,166,14) { Ambient=5059373 Diffuse=11171692 Specular=255 link(onEnabled,14234746:doCreate,[(216,20)(216,56)]) } Add(GL_Options,7386030,26,21) { Flag=10 link(onEvent,4593655:doInit,[(84,27)(84,20)]) } Add(GL_Texture,14234746,234,50) { UseList=0 Index=1 link(onCreate,4234123:doCreate,[]) link(Bitmap,14855894:Bitmap,[]) } Add(Bitmap,14855894,234,-13) { Picture=[ZIPF600000078DA73F2FDC600016640AC01C41C50CCC82001163FC080090E0C710000D84792CD] } Add(GL_CallList,13133799,-156,224) { Index=1 link(onCallList,2230488:doEnabled,[]) } Add(GL_Texture,4234123,290,50) { UseList=0 Index=2 link(Bitmap,8263248:Bitmap,[]) } Add(Bitmap,8263248,290,-13) { Picture=[ZIPF600000078DA73F2FDC600016640AC01C41C50CCC82001163FC08009FEFFFF2F79901193C42AF81F0C06957A00F04F7DCD] } Add(GL_CallList,16000784,-219,294) { Index=2 link(onCallList,7355728:doTranslate,[]) } Add(GL_Sphere,16487823,110,294) { Radius=0.1 Slices=50 Stacks=50 link(onDraw,16348534:doPopMatrix,[]) } Add(GL_Sphere,12768047,-107,294) { Radius=0.1 Slices=50 Stacks=50 link(onDraw,1130235:doDisabled,[(-63,300)(-63,307)]) } Add(Gl_Translate,7355728,-156,294) { Z=0.1 link(onTranslate,12768047:doDraw,[]) }
|