路遥见人心,日久知马力

博客园 首页 新随笔 联系 订阅 管理
  55 随笔 :: 3 文章 :: 0 评论 :: 10887 阅读

11 2022 档案

摘要:1. 基本数据类型:没什么好说的、知道浮点数存储起来不精确、各种类型占的大小在不同平台可能不一样就行了 2. 初始化列表:能用就用、能防止潜在的类型收窄, 3. static_cast 和 dynamic cast 是推荐的用法、比 C 中的强制转换高级 4. 没有初始化的局部变量和指针里都是垃圾值 阅读全文
posted @ 2022-11-15 15:29 只讲大白话 阅读(73) 评论(0) 推荐(0) 编辑

摘要:1. map 自带排序功能、从小到大!把一堆东西按照要排序的键放在map里可以当二叉排序树使用、插入和检索都不错 阅读全文
posted @ 2022-11-14 16:57 只讲大白话 阅读(21) 评论(0) 推荐(0) 编辑

摘要:1. VBO 的 target 是 GL_ARRAY_BUFFER 不是 GL_VERTEX_BUFFER 2. glUniform()用来给uniform传变量 别用成 glProgramUniform() 3. 下载个 vs2019 的 glsl 高亮插件!就在vs的扩展里能搜到!不然太痛苦了! 阅读全文
posted @ 2022-11-10 20:37 只讲大白话 阅读(56) 评论(0) 推荐(0) 编辑

摘要:1. 强耦合、直接线性循环集合可破万法 别管什么消息机制、信号槽机制、观察者模式...实在不知道怎么让两个类交互就用强耦合、想操作什么对象就存一个它的指针或者引用、然后调用相应的方法就行 确实发现行不通、再找对应的办法 再不行就不用private、把信息全部公开出来 循环集合就不用说了、最暴力但却是 阅读全文
posted @ 2022-11-09 17:11 只讲大白话 阅读(23) 评论(0) 推荐(0) 编辑

摘要:1. 无法找到 xxx.dll 没有把动态链接库和exe放在一个文件夹下 2. 不允许使用不完整的类型 指的是忘了加头文件 3. link err 、无法解析的外部符号 指的是 lib 库没有配置对 4 无法打开源文件 ..h 附加库目录没配置对 阅读全文
posted @ 2022-11-09 14:34 只讲大白话 阅读(233) 评论(0) 推荐(0) 编辑

摘要:不要总是觉得:自己做个游戏吧、自己独立开发游戏吧... 这是不现实的 首先、做一个游戏比做一个网站难多了 网站开发、一个人学三个月差不多了、只不过做的东西比别人次点、丑点、性能差一点 但是游戏开发、无引擎的情况下、甚至有引擎的情况 起码有四大块一定绕不开的东西 1 首先得把blender之类的东西学 阅读全文
posted @ 2022-11-07 11:50 只讲大白话 阅读(47) 评论(0) 推荐(0) 编辑

摘要:1. 前后都加 const: 返回const、表示在外部不能去修改这个引用(否则编译错)、也就是保护了成员变量 括号后面的const、表示这个函数本身不修改成员变量 一般把 getXXX 函数写成前后都有 const 的形式 2. 只有前const 没有后 const、表示只是不让外部去修改我的返回 阅读全文
posted @ 2022-11-07 10:23 只讲大白话 阅读(24) 评论(0) 推荐(0) 编辑

摘要:核心在于、旋转是刚体旋转、那么被旋转点到参考点的距离是不变的 也就是下图的两条绿边的长度是相等的 相等意味着什么?意味着有方程可以列! 阅读全文
posted @ 2022-11-06 10:26 只讲大白话 阅读(41) 评论(0) 推荐(0) 编辑

摘要:假设我们已经用世界坐标系变换把模型放在了场景的某处(x,y,z): 然后我们要在 camera(x,y,z)这个点去看这个物体,并且设置好相机的朝向(Dir,Up,Right)、那么以相机为原点也会形成一个坐标系: 那么就要问:这个(x,y,z)点如果在红色的坐标系里,三个坐标分量应该是多少? 当然 阅读全文
posted @ 2022-11-05 10:44 只讲大白话 阅读(59) 评论(0) 推荐(0) 编辑

