#ifdef FLIP_Y_2D
float ry=vertexes->vertex1.y-device->emitter_y_source;
vertexes->vertex1.y=device->emitter_y_target+ry;
ry=vertexes->vertex2.y-device->emitter_y_source;
vertexes->vertex2.y=device->emitter_y_target+ry;
ry=vertexes->vertex3.y-device->emitter_y_source;
vertexes->vertex3.y=device->emitter_y_target+ry;
ry=vertexes->vertex4.y-device->emitter_y_source;
vertexes->vertex4.y=device->emitter_y_target+ry;
#endif
Есть еще один косяк, если добавить эмиттер на слой, а потом этот слой промасштабировать, то частицы смещаются по оси Y, в результате чего не совпадают с реальными координатами внутри этого слоя.
// save off current state of blend enabled
GLboolean blendEnabled;
glGetBooleanv(GL_BLEND, &blendEnabled);
// save off current state of src / dst blend functions
GLint blendSrc;
GLint blendDst;
glGetIntegerv(GL_BLEND_SRC_ALPHA, &blendSrc);
glGetIntegerv(GL_BLEND_DST_ALPHA, &blendDst);
//
// change blend state... do other stuff
//
// restore saved state of blend enabled and blend functions
if (blendEnabled) {
glEnable(GL_BLEND);
}
else {
glDisable(GL_BLEND);
}
glBlendFunc(blendSrc, blendDst);
void CCMagicEmitter::visit(void)
{
GLint attr_GL_BLEND_SRC_ALPHA, attr_GL_BLEND_DST_ALPHA;
glGetIntegerv(GL_BLEND_SRC_ALPHA, &attr_GL_BLEND_SRC_ALPHA);
glGetIntegerv(GL_BLEND_DST_ALPHA, &attr_GL_BLEND_DST_ALPHA);
// Set the shader program for OpenGL
CCGLProgram* program=CCShaderCache::sharedShaderCache()->programForKey(kCCShader_PositionTextureColor);
setShaderProgram(program);
program->use();
program->setUniformsForBuiltins();
ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position | kCCVertexAttribFlag_TexCoords | kCCVertexAttribFlag_Color);
emitter->Render();
glBlendFunc(attr_GL_BLEND_SRC_ALPHA, attr_GL_BLEND_DST_ALPHA);
}
GLboolean blendEnabled;
glGetBooleanv(GL_BLEND, &blendEnabled);
У себя я исправил это сохранением текущих настроек блендинга в int MP_Emitter::Render() и восстановлением их в конце метода.
И еще, другая проблема возникает не только на кокосе, но и на мармеладе как минимум. Некоторые системы частиц не получается перемещать, они все время рисуются в одной и той же позиции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2