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];