|
|
| Line 4: |
Line 4: |
| | | | |
| | === Description === | | === Description === |
| − | Associates a texture to the Pixel. | + | Associates a texture to the pixel. |
| | <syntaxhighlight lang="lua"> | | <syntaxhighlight lang="lua"> |
| | Pixel:setTexture(texture,slot,matrix) | | Pixel:setTexture(texture,slot,matrix) |
| | </syntaxhighlight> | | </syntaxhighlight> |
| − |
| |
| − | '''Please note: slot is only useful in conjonction with Shader'''
| |
| | | | |
| | === Parameters === | | === Parameters === |
| Line 15: |
Line 13: |
| | '''slot''': (number) the texture slot that the texture should be associated to. Leave empty or set to 0 for main texture, or if you don't use a specific shader '''optional'''<br/> | | '''slot''': (number) the texture slot that the texture should be associated to. Leave empty or set to 0 for main texture, or if you don't use a specific shader '''optional'''<br/> |
| | '''matrix''': (Matrix) an optional transform for the texture '''optional'''<br/> | | '''matrix''': (Matrix) an optional transform for the texture '''optional'''<br/> |
| − |
| |
| − | === Examples ===
| |
| − | '''2 textures masked in a Pixel'''
| |
| − | <syntaxhighlight lang="lua">
| |
| − | --!NEEDS:luashader/luashader.lua
| |
| − | application:setBackgroundColor(0x909090)
| |
| − |
| |
| − | function vshaderpixslot(vVertex,vColor,vTexCoord) : Shader
| |
| − | local vertex = hF4(vVertex,0.0,1.0)
| |
| − | fTexCoord = vTexCoord
| |
| − | return vMatrix*vertex
| |
| − | end
| |
| − | function fshaderpixslot() : Shader
| |
| − | local frag = texture2D(fTexture, fTexCoord)
| |
| − | local frag2 = texture2D(fTexture2, fTexCoord)
| |
| − | return frag * frag2 -- mask
| |
| − | end
| |
| − |
| |
| − | local shaderpixslot=Shader.lua(vshaderpixslot,fshaderpixslot,0,
| |
| − | {
| |
| − | {name="vMatrix", type=Shader.CMATRIX, sys=Shader.SYS_WVP, vertex=true},
| |
| − | {name="fTexture", type=Shader.CTEXTURE, vertex=false},
| |
| − | {name="fTexture2", type=Shader.CTEXTURE, vertex=false},
| |
| − | },
| |
| − | {
| |
| − | {name="vVertex", type=Shader.DFLOAT, mult=2, slot=0, offset=0},
| |
| − | {name="vColor", type=Shader.DUBYTE, mult=4, slot=1, offset=0},
| |
| − | {name="vTexCoord", type=Shader.DFLOAT, mult=2, slot=2, offset=0},
| |
| − | },
| |
| − | {
| |
| − | {name="fTexCoord", type=Shader.CFLOAT2},
| |
| − | }
| |
| − | )
| |
| − |
| |
| − | local tex=Texture.new("gfx/test.png")
| |
| − | local tex2=Texture.new("gfx/arrow_0001.png")
| |
| − | local texw, texh = tex:getWidth(), tex:getHeight()
| |
| − |
| |
| − | local px = Pixel.new(nil, texw, texh)
| |
| − | px:setTexture(tex, 0)
| |
| − | px:setTexture(tex2, 1)
| |
| − | px:setShader(shaderpixslot)
| |
| − |
| |
| − | stage:addChild(px)
| |
| − | </syntaxhighlight>
| |
| − |
| |
| − | '''Change Pixel Texture slots on mouse hover'''
| |
| − | <syntaxhighlight lang="lua">
| |
| − | --!NEEDS:luashader/luashader.lua
| |
| − |
| |
| − | -- bg
| |
| − | application:setBackgroundColor(0x00007f)
| |
| − |
| |
| − | -- shader
| |
| − | function vshaderpixelslot(vVertex, vColor, vTexCoord) : Shader
| |
| − | local vertex = hF4(vVertex, 0.0, 1.0)
| |
| − | fTexCoord = vTexCoord
| |
| − | return vMatrix*vertex
| |
| − | end
| |
| − | function fshaderpixelslot() : Shader
| |
| − | local frag = texture2D(fTexture, fTexCoord)
| |
| − | local frag2 = texture2D(fTexture2, fTexCoord)
| |
| − | if slot == 0 then return frag
| |
| − | else return frag2
| |
| − | end
| |
| − | end
| |
| − |
| |
| − | local shaderpixelslot=Shader.lua(vshaderpixelslot, fshaderpixelslot, 0,
| |
| − | {
| |
| − | {name="vMatrix", type=Shader.CMATRIX, sys=Shader.SYS_WVP, vertex=true},
| |
| − | {name="fTexture", type=Shader.CTEXTURE, vertex=false},
| |
| − | {name="fTexture2", type=Shader.CTEXTURE, vertex=false},
| |
| − | {name="slot", type=Shader.CINT, vertex=false},
| |
| − | },
| |
| − | {
| |
| − | {name="vVertex", type=Shader.DFLOAT, mult=2, slot=0, offset=0},
| |
| − | {name="vColor", type=Shader.DUBYTE, mult=4, slot=1, offset=0},
| |
| − | {name="vTexCoord", type=Shader.DFLOAT, mult=2, slot=2, offset=0},
| |
| − | },
| |
| − | {
| |
| − | {name="fTexCoord", type=Shader.CFLOAT2},
| |
| − | }
| |
| − | )
| |
| − |
| |
| − | -- textures
| |
| − | local texbtnup=Texture.new("gfx/ui/btn_01_up.png")
| |
| − | local texbtndown=Texture.new("gfx/ui/btn_01_down.png")
| |
| − |
| |
| − | -- objects
| |
| − | local px = Pixel.new(texbtnup)
| |
| − | -- params
| |
| − | px:setTexture(texbtndown, 1) -- texture, slot
| |
| − | px:setShader(shaderpixelslot)
| |
| − | -- position
| |
| − | px:setPosition(8*4, 8*16)
| |
| − | -- order
| |
| − | stage:addChild(px)
| |
| − |
| |
| − | -- listeners
| |
| − | local onenter, moving, onexit
| |
| − | px:addEventListener(Event.MOUSE_HOVER, function(ev)
| |
| − | if px:hitTestPoint(ev.x, ev.y, true) then -- enter
| |
| − | -- execute code only once *
| |
| − | onenter = not onenter
| |
| − | if not onenter then moving = true end
| |
| − | if not moving then
| |
| − | -- execute action only once
| |
| − | px:setShaderConstant("slot", Shader.CINT, 1, 1) -- button Down texture
| |
| − | else
| |
| − | onexit = true
| |
| − | end
| |
| − | else -- exit
| |
| − | onenter = false
| |
| − | moving = false
| |
| − | if onexit then
| |
| − | -- execute exit action only once
| |
| − | onexit = false
| |
| − | px:setShaderConstant("slot", Shader.CINT, 1, 0) -- button Up texture
| |
| − | end
| |
| − | end
| |
| − | ev:stopPropagation()
| |
| − | end)
| |
| − | </syntaxhighlight>
| |
| | | | |
| | {{Pixel}} | | {{Pixel}} |