Показать сообщение отдельно
Старый 25.08.2014, 11:57   #179
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 103
Написано 27 полезных сообщений
(для 91 пользователей)
Ответ: Xors3D. Шейдеры. Урок первый

Я решил смешивать текстуры без шейдеров, так как текстуры статичны и не особо большого размера

Пример
IncludeFile "Xors3D.pbi":xGraphics3D(0,0,16,0,#False)

Global Image=xCreateImage(512,512)
Global Dim ImageList(40)
For i=0 To 40
  ImageList(i)=xLoadImage("Str(i)+".jpg")
Next


Procedure Mixer(PosX,PosY,Image1,Image2,K.f)
  If PosX>#False And PosY>#False And PosX<1024 And PosY<1024
    RGB1=xReadPixel(PosX,PosY,xImageBuffer(ImageList(Image1)))
    R1=Red(RGB1):G1=Green(RGB1):B1=Blue(RGB1)
    RGB2=xReadPixel(PosX,PosY,xImageBuffer(ImageList(Image2)))
    R2=Red(RGB2):G2=Green(RGB2):B2=Blue(RGB2)
    K1.f=K
    K2.f=1-K
    xColor((R1*K1+R2*K2)/2,(G1*K1+G2*K2)/2,(G1*K1+G2*K2)/2)
    xSetBuffer(xImageBuffer(Image))
    xRect (PosX,PosY,1,1,1)
    xSetBuffer(xBackBuffer())
  EndIf
EndProcedure





For x=0 To 512
  For y=0 To 512
    Mixer(x,y,0,13,1,0.5)
  Next
Next

xSaveImage(image,"123.bmp")
Repeat
  xUpdateWorld()
  xRenderWorld()
  xDrawImage(Image,0,0)
  xFlip()
  xCls()
ForEver
Код довожу до ума так как алгоритм смешивания на самом деле сложнее
(Offline)
 
Ответить с цитированием