我遇到了一个关于视差法线贴图的严重问题,我不知道是什么问题。
(OpenGL 2.0、C++、WinXP)
我的结果:
(绿色是法线,蓝色是切线,红色是双法线(双切线))
法线贴图工作正常,所以我假设切线 vector 很好。 奇怪的是,在立方体的某些墙壁上,视差映射是正确完成的,而在其他墙壁上则不是。 我确定我的 GLSL 代码没问题,因为我是从 http://www.dhpoware.com/demos/index.html 复制的 您可以在其中找到有效的视差法线贴图演示 - 它也适用于我的计算机。
我还尝试了 2 种方法来计算切线 vector ,所以这应该不是问题。 我尝试从 DisplayList 切换到 VBO,反之,它给出了相同的结果,因此切线可能已正确传输(我什至尝试将其作为 gl_Color 传输)。
高度贴图加载正确,我尝试将其设置为漫反射贴图,看起来没问题。
glGetError() 给我没有错误,着色器编译日志也是如此。
当然,我检查了九千多次纹理坐标。
迷之...我都不知道代码分析的是哪一部分,大家有什么建议吗?
最佳答案
疯狂猜测
我敢打赌要么是切线基( vector )问题,要么是 View vector 在错误的坐标空间中被转换/考虑。
没有更多的信息,我很难说更多...
问题的一些源代码或动画会有所帮助。
关于c++ - Opengl 中的视差法线贴图问题,GLSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4728555/