Вверх ↑
Ответов: 1304
Рейтинг: 405
#1: 2009-07-29 22:40:01 ЛС | профиль | цитата
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,[])
}

карма: 3

0
файлы: 1code_14332.txt [7.8KB] [138]