0

转换为 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 之前有效)

4

1 回答 1

2

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

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

CC_NODE_DRAW_SETUP()

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

ccGLEnable(_glServerState);
[_shaderProgram use];
[_shaderProgram setUniformsForBuiltins];   
于 2014-04-08T22:37:16.803 回答