Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ opengl不填充多边形_C++_Opengl - Fatal编程技术网

C++ opengl不填充多边形

C++ opengl不填充多边形,c++,opengl,C++,Opengl,我试图画一个填充圆,但当我画这个时,它只在线框中显示,下面是我用来画的代码: void render_circle(Vec2 position, float radius, Vec4 colour) { glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glColor4f(colour.x, colour.y, colour.z, colour.w); glBegin(GL_LINE_LOOP); int num_segmen

我试图画一个填充圆,但当我画这个时,它只在线框中显示,下面是我用来画的代码:

void render_circle(Vec2 position, float radius, Vec4 colour) {
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
    glColor4f(colour.x, colour.y, colour.z, colour.w);

    glBegin(GL_LINE_LOOP);
    int num_segments = 30; //@todo: make this scale for larger radius
    for(int i = 0; i < num_segments; i++) {
        float theta = 2.0f * math_pi * (float)i / (float)num_segments;
        float x = radius * cosf(theta);
        float y = radius * sinf(theta);
        glVertex2f(position.x + x, position.y + y);
    }
    glEnd();
}
void渲染_圆(Vec2位置、浮动半径、Vec4颜色){
glPolygonMode(GLU前、后、GLU填充);
glColor4f(颜色x、颜色y、颜色z、颜色w);
glBegin(GL_线_环);
int num_segments=30;/@todo:将此比例设置为更大的半径
对于(int i=0;i
GL\u LINE\u LOOP
是一个。如果要绘制填充多边形,则必须使用。例如
GL\u TRINAGLE\u FAN


只能正确地绘制。可能无法由基元正确表示。解决这个问题的一种方法是将凹多边形分割成凸部分。

请尝试
GL\u POLYGON
而不是
GL\u LINE\u LOOP
。当您显式地请求行时,您不能期望从OpenGL中填充内容。;-)