1. VBO 的 target 是 GL_ARRAY_BUFFER
不是 GL_VERTEX_BUFFER
2. glUniform()用来给uniform传变量
别用成 glProgramUniform()
3. 下载个 vs2019 的 glsl 高亮插件!就在vs的扩展里能搜到!不然太痛苦了!
4. 用 glEnableVertexAttribArray() 而不是用 glEnableVertexArrayAttrib()
opengl API发明人脑子不知道咋长的、起这么多混乱而没什么意义的名字
5. 用 glBufferData() 配合 glBufferSubData() 可以实现把同类型的数据连续排布起来的效果!十分实用!
而 learn opengl 教程里往往都是交错排布的数据、不灵活、而且用 VertexAttribPointer指定时更容易出错!
6. 一定要复用前面写过的代码、shader、封装好的类、程序框架、每次做新的功能都应该从半途开始做
如果次次都从头写起那人会疯的、这样还不如用引擎
7. std::vector 在内存不是连续的!而是稳定占16个byte!
千万不能在 glBufferData() 传数据的时候直接传个vector进去、那样必错!
这个bug卡了我两个小时。
正确做法是用std::copy把vector的内容复制到一个数组里
(其实准备数据的时候用原生数组能省去这一步,但关键是很容易越界。有时候为了方便还是借用一下vector)
8. 没事不要在控制台打印大批量数据、这样会阻塞程序!std::cout 看上去人畜无害、实际上打印的很慢的