【问题标题】:Make OpenGL Polygon Edges Smooth使 OpenGL 多边形边缘平滑
【发布时间】:2015-01-14 22:52:38
【问题描述】:

由于带有纹理的矩形多边形倾斜,它的边缘变得锋利。但内边缘(内切部分)仍然光滑。

纹理已启用抗锯齿。

glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );    

看起来抗锯齿仅在多边形边界内起作用,但在边缘上不起作用。 是否可以在边缘启用抗锯齿,使它们看起来像图片中的内边缘一样平滑? 使用 Cocos2d-x v3.3。

【问题讨论】:

  • 快速解决方法:为纹理添加 1px 边框,背景颜色/透明。
  • 但是如果我使用部分现有纹理。是否需要将此部分复制到具有 1 px 额外尺寸的更大纹理?
  • 一个选项是启用 MSAA(多采样抗锯齿)。不确定您使用的工具是如何完成的。我在这里写了一个问题的答案,解释了 Android 上的 OpenGL ES:stackoverflow.com/q/27035893/3530129。
  • MSAA 有帮助。谢谢!它并不完美,但看起来更好。

标签: opengl-es opengl-es-2.0 cocos2d-x cocos2d-x-3.0


【解决方案1】:

启用多重采样使边缘更加平滑。这不是完美的解决方案,但在视网膜显示器上看起来不错。本例中的采样数 2 或 9 几乎没有区别。

这里是如何在 Cocos2d-x 中设置多重采样的代码:

// In AppController.mm  

// Init the CCEAGLView
CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds]
                                     pixelFormat: (NSString*)cocos2d::GLViewImpl::_pixelFormat
                                     depthFormat: cocos2d::GLViewImpl::_depthFormat
                              preserveBackbuffer: NO
                                      sharegroup: nil
                                   multiSampling: YES
                                 numberOfSamples: 2 ];

【讨论】:

    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 2011-10-15
    相关资源
    最近更新 更多