Texture showing a circle made using GL_POLYGON

I am trying to map a texture to a circle using GL_POLYGON with this code:

 void drawCircleOutline(Circle c, int textureindex) { float angle, radian, x, y; // values needed by drawCircleOutline glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, textureLib[textureindex]); glBegin(GL_POLYGON); for (angle=0.0; angle<360.0; angle+=2.0) { radian = angle * (pi/180.0f); x = (float)cos(radian) * cr + c.pos.x; y = (float)sin(radian) * cr + c.pos.y; glTexCoord2f(x, y); glVertex2f(x, y); } glEnd(); glDisable(GL_TEXTURE_2D); } 

It looks like at startup.

img1

And it should look like this:

img2

+6
source share
1 answer

Try:

 radian = angle * (pi/180.0f); xcos = (float)cos(radian); ysin = (float)sin(radian); x = xcos * cr + c.pos.x; y = ysin * cr + c.pos.y; tx = xcos * 0.5 + 0.5; ty = ysin * 0.5 + 0.5; glTexCoord2f(tx, ty); glVertex2f(x, y); 
+7
source

Source: https://habr.com/ru/post/905342/


All Articles