gpt4 book ai didi

c++ - 没有光照计算时我应该忽略顶点法线吗?

转载 作者:行者123 更新时间:2023-11-28 02:46:07 26 4
gpt4 key购买 nike

我有一个不使用任何类型的光照或阴影的 openGL 程序;阴影的幻觉完全是通过纹理完成的,因为网格是低多边形的。人脸没有被剔除,当然我也不会使用法线贴图。

我的问题是,我是否应该定义顶点法线?排除它们会使用更少的资源并加快渲染速度,还是会以某种方式对性能/视觉效果产生负面影响?

最佳答案

My question is, should I define the vertex normals anyway?

没有必要,如果他们不使用。

Would excluding them use fewer resources and speed rendering, or would excluding them negatively impact the performance/visuals in some way?

如果不使用,绝对不会影响视觉效果。

您没有提及您使用的是旧的固定功能流水线还是现代可编程流水线。在旧的固定功能管道中,法线用于照明计算。与面部剔除无关。正面/背面仅由屏幕空间中的原始缠绕顺序决定。

如果您使用可编程管线,法线将用于您使用它们的任何地方。 GL 本身根本不会关心它。

因此排除它们应该会减少存储对象所需的内存。 rendereing 是否真的变得更快很难预测。如果不使用法线,则甚至不应该获取法线,无论是否提供法线。但是缓存也会在这里产生影响,因此不获取它们的改进可能根本不会引人注意。

仅当您使用立即模式(glBegin()/glEnd())来指定几何(您永远不应该这样做)时,排除法线将为每个顶点节省一个 gl 函数调用,这应该会带来显着的改进(但仍然比使用顶点数组慢几个数量级)。

关于c++ - 没有光照计算时我应该忽略顶点法线吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24352787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com