我需要用OpenGL创建椭圆.我发现做到这一点的最简单的方法是使用一个GLUquadric用gluDisk(...)
,其产生一个圆盘,随着 glScale(...)
打开盘插入椭圆形.这种方法唯一明显的问题是,gluDisk
一旦glScale
被调用,生成的法向量将停止归一化.
这会以任何方式影响照明吗?在这种情况下,OpenGL定义的行为是什么?向量是否自动重新规范化,行为是否未定义,还是其他的?
这将对照明产生(坏)影响.预期法线向量的长度为1,如果不是,则照明可能比预期更强/更弱.依赖于点积和正常值的值显然是不正确的.简而言之,要么确保手动规范化法线,要么使用GL_NORMALIZE.除非使用GL_NORMALIZE,否则OpenGL将假设您提供的法线已经标准化.如果它们没有标准化,则不会出现"错误".如果您决定使用GL_NORMALIZE,那么每帧将有额外的计算成本.如果性能成为一个问题,请小心谨慎.无论如何,使用GL_NORMALIZE可能正是您正在寻找的.
归档时间: |
|
查看次数: |
622 次 |
最近记录: |