cocos2d V3 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? Этот код вызывается из метода draw CCScene. Любая помощь высоко ценится.

ОБНОВЛЕНИЕ: частичный обходной путь, найденный путем вызова ccDrawPoint перед этим кодом (рисование небольшой случайной точки). Затем glDrawArrays рисует правильную форму (читает мой массив lineVertices), но игнорирует мой массив colorVertices. Как я могу заставить glDrawArrays использовать мой массив colorVertices? (этот код работал до того, как я перешел на V3)

1 ответ

Недавно я немного рисовал GL на узлах, и у меня были похожие проблемы, пока я не углубился в код рисования CCNode.

Вместо явного вызова use для shaderProgram, попробуйте вызвать следующий макрос:

CC_NODE_DRAW_SETUP()

В Cocos2D v3 он расширяется до следующего:

ccGLEnable(_glServerState);
[_shaderProgram use];
[_shaderProgram setUniformsForBuiltins];   
Другие вопросы по тегам