您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x节点(ccGLStateCache.h)API

2013-11-30 14:17 127 查看
本文来自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__ */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: