Mit der Funktion
glOrtho(0, 800, 0, 600, -1, 1);
kannst du den Projektor auf orthografisch setzen. Bei der orthographischen Projektion gibt es keine Tiefe. Das ist notwendig um 2D Objekte zu zeichnen.
#include <GLFW/glfw3.h>
#include <math.h>
void drawCircle(float centerX, float centerY, float radius, int numSegments) {
    glBegin(GL_TRIANGLE_FAN);
    glVertex2f(centerX, centerY); // Mittelpunkt des Kreises
    for (int i = 0; i <= numSegments; i++) {
        float theta = 2.0f * M_PI * float(i) / float(numSegments);
        float x = radius * cosf(theta);
        float y = radius * sinf(theta);
        glVertex2f(x + centerX, y + centerY);
    }
    glEnd();
}
int main() {
    // Initialisiere GLFW
    if (!glfwInit()) {
        return -1;
    }
    // Erstelle ein Fenster
    GLFWwindow* window = glfwCreateWindow(800, 600, "Kreis", NULL, NULL);
    if (!window) {
        glfwTerminate();
        return -1;
    }
    // Setze den aktuellen Kontext auf das erstellte Fenster
    glfwMakeContextCurrent(window);
    
    glOrtho(0, 800, 0, 600, -1, 1); // Setze den orthografischen Projektor
    // Haupt-Render-Schleife
    while (!glfwWindowShouldClose(window)) {
        glClear(GL_COLOR_BUFFER_BIT);
        // Zeichne den Kreis
        glColor3f(1.0f, 1.0f, 1.0f); // Farbe (weiß)
        drawCircle(400, 300, 50, 100);
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    // Beende GLFW
    glfwDestroyWindow(window);
    glfwTerminate();
    return 0;
}