我试图在cocos2dx上使用openGL在屏幕上绘制一个三角形。目前我已经将cocos的Node对象子类化,我在其中进行绘图。
在最新版本的cocos2dx中,我无法覆盖draw()
函数,而是试图覆盖draw(Renderer* renderer, const Mat4 &transform, uint32_t flags)
并将自定义命令添加到渲染器,就像这样。
const GLfloat vertices[9] = {
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f
};
void MyNodeSubclass::draw(Renderer* renderer, const Mat4 &transform, uint32_t flags){
CustomCommand *_customCommand = new CustomCommand();
_customCommand->init(_globalZOrder);
_customCommand->func = CC_CALLBACK_0(MyNodeSubclass::drawTriangle, this);
renderer->addCommand(_customCommand);
}
void MyNodeSubclass::drawTriangle(){
glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_POSITION);
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 3, GL_FLOAT, GL_FALSE,0, vertices);
glDrawArrays(GL_TRIANGLES, 0, 3);
}
我的加载着色器方法
void MyNodeSubclass::loadOurShaders(){
GLProgram* myShader = new GLProgram();
myShader->initWithFilenames("shader.vert", "shader.frag");
myShader->bindAttribLocation(GLProgram::ATTRIBUTE_NAME_POSITION, GLProgram::VERTEX_ATTRIB_POSITION);
myShader->link();
myShader->updateUniforms();
}
我在屏幕上看不到三角形。但是我可以通过交换我的drawTriangle函数中的whats而不是使用openGL的顶点来绘制cocos2dx原始对象(多边形,点,线)。
我在这里缺少什么?