摘要:1. 如果没有 M 变换、也就是模型坐标系不能变换到世界坐标系、那么: 假设在blender里建立一个模型: 假设还有另外一个模型: 不进行模型到世界坐标系的变换、那么最终的结果看起来就是这样: M变换、说白了就是把模型放到场景的合适的位置上(通过平移,旋转、缩放的手段)、如果不进行这一步,那么一切 阅读全文
posted @ 2022-11-05 10:23 只讲大白话 阅读(189) 评论(0) 推荐(0) 编辑

摘要:1. 严禁从单词表或者字典开始背 2. 从文本入手、同类文本读个20篇、吃透每句话、每个词、如此循环到不需要字典的帮助、就差不多学会了 阅读全文
posted @ 2022-11-05 09:18 只讲大白话 阅读(32) 评论(0) 推荐(0) 编辑

摘要:1. API:本质上一切别人写的代码或者代码库,从而给你用的都是API、当然你也可以写 API 2. SDK: 软件开发工具包、其实和 API 这个词混用也没什么关系、主要体现在这个是给软件开发者用的 3. JDK: Java的软件开发工具包 4 Library: 指的是库文件 != 图书馆! 5 阅读全文
posted @ 2022-11-05 08:54 只讲大白话 阅读(41) 评论(0) 推荐(0) 编辑

摘要:1. C++代码里调用别人的库、或者写库给别人用、大概有如下的方法(只讨论windows系统的情况): a) 提供头文件 h 、 静态库 lib -- 》 静态链接 b) 提供头文件 h、 动态库 dll 、库文件 lib --》动态链接:虽然有lib文件、但这个lib文件只是对 dll 文件的说明 阅读全文
posted @ 2022-11-04 18:31 只讲大白话 阅读(1170) 评论(0) 推荐(0) 编辑

摘要:首先、要明确一点、带图形的程序的底层也是黑窗口编程 图形的显示只占一个程序的一小部分代码(从费脑子的程度考虑、图形的显示本身并不是很难、无非是基本图元组合、但显示在哪里、怎么更新坐标、就有很大说法了) 数据的结构、对结构的操作占最大多数 比如、上课学的for 循环好像就能求个100以内的和 但 fo 阅读全文
posted @ 2022-11-04 14:26 只讲大白话 阅读(78) 评论(0) 推荐(0) 编辑

摘要:上图所示的代码都是正确的、并且能够按正常人的预期执行。 首先提示一点、C++要用类名调用静态函数或者引用变量时、不是像Java一样用点号、而是用两个冒号! 错误例子1:不写第 13 行的代码、以为编译器会自动给静态成员赋 0、实际上根本都不能运行: 错误例子2: 以为和Java一样能直接写在类里面: 阅读全文
posted @ 2022-11-03 22:01 只讲大白话 阅读(36) 评论(0) 推荐(0) 编辑

摘要:如下所示:如果在 foo 里、定义类型别名、枚举、内部类、并且它们都处于public范围内、那么外部是可以用 类名:: 这种方式去拿到 foo类里面定义的东西的 但是、如果写成private,那么就可以把这些定义都隐藏起来、这样就完成了类作用域下的信息隐藏(两个冒号是作用域运算符!): 阅读全文
posted @ 2022-11-03 18:23 只讲大白话 阅读(21) 评论(0) 推荐(0) 编辑

摘要:1. 作用: 都是修饰函数 2. 含义:明确指出函数的参数在调用时以什么顺序压栈! 3. 范例: 右键打个断点、然后执行、进入反汇编: 7E7h指的就是 2023 字面量、h表示这是个十六进制数。 可以看出两者是一样的。 阅读全文
posted @ 2022-11-03 18:11 只讲大白话 阅读(58) 评论(0) 推荐(0) 编辑

摘要:如上所示、想完成加法操作有两种写法 一种是用一个模板、一种是用两个参数 虽然功能上差不多、但其中的区别还是有的: 函数调用时要把压栈 而模板里的东西只会被实例化到不同的函数中!也就是变成了汇编代码的一部分。 阅读全文
posted @ 2022-11-03 18:02 只讲大白话 阅读(20) 评论(0) 推荐(0) 编辑

