cocos2d V3 glDrawArrays无效

时间:2014-03-31 17:51:50

标签: cocos2d-iphone gldrawarrays

转换为cocos2d V3,此代码不生成绘图:

[_shaderProgram use]; //for V2 this was [shaderProgram_ use];

ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position | kCCVertexAttribFlag_Color);
glVertexAttribPointer(kCCVertexAttrib_Position, 2, GL_FLOAT, GL_FALSE, 0, lineVertices);
glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_FLOAT, GL_FALSE, 0, colorVertices);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glDrawArrays(GL_TRIANGLE_STRIP, 0, 6);

为什么这段代码在V3中不起作用?此代码是从CCScene的draw方法调用的。任何帮助非常感谢。

更新:通过在此代码之前调用ccDrawPoint找到部分解决方法(绘制一个小的随机点)。然后glDrawArrays绘制正确的形状(读取我的lineVertices数组)但忽略我的colorVertices数组。如何让glDrawArrays使用我的colorVertices数组? (此代码在转换为V3之前正常工作)

1 个答案:

答案 0 :(得分:2)

我最近在节点上做了一些GL绘图,并且在我挖掘CCNode的绘图代码之前遇到了类似的问题。

不要在shaderProgram上显式调用use,而是尝试调用以下宏:

CC_NODE_DRAW_SETUP()

它在Cocos2D v3中基本上扩展到以下内容:

ccGLEnable(_glServerState);
[_shaderProgram use];
[_shaderProgram setUniformsForBuiltins];