我正在尝试使用OpenGL绘制一个Ellipse并将纹理映射到它。我不想使用glBegin(...)或glVertex4f,因为它们已被弃用。我得到了椭圆来显示纹理,但只有当我使用GL_LINE_LOOP时。这不允许我用纹理填充椭圆。我曾尝试使用GL_TRIANGLE_STRIP,希望这会填充Ellipse,但似乎不会渲染任何东西。
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的弃用示例。
答案 0 :(得分:0)
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);
小语言提示:"ellipsis"≠"ellipse"