我已经实现了绳索,其中我使用 Revolute 关节连接动态 b2bodied,现在我成功创建了这条绳索,但我的绳索看起来不光滑,我希望它们像丝带一样光滑。任何对此有想法的人!我发现它可以通过 openGLES 使用抗锯齿来实现,但仍然不知道到底如何实现这一点..任何类型的帮助将不胜感激。
我的绳子是多边形动态体,这样
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position = currentPos;
b2PolygonShape polygonShape;
polygonShape.SetAsBox(linkWidth,linkHeight);
b2FixtureDef fixtureDef;
fixtureDef.density =20.0;
fixtureDef.shape = &polygonShape;
b2Body* link = world->CreateBody( &bodyDef );
link->CreateFixture( &fixtureDef );
旋转关节:
b2RevoluteJointDef revoluteJointDef;
revoluteJointDef.localAnchorA.Set( 0, linkHeight);
revoluteJointDef.localAnchorB.Set( 0, -linkHeight);
revoluteJointDef.bodyA = link;
revoluteJointDef.bodyB = lastLink;
world->CreateJoint( &revoluteJointDef );
请帮忙 。
我希望我的绳索更平滑,就像最右边的图片一样
my output looks like this
如果您想消除纹理的边缘,则必须启用多重采样。多重采样将作用于整个屏幕,启用它会带来性能损失,在旧设备(iPhone 3GS)上最严重。
找到AppDelegate中实例化CCGLView的行,启用多重采样,并将采样数设置为2或4。
CCGLView *glView = [CCGLView viewWithFrame:[window bounds]
pixelFormat:kEAGLColorFormatRGBA8 // <-- use whichever is your default
depthFormat:GL_DEPTH_COMPONENT24_OES // <-- use whichever is your default
preserveBackbuffer:NO
sharegroup:nil
multiSampling:YES // <-- enable
numberOfSamples:4]; // <-- set to 2 or 4
要记住一件事:在视网膜设备上,您将看不到锯齿状边缘由于显示器的分辨率很高。在 2D 应用程序中的 Retina 设备上进行多重采样可能会浪费性能,并且很难提高图像质量。这给你留下了另一个选择:考虑只支持 Retina 设备,或者干脆忽略非 Retina 设备上存在的问题,因为它们无论如何都会消失。
顺便说一句,CCTexture2D 锯齿和抗锯齿方法的命名很混乱,它们不执行全屏或纹理边缘锯齿或抗锯齿。它们在线性(“抗锯齿”,模糊)和最近(“锯齿”,无过滤)之间更改纹理的过滤模式。
其效果是纹理内的像素要么被线性过滤,从而单个像素颜色逐渐改变,而最近过滤不执行此类过滤。像素艺术和图块地图图块集纹理最常需要最近过滤。两者仅更改纹理像素的过滤模式,而不更改其边缘。为此,您需要多重采样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)