本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-x节点(ccGLStateCache.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
绑定/删除 texure ,启用/禁用 gl功能
///cocos2d-x-3.0alpha0/cocos2dx/shaders
//绑定/删除 texure ,启用/禁用 gl功能
#ifndef __CCGLSTATE_H__
#define __CCGLSTATE_H__
#include "CCGL.h"
#include "platform/CCPlatformMacros.h"
NS_CC_BEGIN
/**
* @addtogroup shaders
* @{
*/
class GLProgram;
namespace GL {
/** vertex attrib flags */
enum {
VERTEX_ATTRIB_FLAT_NONE = 0,
VERTEX_ATTRIB_FLAG_POSITION = 1 << 0,
VERTEX_ATTRIB_FLAG_COLOR = 1 << 1,
VERTEX_ATTRIB_FLAG_TEX_COORDS = 1 << 2,
VERTEX_ATTRIB_FLAG_POS_COLOR_TEX = (VERTEX_ATTRIB_FLAG_POSITION | VERTEX_ATTRIB_FLAG_COLOR | VERTEX_ATTRIB_FLAG_TEX_COORDS),
};
/** @file ccGLStateCache.h
*/
/** Invalidates(无效)the GL state cache.
如果 CC_ENABLE_GL_STATE_CACHE 将重置GL状态缓存.
@since v2.0.0
*/
void CC_DLL invalidateStateCache(void);
/** 使用的GL程序的情况与目前有所不同
如果 CC_ENABLE_GL_STATE_CACHE 被禁用,它会直接使用 glUseProgram() .
@since v2.0.0
*/
void CC_DLL useProgram(GLuint program);
/** Deletes the GL program. 如果正在使用使其无效
如果 CC_ENABLE_GL_STATE_CACHE i被禁用,它会直接使用 glDeleteProgram() .
@since v2.0.0
*/
void CC_DLL deleteProgram(GLuint program);
/** 使用混合函数的情况下,它尚未使用。
如果 CC_ENABLE_GL_STATE_CACHE 被禁用,它会直接使用 glBlendFunc() .
@since v2.0.0
*/
void CC_DLL blendFunc(GLenum sfactor, GLenum dfactor);
/** 重置混合模式缓存状态的情况下,你可以使用 glBlendFuncSeparate() or glBlendEquation().
如果 CC_ENABLE_GL_STATE_CACHE 被禁用,他会使用 GL_FUNC_ADD(默认的混合模式).
@since v2.0.0
*/
void CC_DLL blendResetToCache(void);
/** sets the projection(投影) matrix as dirty
@since v2.0.0
*/
void CC_DLL setProjectionMatrixDirty(void);
/** 使用传递过来的参数启用顶点标识
可能的标志:
* VERTEX_ATTRIB_FLAG_POSITION
* VERTEX_ATTRIB_FLAG_COLOR
* VERTEX_ATTRIB_FLAG_TEX_COORDS
这些标志可以进行 ORed. 标志是不存在的,将被禁用
@since v2.0.0
*/
void CC_DLL enableVertexAttribs(unsigned int flags);
/**如果尚未绑 texture 单元 0, 那么就绑定他.
如果 CC_ENABLE_GL_STATE_CACHE 被禁用,它会直接使用 glBindTexture() .
@since v2.0.0
*/
void CC_DLL bindTexture2D(GLuint textureId);
/** 如果 texture 没有绑定到给定的单位,那么就绑定他.
如果 CC_ENABLE_GL_STATE_CACHE 被禁用,它会直接使用 glBindTexture() .
@since v2.1.0
*/
void CC_DLL bindTexture2DN(GLuint textureUnit, GLuint textureId);
/** 它会删除给定的 texture. 如果texture 已经被绑定了, it will invalidate(无效) the cached.
如果 CC_ENABLE_GL_STATE_CACHE 被禁用,它会直接使用 glDeleteTextures() .
@since v2.0.0
*/
void CC_DLL deleteTexture(GLuint textureId);
/** 它会删除给定的 texture. 如果texture 已经被绑定了, it will invalidate(无效) the cached for the given texture unit.
如果 CC_ENABLE_GL_STATE_CACHE 被禁用,它会直接使用 glDeleteTextures() .
@since v2.1.0
*/
void CC_DLL deleteTextureN(GLuint textureUnit, GLuint textureId);
/** 如果 vertex array 没有绑,那么就绑定他.
如果 CC_ENABLE_GL_STATE_CACHE 被禁用,它会直接使用 glBindVertexArray() .
@since v2.0.0
*/
void CC_DLL bindVAO(GLuint vaoId);
// end of shaders group
/// @}
} // Namespace GL
NS_CC_END
#endif /* __CCGLSTATE_H__ */