openGl4

news/2025/3/25 21:56:33/文章来源:https://www.cnblogs.com/zwf4/p/18791752

----向量章节---

  • 原文:如果一个向量的齐次坐标是0,这个坐标就是方向向量(Direction Vector),因为w坐标是0,这个向量就不能位移

    • 这段提供了一个区分方向向量和点坐标的方式,而且是逻辑上区分的。可以平移=点=w非0,w非0=可以平移=点
  • 原文提到了万向节死锁。是一种旋转导致轴重合的现象。按照欧拉角描述旋转,先转的轴会改变后旋转轴的位置。见https://blog.csdn.net/Dwzsa/article/details/142460040

  • 原文提到:使用矩阵进行变换的真正力量在于,根据矩阵之间的乘法,我们可以把多个变换组合到一个矩阵中

  • glm不用添加linker,原文:GLM是OpenGL Mathematics的缩写,它是一个只有头文件的库,也就是说我们只需包含对应的头文件就行了,不用添加额外的链接和编译。这和他的模版有关,编译时根据实际使用的类型来生成具体的代码。不过我没生成过这种只include头文件就行的库,具体不了解

    • 大概是openGl自带的
  • 这个函数有点复杂:glUniformMatrix4fv(transformLoc, 1, GL_FALSE, glm::value_ptr(trans));

    • GL_FALSE位置的参数表示是否希望对我们的矩阵进行转置(Transpose)
  • 因为之前没注意改背景色的部分,所以没掉glClear,导致每一帧都画出来了
    -旋转的时候,openGl是右手系,所以旋转值为正的时候,是逆时针旋转,逆时针指的是:从旋转轴的正方向看向原点时,逆时针。写的时候没改纹理坐标:TexCoord = vec2(aTexCoord.x, 1.0 - aTexCoord.y);这个纹理坐标是做了一个y轴翻转,才是看起来的逆时针。实际上,这里逆时针指的不是我从屏幕里看到的逆时针。而且加的TexCoord = vec2(aTexCoord.x, 1.0 - aTexCoord.y),在教程里没找到说明



  • 注意到,旋转前后,整个图形的宽高没变。这是因为之前写了视口和窗口大小宽高同步才这样的,想想我们现在的坐标,也可推知,我们的图形应该是正方形,但显示的是长方形

  • 这个。因为position相乘写反了,对的是:gl_Position = transformvec4(aPos.x, aPos.y, aPos.z, 1.0);

    不过用4
    1的矩阵乘,居然没问题,可能做了兼容,可能做了转换,猜测

  • 我们在计算变换矩阵的时候,始终是从E去乘每一个新的变换,最后再乘当前点xy,根据结合率,这和用xy去乘最后一个,然后反向乘到E是一样的结果。之所以一定是最后乘xy,因为我们一开始乘的是E,但乘的不是E,我又不好写第一个乘的数组,glm::rotate这写计算,都是得从一个数组开始,所以为了方便注定是反向的


  • 先转,后平移。我指的是,先调用rotate代码,在调用trans代码。so,为什么会这样的。首先,不论怎么转,都是围绕原点转。先调用转,后平移=图像先平移后转,所以是这样的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/905673.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20242943 2024-2025-2 《网络攻防实践》实践四报告

一.实践内容在网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。 1.ARP缓存欺骗攻击 ARP缓存欺骗攻击利用了ARP协议缺乏身份验证的漏洞。攻击者通过在局域网内发送伪造的ARP响应消息…

使用PyCharm连接服务器并配置Python虚拟环境

使用PyCharm连接服务器并配置Python虚拟环境 以StrongSORT作为例子,用PyCharm打开StrongSORT项目1.打开idea设置,找到SSH配置2.添加配置并测试连接3.新建一个刚刚添加的服务器的终端4.新建一个StrongSORT项目文件夹 mkdir StrongSORT5.按照README文档创建虚拟环境 conda crea…

sd9

1、Knowledge Distillation in Iterative Generative Models for Improved Sampling Speed 提高采样速度2种方法:schedular优化、蒸馏 本论文基于DDIM,DDPM训练出来的epsilon theta 可以直接用于DDIM。由于DDIM的降噪过程是确定的,但是step多,由此定义了一个确定的教师分…

【昆工 25 考研调剂捡漏!计算机调剂名额近80+】

📣【昆工 25 考研调剂捡漏!计算机调剂名额近80+】📣 3月25日唐师兄更新 🔥计算机考生看过来!昆明理工大学信息工程与自动化学院调剂通道开启!名额多、方向全、全日制/非全均有岗,速进群锁定上岸席位! 🌟 重点调剂方向 🌟 ✅ 计算机应用技术(16人) ✅ 人工智能…

76. 最小覆盖子串(滑动窗口)

O(1)的字符频度匹配 设计一个 distance数组记录 s字串和 t的匹配程度。也就是每个字符频度的差 s[c] - t[c] = distance[c] t初始化distance中个字符的频度,如果s[c] 统计到一个,就在distance--,这样,当distance为0时,就代表这个字符完全匹配。 此外再创建一个count记录有…

在HTML页面通过JavaScript访问Ollama本地部署的DeepSeek

在HTML页面通过JavaScript访问Ollama本地部署的DeepSeek,顺便解决了 HTML 页面调用 Ollama 服务的跨域问题前排提醒: 1. 操作系统为Windows11 2. 如果你还没有使用Ollama本地部署DeepSeek,可以参考Windows系统上使用Ollama本地部署DeepSeek 3. 顺便解决了 HTML 页面调用 Oll…

【3】进制转换学习总结(c++)

1.进制的基础知识 一:进制是进位计数制,是人为定义的带进位的计数方法。对于任何一种进制,例如:X进制,就表示每一位置上的数运算时都是逢X进一位。比如十进制就是逢十进一,二进制就是逢二进一。 二:生活中常见的进制有:十进制,十二进制,二十四进制,六十进制等。 2.十…

vue+leaflet示例:地图截图批量导出(附源码下载)

demo源码运行环境以及配置运行环境:依赖Node安装环境,demo本地Node版本:14.19.1。 运行工具:vscode或者其他工具。 配置方式:下载demo源码,vscode打开,然后顺序执行以下命令: (1)下载demo环境依赖包命令:npm i (2)启动demo命令:npm run dev (3)打包demo命令: n…

智能Agent如何改造传统工作流:从搜索到全能助手

智能Agent如何改造传统工作流:从搜索到全能助手 引言:当AI遇上工作流 还记得我们以前搜索信息的方式吗?输入关键词,浏览大量结果,筛选有用内容,再整合成我们需要的答案。这个过程不仅耗时,还常常让人感到疲惫。 如今,智能Agent的出现正在彻底改变这一切。想象一下,你只…

vue+leaflet示例:拓展wms以及wmts地图范围裁剪(附源码下载)

demo源码运行环境以及配置运行环境:依赖Node安装环境,demo本地Node版本:14.19.1。 运行工具:vscode或者其他工具。 配置方式:下载demo源码,vscode打开,然后顺序执行以下命令: (1)下载demo环境依赖包命令:npm i (2)启动demo命令:npm run dev (3)打包demo命令: n…

vue+leaflet示例:快速渲染聚合矢量瓦片(附源码下载)

demo源码运行环境以及配置运行环境:依赖Node安装环境,demo本地Node版本:14.19.1。 运行工具:vscode或者其他工具。 配置方式:下载demo源码,vscode打开,然后顺序执行以下命令: (1)下载demo环境依赖包命令:npm i (2)启动demo命令:npm run dev (3)打包demo命令: n…

vue+leaflet示例:热力图(附源码下载)

demo源码运行环境以及配置运行环境:依赖Node安装环境,demo本地Node版本:14.19.1。 运行工具:vscode或者其他工具。 配置方式:下载demo源码,vscode打开,然后顺序执行以下命令: (1)下载demo环境依赖包命令:npm i (2)启动demo命令:npm run dev (3)打包demo命令: n…