Difference between revisions of "Pixel:setTexture"

From GiderosMobile
m (Reverted edits by MoKaLux (talk) to last revision by Hgy29)
Tag: Rollback
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}}

Revision as of 12:24, 25 November 2023

Available since: Gideros 2016.12
Class: Pixel

Description

Associates a texture to the pixel.

Pixel:setTexture(texture,slot,matrix)

Parameters

texture: (TextureBase or TextureRegion) the texture to associate to the pixel, or nil to deassociate
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
matrix: (Matrix) an optional transform for the texture optional