Хотя сделать это с текстурой - действительно более простой выход, если вам нужна реальная форма, вы можете попробовать использовать GLUtesselator из инструментария GLU. Смотрите учебник для этого здесь .
Общее использование состоит в том, что вы создаете объект тесселятора, создаете два контура (внешний и внутренний в обратном направлении), и тесселятор переводит это в чистые команды OpenGL. Конечно, если вам нужна эффективность, вы должны внедрить или найти систему более высокого порядка, которая работает на буферах вершин.