内容简介:最近阳光明媚,天气晴朗,我为了更好地没有了,并且没有任何错误输出。因为似乎坊间传言 Windows 对 OpenGL 的支持很迷,所以我的第一直觉是 GLSL 的兼容问题,不过这个角度似乎很难排查。
最近阳光明媚,天气晴朗,我为了更好地
没有了,并且没有任何错误输出。
因为似乎坊间传言 Windows 对 OpenGL 的支持很迷,所以我的第一直觉是 GLSL 的兼容问题,不过这个角度似乎很难排查。
所以还是搞个最小的可重现问题的代码吧,于是从经典的「三角形」Hello World 开始很快地试了一下,发现在 Shader 里做矩阵乘法就有问题;进而发现只要不乘投影矩阵就没有大问题,至少场景里的东西还是可以显示出来的。
蛤?这是什么鬼?总不见得 glm::perspective
有移植性问题吧?
经过一番调试,终于找到了问题所在,结论让人哭笑不得:
我在代码里自己封装了摄像机类,初始化时需要设置投影矩阵所需的远近裁剪平面,相当于下面这样。
Camera(float far, float near) : far_{far}, near_{near} { /* blah blah */ }
虽然在其它平台没什么问题,但 windows.h
里有这种东西:
#define far #define near
于是代码就相当于变成了
Camera(float, float) : far_{}, near_{} { /* blah blah */ }
把远近裁剪平面的两个变量都初始化成了 0,也难怪场景里什么东西都看不见了。
唉,写代码的时候忘记了 far / near 指针这种历史遗留爆点,不过还是要吐槽下 windows.h
如此暴力的解决方法。
以上,真是有意义的一天呀~
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Linux命令行大全
绍茨 (William E.Shotts) / 郭光伟、郝记生 / 人民邮电出版社 / 2013-3-1 / 69.00元
《Linux命令行大全》主要介绍Linux命令行的使用,循序渐进,深入浅出,引导读者全面掌握命令行的使用方法。 《Linux命令行大全》分为四部分。第一部分开始了对命令行基本语言的学习之旅,包括命令结构、文件系统的导引、命令行的编辑以及关于命令的帮助系统和使用手册。第二部分主要讲述配置文件的编辑,用于计算机操作的命令行控制。第三部分讲述了从命令行开始执行的常规任务。类UNIX操作系统,比如L......一起来看看 《Linux命令行大全》 这本书的介绍吧!