【问题标题】:Best way to draw a circle with OpenGL ES 2.0 / cocos2d 2.0?用 OpenGL ES 2.0 / cocos2d 2.0 画圆的最佳方法?
【发布时间】:2012-01-21 12:45:56
【问题描述】:

使用 OpenGL ES 2.0 绘制圆的最佳方法是什么?

我正在使用 cocos2d 2.0(当前为测试版)开发一个 iPad/iPhone 项目,该项目使用 OpenGL ES 2.0 和着色器而不是 OpenGL ES 1.0。

在我以前的项目中,我使用了 SneakyInput 包中包含的方便的类 ColoredCircleSprite。但是现在使用 OpenGL ES 2.0,该代码不再工作了,老实说,我在从头开始编写自己的解决方案时有点迷失了。我需要一个绘制平滑圆圈的 CCSprite 子类。 (也许有一点阴影着色器......)

我应该在顶点着色器中构建一个矩形,然后在片段着色器中丢弃圆半径之外的每个像素吗?还是应该在顶点着色器中构建圆形顶点?

网上有没有关于这个主题的好教程?作为 OpenGL-n00b,我将不胜感激!

【问题讨论】:

    标签: ios cocos2d-iphone glsl opengl-es-2.0 shader


    【解决方案1】:

    使用ccDrawCircle:

    ccDrawCircle(CGPoint center, float radius, float angle, 
                 NSUInteger segments, BOOL drawLineToCenter);
    

    增加段数以使圆更平滑。如果你想从代码中学习,可以看看 CCDrawingPrimitives.h 中 ccDrawCircle 的实现。

    【讨论】:

    • 谢谢,但是:这个方法已经存在于 cocos2d 1.0 中。它真的针对 OpenGL ES 2.0 进行了优化吗?它使用着色器吗?
    • 这些方法并没有真正“优化”,它们可能不支持 cocos2d 2.0 中的着色器。它们主要用于绘制调试信息。
    • drawCircle 连圆都画不出来
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多