如何绘制带有平面底纹的3d圆柱体 [英] how to draw 3d cylinder with flat shading

查看:93
本文介绍了如何绘制带有平面底纹的3d圆柱体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何绘制带有平面阴影的圆柱体.

I would like to know how to draw a cylinder with flat shading.

这是我到目前为止所做的.

This is what I've done so far.

void drawCylinder(int numMajor, int numMinor, float height, float radius)
{
   double majorStep = height / numMajor;
   double minorStep = 2.0 * M_PI / numMinor;
   int i, j;

   for (i = 0; i < numMajor; ++i) {
   float z0 = 0.5 * height - i * majorStep;
   float z1 = z0 - majorStep;

   glBegin(GL_TRIANGLE_STRIP);
   for (j = 0; j <= numMinor; ++j) {
   double a = j * minorStep;
   float x = radius * cos(a);
   float y = radius * sin(a);
   glNormal3f(x / radius, y / radius, 0.0);
   glTexCoord2f(j / numMinor, i / numMajor);
   glVertex3f(x, y, z0);

   glTexCoord2f(j / numMinor, (i + 1) / numMajor);
   glVertex3f(x, y, z1);
   }
   glEnd();
   }
}

我知道我知道要定义一个法线,但是此法线使我具有平滑的阴影而不是平坦的阴影.我可以在OpenGL和GLUT中弄平它吗?

I understand that I know to define a normal however, this normal gave me smooth shading instead of flat. May I know how can I make it flat in OpenGL and GLUT?

推荐答案

如果您想使用平面阴影,则只需指定它即可.

If you want flat shading, you just need to specify this.

glShadeModel(GL_FLAT);

这篇关于如何绘制带有平面底纹的3d圆柱体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