Also Like

📁 last Posts

Types of triangles in OpenGL

1️⃣ GL_TRIANGLES

Each 3 vertices form an independent triangle.

glBegin(GL_TRIANGLES);
  • Every 3 points → one separate triangle.

  • No shared edges between triangles.

  • Example: 6 points → forms 2 separate triangles: (1,2,3) and (4,5,6).


2️⃣ GL_TRIANGLE_STRIP

Triangles share vertices to form a connected strip.

glBegin(GL_TRIANGLE_STRIP);
  • First 3 points → first triangle.

  • Every new vertex after that → new triangle using the last 2 vertices + the new one.

  • Creates a "strip" of connected triangles.

Example:
Points: 1, 2, 3, 4, 5 → triangles: (1,2,3), (2,3,4), (3,4,5)


3️⃣ GL_TRIANGLE_FAN

Triangles share one central vertex, forming a fan-like shape.

glBegin(GL_TRIANGLE_FAN);
  • The first vertex → center.

  • Each next vertex creates a new triangle using the center + previous vertex.

  • Perfect for circular shapes or radial patterns.

Example:
Points: C(center), A, B, D, E → triangles: (C,A,B), (C,B,D), (C,D,E)

This is exactly what we used in the circle example earlier — ideal for drawing disks or circular fans.


Code


#include <GL/glut.h>

void SetupRC() {
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
    glColor3f(0.0f, 0.0f, 0.0f);
    glLineWidth(20);
    glPointSize(20);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    gluOrtho2D(-500.0, 500.0, -500.0, 500.0);
}

void RenderScene() {
    glClear(GL_COLOR_BUFFER_BIT);


    //glBegin(GL_TRIANGLES);

    /*glVertex2f(-300, 0);
    glVertex2f(0, 300);
    glVertex2f(300, 0);


    glVertex2f(0, -400);
    glVertex2f(300, -100);
    glVertex2f(-300, -100);*/



    //glBegin(GL_TRIANGLE_STRIP);
    //glVertex2f(-300, 0);
    //glVertex2f(0, 300);
    //glVertex2f(300, 0);
    //glVertex2f(-200, -200);
    //glVertex2f(500, -500);


    glBegin(GL_TRIANGLE_FAN);
    glVertex2f(0, 0);
    glVertex2f(300, 0);
    glVertex2f(0, 300);
    glVertex2f(-300, 300);
    glVertex2f(-400, -400);




    glEnd();





    glFlush();
}

int main(int argc, char** argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(500, 500);
    glutCreateWindow("GL");

    SetupRC();
    glutDisplayFunc(RenderScene);
    glutMainLoop();
    return 0;
}
Comments