---@meta
---@class cc.Material :cc.Ref
local Material={ }
cc.Material=Material
---* returns a clone (deep-copy) of the material
---@return self
function Material:clone () end
---*
---@param meshCommand cc.MeshCommand
---@param globalZOrder float
---@param vertexBuffer cc.backend.Buffer
---@param indexBuffer cc.backend.Buffer
---@param primitive int
---@param indexFormat int
---@param indexCount unsigned_int
---@param modelView mat4_table
---@return self
function Material:draw (meshCommand,globalZOrder,vertexBuffer,indexBuffer,primitive,indexFormat,indexCount,modelView) end
---*
---@return cc.RenderState
function Material:getRenderState () end
---* / sets the material name
---@param name string
---@return self
function Material:setName (name) end
---* Returns a Technique by index.
---* returns `nullptr` if the index is invalid.
---@param index int
---@return cc.Technique
function Material:getTechniqueByIndex (index) end
---* / returns the material name
---@return string
function Material:getName () end
---* Returns the list of Techniques
---@return array_table
function Material:getTechniques () end
---* Returns the number of Techniques in the Material.
---@return int
function Material:getTechniqueCount () end
---* Sets the current technique
---@param techniqueName string
---@return self
function Material:setTechnique (techniqueName) end
---* Returns a Technique by its name.
---* returns `nullptr` if the Technique can't be found.
---@param name string
---@return cc.Technique
function Material:getTechniqueByName (name) end
---* Adds a Technique into the Material
---@param technique cc.Technique
---@return self
function Material:addTechnique (technique) end
---* Returns the Technique used by the Material
---@return cc.Technique
function Material:getTechnique () end
---* Creates a Material using the data from the Properties object defined at the specified URL,
---* where the URL is of the format ".#//.../"
---* (and "#//.../" is optional).
---* param url The URL pointing to the Properties object defining the material.
---* return A new Material or NULL if there was an error.
---@param path string
---@return self
function Material:createWithFilename (path) end
---* Creates a material from the specified properties object.
---* param materialProperties The properties object defining the
---* material (must have namespace equal to 'material').
---* return A new Material.
---@param materialProperties cc.Properties
---@return self
function Material:createWithProperties (materialProperties) end
---* Creates a Material with a GLProgramState.
---* It will only contain one Technique and one Pass.
---* Added in order to support legacy code.
---@param programState cc.backend.ProgramState
---@return self
function Material:createWithProgramState (programState) end