opengl编程天天踩的坑
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 看上去人畜无害、实际上打印的很慢的
opengl编程天天踩的坑的更多相关文章
- 使用CCNode作为容器容易踩的坑
Cocos2dx中CCNode经常作为一个父容器,里面装一些UI控件,最后组成一个复杂的自定义的UI控件,但是在使用别人的自定义控件和自己写自定义问题的时候会踩一些坑. 首先拿到一个自定义的UI控件一 ...
- Spring Data JPA使用findAllOrderBy时踩的坑
Spring Data JPA使用findAllOrderBy时踩的坑 按照以往的编程经验,我的写法是这样的: List<ActivityEntity> findAllOrderByWis ...
- OpenGL编程指南(第七版)
OpenGL编程指南(第七版) 转自:http://blog.csdn.net/w540982016044/article/details/21287645 在接触OpenGL中,配置显得相当麻烦,特 ...
- 编译opengl编程指南第八版示例代码通过
最近在编译opengl编程指南第八版的示例代码,如下 #include <iostream> #include "vgl.h" #include "LoadS ...
- 从零开始学 Java - Spring 支持 CORS 请求踩的坑
谁没掉进过几个大坑 记得好久之前,总能时不时在某个地方看到一些标语,往往都是上面一个伟人的头像,然后不管是不是他说的话,下面总是有看起来很政治正确且没卵用的屁话,我活到目前为止,最令我笑的肚子痛得是下 ...
- 在 Mac OS X Yosemite 10.10.5 上配置 OpenGL 编程环境
这个教程主要参考了youtube上的视频 Getting Started in OpenGL with GLFW/GLEW in Xcode 6 ,这个视频有点问题,不能照搬.本人通过自己摸(瞎)索( ...
- 用MFC实现OpenGL编程
一.OpenGL简介 众所周知,OpenGL原先是Silicon Graphics Incorporated(SGI公司)在他们的图形工作站上开发高质量图像的接口.但最近几年它成为一个非常优秀的开放式 ...
- webuploader插件,我踩得坑
我在目前的公司做的项目要么是原生写法去做项目,要么就是vue+webpack做项目,但是vue这部分只是用了模板template,vue其他的都没用. 有一个项目需要做上传图片的功能,老大扔给我一个插 ...
- 谈谈调用腾讯云【OCR-通用印刷体识别】Api踩的坑
一.写在前面 最近做项目需要用到识别图片中文字的功能,本来用的Tesseract这个写的,不过效果不是很理想. 随后上网搜了一下OCR接口,就准备使用腾讯云.百度的OCR接口试一下效果.不过这个腾讯云 ...
- Asp.Net Core中使用Swagger,你不得不踩的坑
很久不来写blog了,换了新工作后很累,很忙.每天常态化加班到21点,偶尔还会到凌晨,加班很累,但这段时间,也确实学到了不少知识,今天这篇文章和大家分享一下:Asp.Net Core中使用Swagge ...
随机推荐
- IntelliJ IDEA修改系统缓存目录
IntelliJ IDEA修改系统缓存目录 博客分类: intellij IDEA使用 IntelliJ IDEAIDEA缓存 阅读更多 intellij IDEA在第一次启动时,会在${user. ...
- R7-3 汉诺(Hanoi)塔问题
R7-3 汉诺(Hanoi)塔问题 分数 20 全屏浏览题目 切换布局 作者 张高燕 单位 浙大城市学院 古代某寺庙中有一个梵塔,塔内有3个座A.B和C,座A上放着64个大小不等的盘,其中大盘在下,小 ...
- Jquery 如何替换html字符串中标签属性值 ??
如何利用JQuery 替换HTML字符串中的属性值呢? 如 html 字符串有很多 img标签,现在需要修改 img的src值 var html="<div style="t ...
- JAVA仓库管理系统(附源码+调试)
JAVA仓库管理系统--三只松鼠仓库管理系统功能描述(1)登录模块:登录信息等存储在数据库中(2)基本档案管理模块:供货商管理,销售商管理,货品档案管理,仓库管理(3)采购订货模块:用户可以通过查询条 ...
- Ingress限流
先说结论: ingress节点数量=n0 ingress限流配置 nginx.ingress.kubernetes.io/limit-rps: "n1" nginx.ingre ...
- db2iupgrade / db2ckupgrade failure due to SQL0551N
db2iupgrade / db2ckupgrade failure due to SQL0551N Troubleshooting Problem db2iupgrade or db2ckupgra ...
- CSS 属性大全
css常用标签大全 一.字体属性:(font) 大小 font-size: x-large;(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 样式 font-s ...
- vuex记录
vuex就是vue中管理状态的地方,控制着组件之间的数据: 5大核心,通常只要有state和mutation就能满足vuex最基本的需求 1.state 项目存放各种状态的地方 2.mutation ...
- 用find和xargs处理文件名中带空格的文件
我们经常用find和xargs来进行批处理文件. 常见的用法如:find ./ -name ".jpg" | xargs cp -t ./JPEGImages ,实现将当前目前下所 ...
- 开发谷歌插件--web3钱包(一)
之前开发了一款谷歌插件,因为很简单没有什么好记录的. 这次记录下一款新的钱包功能的插件,其中遇到的问题,以及解决方案. 首先遇到的问题就是唤醒: 小狐狸钱包应该都用过,点击图标就会唤起登录页面(pop ...