OpenGL踩坑总结1----入门篇

  • 该系列第一篇文章,做简短的介绍吧:我大概是19年11月开始开的这个坑,参考LearnOpenGL系列教程去学习的,不得不说这是一部良心教程,不少视频教程教OpenGL的几乎都是参照LearnOpenGL做的,视频好懂但内容都不全面,很多只教LearnOpenGL入门篇就没有下文了,还是啃文章才能学到真东西啊。然而文章是死的,人是活的。鉴于OpenGL的库代码过于底层,很多东西不封装就要写很多重复代码,很费劲,所以我的代码仓库里面有针对一些重复模块的封装,而且还把开发环境集成在仓库里,这样,不论任何一台windows电脑,只要有vs2017,不需要配置任何东西就能跑通仓库里现有的代码。言归正传,以下是坑:

1. 配置环境的小技巧

  • 对于刚入门的人来说,最痛苦的莫过于搭建环境,这里推荐一个vs2017好用的东西,叫"项目属性表(.prop)"文件,在"属性管理器"点击右键任意文件夹可以创建属性表,在项目文件夹里面可以找到它,然后设置属性表的各种库文件和头文件目录(如何设置自行百度),保存,然后将这个自定义的属性表单独拿出放在自己觉得特殊的目录里。
    图片说明 图片说明 图片说明
  • 这样做的好处是,当创建新的项目时,看项目运行平台是什么,如果是debug|x86平台,就在"Debug|Win32"文件夹右键添加这张自定义的属性表,其他平台同理。这样做不仅省去每次创建项目就配置环境的麻烦,更重要的是,你在其他机器运行你现有的的代码时,只要这张属性表还在,那就不用再配置环境了。
    图片说明

2. OpenGL函数库头文件顺序

  • OpenGL函数库的头文件顺序是需要注意的,图片是正确头文件顺序

    如果顺序反了会运行会报错......原因不明,希望知道的大佬可以指点迷津

3. 不要随意使用glDeleteXXX函数

  • 一些(unsigned int)类型的所谓"顶点数组对象(VAO)"、"顶点缓冲对象(VBO)"、"纹理对象"等等,可以理解为id号,或者指针,当调用glDeleteXXX函数的时候就相当于抹去了它所指向的内存空间,所以必须确认这些对象不被使用的时候,才调用glDeleteXXX函数去回收。不然就会出现模型消失或贴图变黑的情况。

4. 纹理的坑

  • 单个纹理的情况下,它的采样器(sampler=0)与纹理单元(GL_TEXTURE0)是有默认值的,不用手动设置,在多纹理的情况下则需要激活纹理单元(glActiveTexure),并设置采样器(shader.setInt("sampler",value))。
  • 纹理采样器为空的情况下,glsl的纹理采样函数(texture)会采样失败,而且这种失败是无法检测到,只能通过在外部传入一个bool值到着色器,以此来判断采样器是否为空。
全部评论

相关推荐

高斯林的信徒:问你有没有保底,好人啊,就差把这是kpi面告诉你了
点赞 评论 收藏
分享
牛客10001:问就是六个月,全国可飞,给钱就干
点赞 评论 收藏
分享
已oc 云智断更了好几天,也有一些话想说,继续更新一篇云智timeline 4.18 一面 半个小时后约二面 4.21二面 当晚 约hr面 4.23hr面 4.30 发offer之前美团的二面挂了,进入人才库,后面又被捞起来面试,4.30号 美团又一面,现在还没出一面结果感觉也不报什么希望,就算一面过了,还有二面,我经不起深入拷打,唉,真的,好难五一躺平了五天,吃吃玩玩睡睡~还要担心毕业,科研更是难,唉暑期可能就到此为止了,后面没有时间在这个上面了,要抓紧时间做科研,为了后面能出去实习。大厂,秋招再见!!!有一些感慨:4.1是我的第一次面试,美团,面试的时候紧张到浑身发...
daisy9542:我今晚也是美团一面,已经第六次了。我也面了其他的,没拿到 offer。但我想开了,要按照自己的节奏来,找暑期转正然后秋招大杀四方并不是唯一的出路,其实还有很多选择的,有 0 实习最后秋招拿 offer 了,也有不选择互联网去国企的外企的,考编的,创业的。现在的失败不代表以后的路都是黑暗的,只不过可能运气还没降临到头上。所以现在要做的,就是放平心态,提升自己,通过面试了解到自己的优点和不足,争取下次机会来了能好好抓住
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务