OpenGL绘制圆圈 /椭圆(填充)无GLBEGIN

OpenGL drawing Circle / Ellipse (filled in) without glBegin?

本文关键字:填充 GLBEGIN 椭圆 绘制 OpenGL      更新时间:2023-10-16

我正在尝试使用openGL绘制椭圆形并将纹理映射到它。我不想在不弃用时使用glbegin(...)或glvertex4f。我有椭圆形式显示纹理,但仅当我使用gl_line_loop时。这不允许我用纹理填充椭圆形。我尝试使用gl_triangle_strip,希望这将填充椭圆,但这似乎没有任何东西。

void Ellipse::makeEllipse(float radiusX, float radiusY)
{
  for(int i=0; i < 360; i++)
  {
    float rad = i*DEG2RAD;
    ellipse_vertices[i] = vec4(cos(rad)*radiusX,
               sin(rad)*radiusY,0,1);
   }
}
.
.
.
glDrawArrays (GL_TRIANGLE_STRIP, 0, numEllipsisVertices);

我试图找到解决方案,但是只有使用Glbegin和Glvertex进行了弃用的示例。

gl_triangle_strip可能不是要用于椭圆的绘图模式。但是gl_triangle_fan应该很好地工作。我建议您用中心顶点开始椭圆形,以减轻几何形状:

void Ellipse::makeEllipse(float radiusX, float radiusY)
{
  ellipse_vertices[0] = vec4(0,0,0,1);
  for(int i=1; i < numEllipseVertices; i++)
  {
    float rad = i*DEG2RAD;
    ellipse_vertices[i] = vec4(cos(rad)*radiusX,
               sin(rad)*radiusY,0,1);
   }
}
.
.
.
glDrawArrays (GL_TRIANGLE_STRIP, 0, numEllipseVertices);

小语言提示:"省略号"≠"椭圆"