zoukankan      html  css  js  c++  java
  • 用一个土办法证明RedBook的错误

    根据RedBook的解释,在自动纹理坐标生成中,GL_OBJECT_LINEAR模式不需要使用模型视图矩阵,GL_EYE_LINEAR模式需要使用模型视图矩阵。那么我们可以做一系列试验验证上述结论:

    1 使用GL_EYE_LINEAR模式生成纹理坐标。设置模型视图矩阵与投影矩阵,让OGL用固定渲染管线进行坐标变换。
    试验结果:程序结果正常,纹理坐标同眼坐标相关,随眼坐标的变化而变化。

    2 使用GL_EYE_LINEAR模式生成纹理坐标。将模型视图矩阵置为单位矩阵,自己进行模型视图变换,仅让OGL在固定管线中做投影变换。
    试验结果:程序结果正常。

    3 使用GL_OBJECT_LINEAR模式生成纹理坐标。设置模型视图矩阵与投影矩阵,让OGL用固定渲染管线进行坐标变换。
    试验结果:程序结果正常,纹理坐标用物体坐标相关,不随眼坐标的变化而变化。

    4 使用GL_OBJECT_LINEAR模式生成纹理坐标。将模型视图矩阵置为单位矩阵,自己进行模型视图变换,仅让OGL在固定管线中做投影变换。
    试验结果:程序结果异常,效果同GL_EYE_LINEAR模式。

    结论:GL_EYE_LINEAR模式不需要使用模型视图矩阵;GL_OBJECT_LINEAR模式需要使用模型视图矩阵。

    另外,如果我们假设RedBook确实弄反了,那么GL_OBJECT_LINEAR模式下的自动纹理坐标生成的公式就是:
    T = (P * M-1) * VT;
    在试验4中我们将模型视图矩阵设置为单位矩阵,那么就又有:
    T = (P * M-1) * VT = P * VT;
    结果同GL_EYE_LINEAR模式。这和我们实际观察到的结果相同。

    也许RedBook真的错了。

  • 相关阅读:
    API文档大集合
    jenkins 构建 job 并获取其状态的实现
    jenkins 插件乱码处理与文件上传
    更优雅的配置:docker/运维/业务中的环境变量
    部署仓库中 nginx 下游依赖配置改进
    dotnet core 在 MIPS64 下的移值进度:EA 版本已经发布
    tmux 编译安装过程
    各数据源的时间/日期的提取能力对比
    关于若干性能指标的阐述
    为缓存、外部接口调用添加超时处理
  • 原文地址:https://www.cnblogs.com/Pointer/p/81345.html
Copyright © 2011-2022 走看看