在cocos2dx(3.2)中自定义openGL绘图

时间:2014-09-17 05:23:22

标签: c++ opengl-es cocos2d-x

我试图在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原始对象(多边形,点,线)。

我在这里缺少什么?

0 个答案:

没有答案