OpenGLES: uniform变量传参

来源:互联网 发布:淘宝明星zero距离签名 编辑:程序博客网 时间:2024/06/05 20:19

uniformshader里面的一种变量,它是由外部程序设置进来的,除非你显式地调用函数来修改这个uniform的值,否则它的值恒定不变。

quick是通过GLProgramState类提供的接口来传值的,下面列出相关方法:

--------------------------------
-- @overload self, int, vec2_table        
-- @overload self, string, vec2_table        
-- @function [parent=#GLProgramState] setUniformVec2
-- @param self
-- @param #string uniformName
-- @param #vec2_table value
-- @return GLProgramState#GLProgramState self (return value:cc.GLProgramState)

示例:glprogramState:setUniformVec2("blurSize",{x=0.3,y=0.3})
--------------------------------
-- @overload self, string, unsigned int        
-- @overload self, string, cc.Texture2D        
-- @overload self, int, cc.Texture2D        
-- @overload self, int, unsigned int        
-- @function [parent=#GLProgramState] setUniformTexture
-- @param self
-- @param #int uniformLocation
-- @param #unsigned int textureId
-- @return GLProgramState#GLProgramState self (return value:cc.GLProgramState)

示例:
local texture = cc.Director:getInstance():getTextureCache():addImage("mask.png")

glprogramState:setUniformTexture("u_mask_texture", texture:getName())

--------------------------------
-- @overload self, int, mat4_table         
-- @overload self, string, mat4_table        
-- @function [parent=#GLProgramState] setUniformMat4
-- @param self
-- @param #string uniformName
-- @param #mat4_table value
-- @return GLProgramState#GLProgramState self (return value:cc.GLProgramState)


--------------------------------
-- @overload self, int, float         
-- @overload self, string, float        
-- @function [parent=#GLProgramState] setUniformFloat
-- @param self
-- @param #string uniformName
-- @param #float value
-- @return GLProgramState#GLProgramState self (return value:cc.GLProgramState)


--------------------------------
-- @overload self, int, vec3_table        
-- @overload self, string, vec3_table        
-- @function [parent=#GLProgramState] setUniformVec3
-- @param self
-- @param #string uniformName
-- @param #vec3_table value
-- @return GLProgramState#GLProgramState self (return value:cc.GLProgramState)

示例:glprogramState:setUniformVec3("blurSize",{x=0.3,y=0.3,z=0.3})
--------------------------------
-- @overload self, int, int         
-- @overload self, string, int         
-- @function [parent=#GLProgramState] setUniformInt
-- @param self
-- @param #string uniformName
-- @param #int value
-- @return GLProgramState#GLProgramState self (return value:cc.GLProgramState)


--------------------------------
-- @overload self, int, vec4_table        
-- @overload self, string, vec4_table        
-- @function [parent=#GLProgramState] setUniformVec4
-- @param self
-- @param #string uniformName
-- @param #vec4_table value
-- @return GLProgramState#GLProgramState self (return value:cc.GLProgramState)

 

示例:glprogramState:setUniformVec4("blurSize",{x=0.3,y=0.3,z=0.3,w=0.3})

 

0 0