代码之家  ›  专栏  ›  技术社区  ›  ScootyPuff

如何用OpenGL绘制反走样圆

  •  1
  • ScootyPuff  · 技术社区  · 14 年前

    据我所知,在opengles中画一个简单的圆有三种主要方法,就像iPhone提供的那样。它们都基于一个简单的算法(VBO版本如下)。

    void circleBufferData(GLenum target, float radius, GLsizei count, GLenum usage) {
      const int segments = count - 2;
    
      const float coefficient = 2.0f * (float) M_PI / segments;
    
      float *vertices = new float[2 * (segments + 2)];
    
      vertices[0] = 0;
      vertices[1] = 0;
      for (int i = 0; i <= segments; ++i) {
        float radians = i * coefficient;
        float j = radius * cosf(radians);
        float k = radius * sinf(radians);
        vertices[(i + 1) * 2] = j;
        vertices[(i + 1) * 2 + 1] = k;
      }
    
      glBufferData(target, sizeof(float) * 2 * (segments + 2), vertices, usage);
      glVertexPointer(2, GL_FLOAT, 0, 0);
    
      delete[] vertices;
    }
    

    1 回复  |  直到 14 年前
        1
  •  1
  •   svth    14 年前

    iOS OpenGL ES推进中的抗锯齿功能受到严重限制。您将无法使用传统方法绘制抗锯齿圆。

    http://sveinbjorn.org/drawing_antialiased_circles_opengl_iphone