转换为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之前正常工作)
答案 0 :(得分:2)
我最近在节点上做了一些GL绘图,并且在我挖掘CCNode的绘图代码之前遇到了类似的问题。
不要在shaderProgram上显式调用use,而是尝试调用以下宏:
CC_NODE_DRAW_SETUP()
它在Cocos2D v3中基本上扩展到以下内容:
ccGLEnable(_glServerState);
[_shaderProgram use];
[_shaderProgram setUniformsForBuiltins];