c - 过剩闪电在 GL_TRIANGLES 上不起作用

标签 c glut

我遇到了闪电问题。闪电适用于:

//...
gluSphere(qobj, r1, precision, precision);
//...

但它不起作用:

//...
glBegin(GL_TRIANGLES);
glColor3fv(colors[4]);
glVertex3fv(vertices[triangles[fig2][1]]);
glVertex3fv(vertices[triangles[fig2][2]]);
glVertex3fv(vertices[triangles[fig2][3]]);
glEnd();
//...

它的外观如下:

img http://img72.imageshack.us/img72/2158/36156234.jpg

正如您所看到的,只有“gluSphere”变亮了。如何在 GL_TRIANGLES 和 GL_POLYGON 上制作相同的闪电?

最佳答案

照明引擎需要知道多边形面向哪个方向。 OpenGL 不需要自己计算这些信息,而是要求您通过法线提供此信息:

//...
glBegin(GL_TRIANGLES);
glColor3fv(colors[4]);
// put a call to glNormal3fv or glNormal3f here!
glVertex3fv(vertices[triangles[fig2][1]]);
glVertex3fv(vertices[triangles[fig2][2]]);
glVertex3fv(vertices[triangles[fig2][3]]);
glEnd();
//...

关于c - 过剩闪电在 GL_TRIANGLES 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14480147/

相关文章:

c - 在OpenGL中变换后获取顶点?

c++ - OpenGL - 透视问题

java - SML、Java、C、Pascal 中的垃圾收集

c - 在 8 位中编码 3 个 base-6 数字以提高解包性能

c - 卡在有关数组和移动数字的代码上

c - void put_page(struct page *page) 在 Linux 中的用法

c++ - 递归函数返回意外结果

c++ - 过剩库中缺少 glutInitContextVersion()

c++ - 退出 glutFullScreen()

xcode - 过剩和界面生成器