用纹理填充区域 cocos2d-x
Fill the area with texture cocos2d-x
我一直在尝试制作 "Obstacle" class,它通过点数组构建 box2d 主体并绘制我的主体覆盖的区域。至于主体,它完全可以工作,我收到点数组,构建 b2PolygonShape 等等。但是,我真的不知道如何用点数组构建的颜色或纹理填充该区域。这是我的 draw() 方法:
void Obstacle::draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t flags)
{
CC_NODE_DRAW_SETUP();
glBlendFunc(CC_BLEND_SRC, CC_BLEND_DST);
GL::bindTexture2D(obstacleTexture->getName());
//DrawPrimitives::setDrawColor4F(1.0, 1.0, 0.0, 1.0);
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, 0, vertices);
glDrawArrays(GL_TRIANGLE_STRIP, 0, (GLsizei)shapePoints.size());
}
vertices 是我用来创建 b2body 的点数组。
您应该对构建的多边形进行三角剖分以便绘制。
poly2tri 是对形状进行三角剖分的不错选择:https://code.google.com/p/poly2tri/
对形状进行三角测量后,映射纹理坐标或设置顶点颜色。
我一直在尝试制作 "Obstacle" class,它通过点数组构建 box2d 主体并绘制我的主体覆盖的区域。至于主体,它完全可以工作,我收到点数组,构建 b2PolygonShape 等等。但是,我真的不知道如何用点数组构建的颜色或纹理填充该区域。这是我的 draw() 方法:
void Obstacle::draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t flags)
{ CC_NODE_DRAW_SETUP();
glBlendFunc(CC_BLEND_SRC, CC_BLEND_DST);
GL::bindTexture2D(obstacleTexture->getName());
//DrawPrimitives::setDrawColor4F(1.0, 1.0, 0.0, 1.0);
glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, 0, vertices);
glDrawArrays(GL_TRIANGLE_STRIP, 0, (GLsizei)shapePoints.size());
}
vertices 是我用来创建 b2body 的点数组。
您应该对构建的多边形进行三角剖分以便绘制。
poly2tri 是对形状进行三角剖分的不错选择:https://code.google.com/p/poly2tri/
对形状进行三角测量后,映射纹理坐标或设置顶点颜色。