【发布时间】:2011-04-30 12:36:50
【问题描述】:
在 openGL 中,我有一个沿轴缩放 -1 的对象...这会导致对象无法正确渲染,因为所有正面现在都是背面。如果没有禁用剔除,我将如何让这个对象正确渲染?有没有办法在不修改构成我的模型的纹理法线顶点的情况下做到这一点?
【问题讨论】:
在 openGL 中,我有一个沿轴缩放 -1 的对象...这会导致对象无法正确渲染,因为所有正面现在都是背面。如果没有禁用剔除,我将如何让这个对象正确渲染?有没有办法在不修改构成我的模型的纹理法线顶点的情况下做到这一点?
【问题讨论】:
您可以简单地切换剔除模式。您可以使用glCullFace(mode) 来决定应该剔除哪些三角形。提供参数GL_BACK 意味着只渲染正面多边形,而参数 GL_FRONT 意味着只渲染背面多边形。因此,如果您的转换意味着“背面”多边形实际上是正面,则调用 glCullFace(GL_FRONT) 应该可以解决问题。
作为替代方案,您还可以使用glFrontFace(dir) 控制哪些多边形被视为正面/背面,参数为GL_CW(顺时针)或GL_CCW(逆时针)(默认为逆时针,因此如果您将其设置为clocksie原来的背面多边形将被视为正面)。
【讨论】: