Dilma писал(а): конструкцию с кучей GL_Color можно было заменить одной выборкой из массива
А лучше вобще заменить математикой  .
Roma писал(а): чуть не забыл если заметите ошибки то пишите какие
Не заметить трудно  .
1. Не правильно используются дисплейные списки, правильно в исправленном примере.
2. В OpenGL используется один таймер на отрисовку(или не одного).
code_14332.txt
Roma, в целом попытка удалась, думаю следующие схемы будут более продуманные.
Разобрал свою схему спираль по полочкам  , выкладываю как пример плавного изменения цвета материала.
Add(MainForm,15261923,11,14) { Left=20 Top=105 Width=500 Height=500 Position=1 Point(MouseX) Point(MouseY) Point(onResize) Point(Handle) link(onCreate,16299401:doEvent1,[(51,34)(51,104)]) link(onResize,14551396:doWork1,[(113,41)]) } Add(GL_Main,12986311,123,98) { link(onInit,14506430:doWork1,[]) link(onViewPort,3410847:doPerspective,[(163,111)(163,146)]) link(Handle,15261923:Handle,[(129,75)(31,75)]) } Add(Timer,9506849,11,182) { Interval=10 Enable=1 link(onTimer,1049454:doEvent1,[]) } Add(GL_GTools,771925,123,182) { Point(doClear) Point(doPushMatrix) Point(doPopMatrix) } Add(Hub,1049454,60,182) { OutCount=5 link(onEvent1,771925:doClear,[]) link(onEvent2,771925:doPushMatrix,[]) link(onEvent3,10714674:doWork1,[(92,202)(92,126)(-1,126)(-1,90)]) link(onEvent4,771925:doPopMatrix,[(114,209)(114,202)]) link(onEvent5,12986311:doFlip,[(100,216)(100,118)]) } Add(Hub,16299401,60,98) { OutCount=3 link(onEvent1,12986311:doInit,[]) link(onEvent2,14551396:doWork2,[]) link(onEvent3,9506849:doTimer,[(86,118)(86,176)(-2,176)(-2,188)]) } Add(HubEx,14551396,109,98) { link(onEvent,12986311:doViewPort,[]) } Add(MultiElement,10714674,11,84) { link(onEvent1,12050746:doNext,[]) link(Data1,15261923:MouseX,[]) link(Data2,15261923:MouseY,[]) } BEGIN_SDK Add(EditMulti,4359962,3,3) { EventCount=1 WorkCount=1 DataCount=2 Width=223 Height=109 link(doWork1,3276760:doRotate,[(19,9)(19,55)]) } Add(GL_Rotate,3276760,35,49) { Y=1 link(onRotate,8079493:doRotate,[]) link(Angle,4359962:Data1,[(62,15)(9,15)]) } Add(GL_Rotate,8079493,112,49) { X=1 link(onRotate,4359962:onEvent1,[(189,55)(189,9)]) link(Angle,4359962:Data2,[(139,8)(16,8)]) } END_SDK Add(GL_Perspective,3410847,172,140) { Fovy=20 } Add(GL_Color,1211308,403,161) { Color=0 link(onColor,13875971:doSet,[]) link(Color,2333551:Color,[(409,150)(396,150)(396,201)(360,201)]) } Add(RGB,2333551,354,161) { link(onRGB,1211308:doColor,[]) link(R,15010004:Var3,[(360,128)]) link(G,14706576:Result,[]) link(B,6192732:Result,[(374,129)(451,129)]) } Add(Counter,12050746,235,84) { Min=-255 Max=255 link(onNext,2059400:doOperation,[]) } Add(Math,2059400,277,84) { OpType=33 link(onResult,8024215:doNext,[]) } Add(Counter,8024215,319,84) { Min=-255 Max=255 Default=100 link(onNext,14706576:doOperation,[]) } Add(Math,14706576,361,84) { OpType=33 link(onResult,12587325:doNext,[]) } Add(Counter,12587325,403,84) { Min=-255 Max=255 Default=-150 link(onNext,6192732:doOperation,[]) } Add(Math,6192732,445,84) { OpType=33 link(onResult,6044065:doData,[]) } Add(GL_Torus,13698447,487,161) { inRadius=0.2 outRadius=0.7 Sides=40 Rings=40 } Add(GL_Sphere,3474759,487,224) { Radius=0.5 Slices=80 Stacks=80 } Add(RGB,10539864,354,224) { link(onRGB,6640000:doColor,[]) link(R,15010004:Var2,[(360,214)(339,214)]) } Add(Hub,14567162,305,196) { link(onEvent1,2333551:doRGB,[(323,202)(323,167)]) link(onEvent2,10539864:doRGB,[(322,209)(322,230)]) } Add(GL_Color,6640000,403,224) { Color=0 link(onColor,16079325:doSet,[]) link(Color,10539864:Color,[(409,213)(395,213)(395,264)(360,264)]) } Add(DoData,6044065,487,84) { link(onEventData,14567162:doEvent1,[(531,90)(531,140)(285,140)(285,202)]) } Add(GetDataEx,15010004,326,119) { Angle=3 link(Data,2059400:Result,[(283,128)]) } Add(InfoTip,5944256,228,63) { Info=#1:R| Font=[MS Sans Serif,8,1,255,1] Width=78 Height=18 } Add(InfoTip,1771445,312,63) { Info=#1:G| Font=[MS Sans Serif,8,1,4053083,1] Width=78 Height=18 } Add(InfoTip,1124159,396,63) { Info=#1:B| Font=[MS Sans Serif,8,1,16711680,1] Width=78 Height=18 } Add(InfoTip,1880134,221,7) { Info=#160:Градиентное изменение яркости выбранной цветовой составляющей, или всех сразу :), начальный сдвиг цветов смотреть в свойствах элемента "Counter"(по умолчанию)| Font=[MS Sans Serif,8,1,0,1] Width=323 Height=263 } Add(MultiElement,14506430,172,98) { @Hint=#16:Настройки вывода| } BEGIN_SDK Add(EditMulti,879798,21,21) { EventCount=1 WorkCount=1 Width=237 Height=67 link(doWork1,12198675:doInit,[(29,27)(29,34)]) } Add(GL_GluTools,12198675,35,28) { Texture=0 link(onInit,1101264:doEnabled,[]) } Add(GL_Options,1101264,77,28) { link(onEvent,5851269:doEnabled,[]) } Add(GL_Options,5809249,161,28) { Flag=2 link(onEvent,11895953:doEnabled,[]) } Add(GL_Options,5851269,119,28) { Flag=1 link(onEvent,5809249:doEnabled,[]) } Add(GL_Light,11895953,210,28) { } END_SDK Add(GL_Material,13875971,445,161) { Diffuse=0 Emission=2302755 link(onSet,13698447:doDraw,[]) } Add(GL_Material,16079325,445,224) { Diffuse=0 Emission=6316128 link(onSet,3474759:doDraw,[]) }
|