使用 OpenGLES 抗锯齿去除绳索的锯齿状边缘

2023-12-15

我已经实现了绳索,其中我使用 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 );

请帮忙 。

我希望我的绳索更平滑,就像最右边的图片一样

Figure 1 Figure 2

my output looks like this enter image description here


如果您想消除纹理的边缘,则必须启用多重采样。多重采样将作用于整个屏幕,启用它会带来性能损失,在旧设备(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(使用前将#替换为@)

使用 OpenGLES 抗锯齿去除绳索的锯齿状边缘 的相关文章

  • 模拟 Push Segue 的自定义 Segue 将 VC 变成僵尸

    使事情简短明了 我写了一个自定义的segue void perform UIView preV UIViewController self sourceViewController view UIView newV UIViewContro
  • 如何在 iPhone 上获取移动国家/地区和网络代码

    有什么方法可以在 iPhone 上获取 mnc 和 mcc 号码吗 您需要 CoreTelephony 框架 CTTelephonyNetworkInfo networkInfo CTTelephonyNetworkInfo alloc i
  • Objective-C 2.0中的多线程问题

    我有我的主应用程序委托 其中包含一个返回对象的方法 该应用程序委托在主线程上运行 我还有一个在不同线程上运行的 NSOperation 除了希望有时能够在主线程上调用我的应用程序委托方法之外 我还需要从 NSOperation 线程中调用它
  • 使用NSString的drawAtPoint方法代替CGContextShowGlyphsAtPoint问题

    在我的应用程序中 我试图沿着路径渲染文本 这对于大多数字符来说都很好 但对于日语 或任何非 Mac Roman 就不行了 建议我使用 NSString drawAtPoint 它在我的 CATiledLayer 中显示正确的字符 然而 它们
  • 更新表格视图图像子视图中的图像的最佳方法是什么?

    具体来说 如何从 uitableview 单元格中获取图像子视图 我的表视图从网络异步获取数据 当我第一次创建图像视图时 我通过以下方式添加了视图 imageView setImage image cell addSubview image
  • iTunes connect 不允许输入多行描述

    我刚刚向 App Store 提交了我的第一个应用程序 但 iTunes Connect 中的描述字段存在问题 它不允许我输入多行值 我已经尝试了一切 从不同的编辑器复制粘贴 手动输入等 如果有一行 例如 Hello world 则保存成功
  • cllocation 和 mkreversegeocoder

    我尝试使用 cllocation 和 mkreversegeocoder 检索城市名称 在我的 viewdidload 方法中 我是 cllocationmanager self locManager CLLocationManager a
  • 在 iphone safari 浏览器中禁用浏览或选择文件按钮

    我想知道为什么select file or choose file在 iphone safari 中查看网页时 该按钮被禁用 谁能告诉我为什么会发生这种情况有什么方法可以启用它吗 谢谢 因为您无法从 iPhone 上传文件
  • iPhone 操作系统测试最佳实践

    不久前 iPhone 的开发还相当简单 只有几个操作系统版本 甚至更少的设备 然而现在 有 2 个主要操作系统版本和 5 种不同的设备需要考虑 作为一家即将发布多个应用程序的公司 测试已成为越来越重要的问题 测试所有组合的最佳方法是什么 我
  • 将蒙版图像作为 PNG 文件写入磁盘

    基本上 我从网络服务器下载图像 然后将它们缓存到磁盘上 但在这样做之前 我想屏蔽它们 我正在使用每个人似乎都指出的屏蔽代码 可以在这里找到 http iosdevelopertips com cocoa how to mask an ima
  • iPhone开发-从用户位置定位地址

    是否可以使用CoreLocation框架获取用户当前所在的街道 区域 那么 如果我获取用户的经度和纬度位置 我可以从该位置获取地址 xx 街道 yy 城市 z 州 吗 Thanks 之前已经有人提出过这个问题了 刚刚发现获取纬度 经度对的街
  • GameKit 蓝牙传输问题

    我正在尝试使用 GameKit 框架通过蓝牙发送文件 我遇到的问题是我一次只能发送一个 NSData 对象 但我需要将其保存在另一端 如果不知道文件名 这显然是不可能的 但我不知道如何传输它 我尝试将其转换为字符串NSData data N
  • iPhone - 如何设置 uinavigationbar 高度?

    我想让导航视图的顶部小一点 你将如何实现这一目标 这是我到目前为止所尝试过的 但正如你所看到的 即使我使导航栏变小 它曾经占据的区域仍然存在 黑色 window addSubview navigationController view na
  • 如何在 iOS 中以编程方式在 UITableViewCells 中添加图像

    我需要添加不同的图像UITableViewCells以编程方式 我怎样才能做到这一点 我正在尝试一些代码 但图像不显示在UITableViewCells 这是我下面的代码 void viewDidLoad arrImages NSMutab
  • “找不到开发者磁盘映像”

    最近我收到错误 找不到开发人员磁盘映像 我认为自从我将 iPhone 上的 iOS 更新到 9 1 后就会发生这种情况 如何解决该问题并使 Xcode 支持 iOS 9 1 设 备 Xcode 7 0 1 和 iOS 9 1 不兼容 您需要
  • iPhone 录音时不振动

    我正在修改 AurioTouch 示例 我想振动手机以响应特定的声音输入 我可以检测输入并printf他们 但是AudioServicesPlaySystemSound kSystemSoundID Vibrate 会话期间不执行任何操作k
  • iPhone – 类似 Photoshop 的效果

    我可以在 iPhone 中制作乘法 屏幕 颜色或其他类似 Photoshop 的效果吗 Check 石英演示 http developer apple com iphone library samplecode QuartzDemo ind
  • initWithFrame 与 initWithStyle

    我想从已弃用的 TableView 中更新initWithFrame reuseIdentifier 我的表格视图使用自定义单元格 到处都说要使用initWithStyle 并且它不会以任何方式改变行为或细胞initWithFrame CG
  • “UITableViewCell 附件复选标记”是图像吗?

    我需要定义一个自定义UITableViewCell哪里的UITableViewCellAccessoryCheckmark位于 a 的左侧UILabel 我应该将其定义为图像还是有更聪明的方法 非常感谢 卡洛斯 这只是一个关于苹果文档 ht
  • iOS Javascript 引擎 parseFloat(1) 返回负数

    这段代码将使错误出现 function causeBug d var k var n parseFloat 1 var c Math abs d if n lt 0 k else k return k n function for var

随机推荐