摘要:1 #include <iostream> 2 #include<string> 3 4 namespace str_utils { 5 6 std::string to_string(const char* c_str) { 7 std::cout << "调用了 cstr" << std::en 阅读全文
posted @ 2022-11-03 17:29 只讲大白话 阅读(950) 评论(0) 推荐(0) 编辑

摘要:有普通函数、总是会先调普通的函数、如上图、鼠标停在 foo(3.0)上时会有一个对于普通函数的高亮 如果没普通函数、而是有特化、那么会调用特化: 总结: 编译器总是尽可能的调用特化的!越泛化优先级就越低。实在不确定调的是哪个函数可以用 ctrl 加 左键点进去看看! 阅读全文
posted @ 2022-11-03 17:14 只讲大白话 阅读(37) 评论(0) 推荐(0) 编辑

摘要:【opengl实例】pick操作首先上结果(不会在博客园传视频、具体流程是鼠标点击屏幕上的任意一个点、向此处投射一条射线): 实现的方法: 首先认清楚什么是一条射线、由于我们不是真的要画一条无限长度的线、那么用线段的起始和终止(当然是在世界坐标系里的起点和终点)就能代表这条射线、具体的shader可以用基本的MVPshader。 阅读全文
posted @ 2022-11-02 17:27 只讲大白话 阅读(176) 评论(0) 推荐(0) 编辑

摘要:这个问题在使用 sizeof 的时候就会凸显出来 如果要把一个数组传给函数、那么必须要附带传入这个数组的有效大小 例如 void f( int* arr ,int len); 因为在函数内是不能用sizeof(arr)/sizeof(int)去算这个数组的! 当在外部把一个数组传给函数、数组会发生退 阅读全文
posted @ 2022-11-02 09:10 只讲大白话 阅读(30) 评论(0) 推荐(0) 编辑

摘要:1. 通读 glfw3.h 、先不看注释、只看API、 认清楚这个库总共有哪些功能(差不多20 min)就可以解决 2. 去官网文档: 比方说、我想实现鼠标点击窗口的时候、把鼠标的坐标打印出来(当然你也可以记录下来、后面进行一些算法) 我可以查询文档:GLFW: Input guide 3. 实践出 阅读全文
posted @ 2022-11-01 20:13 只讲大白话 阅读(429) 评论(0) 推荐(0) 编辑

摘要:首先、 glfw3.h 大概有5800行、但去掉所有注释估计也就不到1000行。 其实不用我去分析、人家的注释写的很清楚了。 差不多就三部分内容: 定义一些状态、错误码 定义一些函数指针(这是为了可以传函数进去回调)、和结构体: 定义一堆设置窗口状态的函数 其实慢慢看都没什么难的!源码面前了无秘密、 阅读全文
posted @ 2022-11-01 20:02 只讲大白话 阅读(124) 评论(0) 推荐(0) 编辑

摘要:直接把 opengl 理解成 STL、QT 之类的东西就OK了 你想做字符串操作、想有一个容器...那就可以调 STL 你想显示输入框、窗口、进度条、按钮、那就用QT 你想画三角形、贴图、进行光照效果的计算、那就用Opengl和GLSL 别想多了。。 其实类比起来、那么理解透彻 springboot 阅读全文
posted @ 2022-11-01 16:44 只讲大白话 阅读(562) 评论(0) 推荐(0) 编辑

摘要:vbo 就是一个一维数组、一般是 GLfloat 类型的数组 数组的内容怎么去解释? 用 glVertexAttribPointer ebo 也是一个一维数组、不过是 GLuint 的数组(显然索引一般没有负数的) 如果 vbo是: [ p1x p1y p1z p2x p2y p2z .... p? 阅读全文
posted @ 2022-11-01 16:18 只讲大白话 阅读(189) 评论(0) 推荐(0) 编辑

摘要:任意的形如 z  = F(x,y)的曲面生成与显示---基于OpenGL Core Profile运行结果: (圆锥面) (抛物面) (马鞍面) 其中的做法是:从顶部看上去就是一个平面网格、每个点的 z、x的位置都是程序细分出来的(指定起始、结束、步长)、比较固定、但高度 y 的计算使用 用户指定的函数去计算 把每个顶点的信息传入 vbo、再计算出每个三角面片的索引号、传入ebo、最后glDra 阅读全文
posted @ 2022-11-01 15:53 只讲大白话 阅读(174) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示