我想在一个C+GL游戏中制造一些效果到目前为止,我把我所有的精灵都画成了一个四边形,而且很管用。
然而,我试图使一个大环出现的时候,有一个纹理跟随该环,因为它需要的内存比一个四元与环纹理内。
我要做的环不是一个圆形的GL网格环(“管”型),而是一个“纸”2D环这样我可以修改环的“宽度”,获得比简单的四边形+环纹理更多的效果。
到目前为止,我所有的尝试都是…有点可笑,因为我不太了解GL的坐标(我不能真正理解可用的文档…我只是一个没有编码帮助或背景的设计师基本上是n00b)。

glBegin(GL_POLYGON);
for(i = 0;i < 360; i += 10){
  glTexCoord2f(0, 0);
  glVertex2f(Cos(i)*(H-10),Sin(i)*H);
  glTexCoord2f(0, HP);
  glVertex2f(Sin(i)*(H-10),Cos(i)*(H-10));
  glTexCoord2f(WP, HP);
  glVertex2f(Cos(i)*H,Sin(i)*(H-10));
  glTexCoord2f(WP, 0);
  glVertex2f(Sin(i)*H,Cos(i)*H);
}
glEnd();

这是我最后一次尝试,似乎是从圆圈的右边缘而不是圆环上产生“太阳光”这是一个有趣的效果,但绝对不是我想要的其他的结果包括这个圆圈看起来和四边形纹理完全一样(也就是字面上画一个精灵)或者类似于波普艺术过滤器的东西,通过研究这个思路。
似乎我的逻辑完全是有缺陷的,那么,获得这样一枚戒指最简单的方法是什么无需回复代码,只需一些非数学熟练用户的指导。。。
编辑:我想用另一种方式来表达我的意思,就是一系列相互连接的旋转矩形,形成一个低分辨率的圆环。

最佳答案

所以你想要一个环也就是说,两个圆心相同但半径不同的圆之间的面积我想试试这样的四格条纹:

glBegin(GL_QUAD_STRIP);
for(i = 0; i <= 360; i += 10){
  glTexCoord2f(WP*i/360, 0);
  glVertex2f(Cos(i)*(H-10),Sin(i)*(H-10));
  glTexCoord2f(WP*i/360, HP);
  glVertex2f(Cos(i)*H,Sin(i)*H);
}
glEnd();

每个四边形是环的10度扇形请注意,如果要在一条带中绘制N个四边形,它需要2*(N+1)个点,因此我们总共绘制2*(36+1)=74个点。

关于c - OpenGL-使用纹理绘制2D多边形形状,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2481635/

10-12 16:16