摘要:vbo的作用就是简单的把内存数据导到gpu 这些数据的格式(计算机怎么可能知道你传的一堆float怎么解析?)的解释方法用VertexAttribPointer进行说明(说明的是当前处于bind状态的vbo) 这一堆的配置、如果是在 bind了一个vao的情况下完成的、这个vao就默默记录了这些配置
阅读全文
10 2022 档案
摘要:首先拿到一个LearnOpenGL的基本工程(glfw+glad) glad可以说是去在运行时查询函数地址用的: 如果我们想调用 glGenBuffers() 、就要先查出 glGenBuffers的地址(如下图) 为什么要查询地址呢?其实1.1之后的新函数都在驱动中、所以要去查询函数的地址! 参看
阅读全文
摘要:从计算机的功能说起、最基本的就是加减乘除运算、向内存中写数、读数、磁盘操作 第一层 API 可以说是汇编语言、因为如果造硬件的不给别人留接口、那就废了 然后人们用第一层 API 继续封装、封装出更高级的API 一般到了应用层、API 可以指 SpringBoot、Unity 这种框架 程序员想做任何
阅读全文
摘要:和 linux 中的文件描述符一样地去理解、可以用整数去指代 输入输出流、文件、设备 那就同样可以用整数去代表一个VAO、VBO 差不多就是这个原理。 opengl的 workflow、差不多就是: 先 gen 一个整数 bind 这个整数到状态机 设置一些状态 取消 bind、以备后用、此时这个“
阅读全文
摘要:固定流水线 = 立即模式(immediate profile) 可编程模式 = 核心模式(core profile) Opengl 3.2 以后、立即模式(或者说是固定管线)被废弃、意味着glVertex__()这种函数都不应该用了! LearnOpengl 给出的教程是 3.3版本 OpenGL
阅读全文
摘要:1 : glad + glfw 需要glad的h文件、c文件(这个没有 dll 或者 lib! 需要glfw的h文件、lib文件、(如果是用的glfw3.lib、那么不需要dll文件、否则用glfw3dll.lib 需要配合dll) 2: glew+glfw 需要glew的h文件、lib、dll文件
阅读全文
摘要:链接:https://pan.baidu.com/s/1npPIlNkfnCjBqRSxMbexdw 提取码:fbd2 --来自百度网盘超级会员V4的分享
阅读全文
摘要:0. 计算机里什么东西是最稳定不过时的? 只要冯诺依曼体系存在一天、那么可以说: 1) 汇编语言和机器语言的执行原理差不多是不变的、只可能有语法上的不同、但程序的执行就是寄存器、内存、加法器这些设备来回倒腾数据 2) 数据结构和算法是不变的、基本上再过20年都还是链表、树、图这些东西、因为现实世界里
阅读全文
摘要:关键的向量运算:求两个点连线上的中点: 其实高中的向量就学过、两个向量加起来是平行四边形的对角线、那么其实数乘 1/2 就能得到中点了! 代码如下: 1 #pragma once 2 #include"Math.h" 3 #include"Shader.h" 4 #include<glew.h> 5
阅读全文
摘要:向量乘矩阵、如果向量在左边、向量看成是 行向量 | 1 2 2 | 【1 3 4】 * | 3 5 2 | = 【14 25 28 】 | 1 2 3 | 如果向量在右边、向量看成是列向量 向量 * 向量是分量简单相乘、结果是向量
阅读全文
摘要:在一个真实的建模过程中、可能一个模型的几个顶点有很大的数值坐标、 如(100,200,300)(200,300,100)。。。 但是、最后想显示在opengl的窗口内、就必须规范化到 x ,y ∈【-1,1】,z ∈【-1,1】上 但这个区间的点显示在屏幕上、还需要隐含的变化、也就是转换成【像素坐标
阅读全文
摘要:1. GL_LINES vs GL_LINE? 在 glDrawArray()时、指定的类型都是加复数的!!比如: TRIANGLES, LINES, POINTS, 当然写 POINT之类的也能通过编译、但其实是画不出东西的。 正确写法: 错误写法: 注意一点、在核心模式下不使用 glVertex
阅读全文
摘要:指针的价值在于哪里?单纯为了迷惑别人?其实并非如此、本系列长期总结一些必须用指针或者用指针很好的场合: 写任何的代码都必须有一定的动机、而不是想怎么写就怎么写 写代码不是纯灵感的行为、也不是纯机械的行为、而是有逻辑的举一反三。 1. 把一个指针传入一个函数(签名里不加 const)的行为的动机: 1
阅读全文
摘要:注意、必须判断一下打开文件是否成功、不然如果输入一个不存在的文件名、程序会陷入死循环: 类比 Java 的文件操作、Java的InputStream需要嵌套几层、需要new出实际的对象 而 C++ 可以直接在栈上写变量、打开以后直接用就行了(C++的构造函数的调用不仅限于 new 对象时!) 其实打
阅读全文
摘要:如题: 在 glVertexAttributePointer 中、会进行 stride 的指定: 这里可能写成:GL_FLOAT,编译和运行都不报错、但程序就是没结果! 注意 GLfloat 才是一个类型、而GL_FLOAT是一个数字宏!!两者是完全不一样的。
阅读全文
摘要:一、C++、C、Go 中的如下语句: struct xxx s1; vector<int> v; (甚至会调构造函数!) var ABC someType 其实会创建一个 能用的 对象!!、之后用他们进行操作基本上没什么大问题 但是在 Java 里、如果写: ArrayList arr; 但是不去
阅读全文
摘要:0. 是否支持垃圾回收 1. 变量定义、支持的数据类型 2. 特别关注有没有指针类型变量 3.关注是否有面向对象性质、如果有,关注一下对象的创建和回收问题 4.关注传值和传引用的问题、空指针问题 5.关注下网络编程、一般各种语言都有 socket 6.关注一下字符串的操作 7.关注内置的数据结构 8
阅读全文
摘要:1、线性表和map、这两个东西基本上做各种 curd 应用很够了 ;栈除了做一些复杂的算法以外不存在什么开发用处、而队列基本上都用队列中间件来完成、自己程序里就没必要弄队列了。所以 go 语言只有内置的 list 和 map、、、 2、map 的作用: 1. 各种参数传递,安卓里的 Bundle、J
阅读全文
摘要:执着、坚强、坚定是最宝贵的品质 玩好自己的角色、不同情、不想着去理解别人、别人自有别人的生存之道 切忌优柔寡断、走马观花学习、要弄就弄清楚、彻底; 要在学习中无条件执着、坚持、绝不知难而退。尽管这么努力了可能还是只有一点点收获。 一个生来就什么都没有的人,如果想获取点什么、就要把时间都奉献给事业、少
阅读全文
摘要:1. 父类的构造、拷贝、析构是不继承的、子类应该写自己的 2. 一个类中一旦有了纯虚函数,那么这个类就不能产生对象、这个类就是抽象类 3. 父类写virtual、子类以及孙类的同名函数上的virtual可写可不写、但最好写上 4. 有孩子的父类必须写析构函数、析构必须写成虚函数、否则在delete父
阅读全文
摘要:const_cast<> 表示消除 const属性 static_cast<> 编译时就检查、没鸟用 reinterpret_cast<> 表示两个没关系的类型转换 dynamic_cast<> 运行时转换、父转子 总结:没事别瞎吉尔转换类型、除非转换很有把握、比如: 同一片内存,用 TypeA或者
阅读全文
摘要:1. 互相转换: c++ > c : cppstr.c_str() c > c++ : string cppstr = string(cstr) 打印时、cout 都可以打印、如果用 printf 等方法那需要 %s 2. c++ string 的方法: 直接点出来,vs提示有多少是多少 3. c
阅读全文
摘要:1. 基本的定义一个常量 const int a = xxx 2. const char * p , char * const p 区别 前者表示指向的内容不能用 p 修改 后者表示 p不能指向别处 const 离谁近谁就不能变, 离 char 近,char不能变,离 p 近,p 不能变 3. 成员
阅读全文
摘要:能用初始化列表就用 能写 explicit 就写 能用 c++11自带的跨平台函数、对象就用、但也要分情况,如果想完全知道自己在干什么就用系统API 能自己写的就不要让编译器生成 能分文件写的就别合起来! 一直记得delete或者free、多尝试用智能指针 执行代码的前置条件应该是各种前置条件全部设
阅读全文