errorman

不积跬步,无以至千里
随笔 - 35, 文章 - 0, 评论 - 0, 阅读 - 9674

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

03 2023 档案

摘要:1.使用基于range的for循环 这是 C++11 中非常酷的特性,如果你想从头到尾迭代,这是最好的方法。 using namespace std; int main() { vector<int> vec = {0, 1, 2, 3, 4}; for (const auto &value : v 阅读全文

posted @ 2023-03-29 20:14 Clemens 阅读(45) 评论(0) 推荐(0) 编辑

摘要:C++提供了reinterpret_cast用于任意类型的转换,即reinterpret_cast运算符允许将任意指针转换到其他指针类型,也允许做任意整数类型和任意指针类型之间的转换。转换时,执行的是逐个比特复制的操作。reinterpret中文意为“重新解释; 重新诠释;”。 (1)它用于将某种数 阅读全文

posted @ 2023-03-28 21:15 Clemens 阅读(240) 评论(0) 推荐(0) 编辑

摘要:static_cast 用于正常/普通类型转换。 这也是负责隐式类型强制的转换,也可以显式调用。 您应该在将 float 转换为 int、将 char 转换为 int 等情况下使用它。这可以转换相关的类型类。这是一个编译期间的转换操作。会进行类型检查。 1.隐式转换案例 int main() { f 阅读全文

posted @ 2023-03-28 20:53 Clemens 阅读(83) 评论(0) 推荐(0) 编辑

摘要:Safely converts pointers and references to classes up, down, and sideways along the inheritance hierarchy. 沿继承层次结构将指针和引用安全地向上、向下和横向转换为类。 dynamic_cast< 阅读全文

posted @ 2023-03-27 21:10 Clemens 阅读(26) 评论(0) 推荐(0) 编辑

摘要:多继承产生的冲突 当存在多基类时,看下面这个例子: class A { protected: int a; }; class B : public A { protected: int b; }; class C : public A { protected: int c; }; class D : 阅读全文

posted @ 2023-03-27 19:55 Clemens 阅读(26) 评论(0) 推荐(0) 编辑

摘要:在头文件<memory>中定义。 std::unique_ptr 是通过指针占有并管理另一对象,并在 unique_ptr 离开作用域时释放该对象的智能指针。 在下列两者之一发生时用关联的删除器释放对象: (1)销毁了管理的 unique_ptr 对象 struct B { virtual ~B() 阅读全文

posted @ 2023-03-26 13:06 Clemens 阅读(88) 评论(0) 推荐(0) 编辑

摘要:我们使用gcc编译器,C++11, 《c++核心指南》的一个条款:“For “out” output values, prefer return values to output parameters”:在函数输出数值时,尽量使用返回值而非输出参数。 我们之前的做法应该是函数参数里面使用指针或者引用 阅读全文

posted @ 2023-03-25 16:38 Clemens 阅读(54) 评论(0) 推荐(0) 编辑

摘要:RAII全称Resource Acquisition Is Initialization,即“资源获取即初始化”。这种技术的核心思想是,通过在对象的构造函数中获取资源,并在对象的析构函数中释放资源,来确保资源的正确管理。 它绑定了在使用前必须获取的资源的生命周期(分配的堆内存、执行线程、打开的套接字 阅读全文

posted @ 2023-03-25 15:16 Clemens 阅读(37) 评论(0) 推荐(0) 编辑

摘要:在Qt+OpengGL使用教程(2)中我们绘制了三角形,接下来我们需要使用qt的API绘制一个矩形,同时参考和对照:LearnOpenGL (3) 绘制矩形。 一、准备工作 元素缓冲对象(EBO) 二、绘制矩形 我们使用两个三角形组成一个矩形。 为什么使用元素缓冲对象? 定义矩形的四个顶点 floa 阅读全文

posted @ 2023-03-20 16:17 Clemens 阅读(496) 评论(0) 推荐(0) 编辑

摘要:本文基于Win10 + Visual Studio 2019 + OpenGL 3.3。参考“你好,三角形”。 在LearnOpenGL (2) 绘制三角形 的基础上继续添加代码。 一、准备工作 元素缓冲对象(EBO) 二、绘制矩形 我们使用两个三角形组成一个矩形。 为什么使用元素缓冲对象? 定义矩 阅读全文

posted @ 2023-03-20 16:11 Clemens 阅读(362) 评论(0) 推荐(0) 编辑

摘要:在Qt+OpengGL使用教程(1)中我们建立了程序的基本结构,接下来我们需要使用qt的API绘制一个三角形,同时参考和对照:LearnOpenGL (2) 绘制三角形。 一、准备工作 环境:Ubuntu 16.04 LTS + Qt 5.14.2. 二、绘制三角形 顶点数组坐标 OpenGL中我们 阅读全文

posted @ 2023-03-20 14:56 Clemens 阅读(350) 评论(0) 推荐(0) 编辑

摘要:本文基于Win10 + Visual Studio 2019 + OpenGL 3.3。参考“你好,三角形”。 一、准备工作 图形渲染管线 顶点数据 图元 顶点缓冲对象(VBO) 顶点数组对象(VAO) 二、绘制三角形 建立顶点数组 OpenGL中我们指定的所有坐标都是3D坐标(x、y和z)。Ope 阅读全文

posted @ 2023-03-20 10:49 Clemens 阅读(216) 评论(0) 推荐(0) 编辑

摘要:首先,建议阅读和Qt OpenGL相关的类。本人对其中的一些类,做了一些翻译,例如:QOpenGLWidget。 环境:Ubuntu16.04, Qt 5.14.2 首先,新建立一个工程qtopengltest,使用ui designer,拖动一个widget到界面上,命名为glwidget。 根据 阅读全文

posted @ 2023-03-20 09:50 Clemens 阅读(309) 评论(0) 推荐(0) 编辑

摘要:GLFW是什么? GLFW是一个开源的C/C++库,用于创建和管理OpenGL窗口、上下文和输入。它提供了一些用于处理窗口事件、键盘输入、鼠标输入和游戏手柄输入的简单API,同时也支持多个窗口和全屏模式。 GLFW被广泛用于OpenGL程序中,包括游戏、模拟器、三维可视化和科学计算等领域。它可以在W 阅读全文

posted @ 2023-03-17 17:17 Clemens 阅读(281) 评论(0) 推荐(0) 编辑

摘要:本文基于win10 + Visual Studio 2019,基于OpenGL3.3。参考 learnopengl之“创建窗口”和“你好,窗口”。 一、准备工作 环境配置 环境配置详情见“创建窗口”。 GLFW是什么? GLFW是一个开源的C/C++库,用于创建和管理OpenGL窗口、上下文和输入。 阅读全文

posted @ 2023-03-17 10:30 Clemens 阅读(88) 评论(0) 推荐(0) 编辑

摘要:深度缓冲是什么? OpenGL中的深度缓冲(Depth Buffer)是一种用于存储场景中每个像素的深度信息的内存区域。深度信息可以理解为每个像素与观察点的距离,也可以理解为像素的z轴坐标。 在3D图形渲染中,深度缓冲通常用于进行深度测试,以确定哪些像素位于其他物体的前面或后面。深度测试可以避免渲染 阅读全文

posted @ 2023-03-16 15:33 Clemens 阅读(89) 评论(0) 推荐(0) 编辑

摘要:颜色缓冲区是什么? OpenGL中的颜色缓冲区(Color Buffer)是一个用于存储渲染结果的内存区域。当我们通过OpenGL渲染场景时,渲染的结果会被存储到颜色缓冲区中。通常情况下,颜色缓冲区是一个二维数组,每个元素代表屏幕上的一个像素点,存储着该像素点的颜色信息。 在OpenGL中,颜色缓冲 阅读全文

posted @ 2023-03-16 14:42 Clemens 阅读(280) 评论(0) 推荐(0) 编辑

摘要:Detailed Description 顶点数组对象(VAO)是一个OpenGL容器对象,封装了指定每个顶点属性数据到OpenGL管道所需的状态。换句话说,VAO记住了缓冲对象(参见QOpenGLBuffer)的状态及其关联的状态(例如顶点属性分配器)。这允许一种非常容易和高效的方法,在场景中渲染 阅读全文

posted @ 2023-03-16 11:10 Clemens 阅读(257) 评论(0) 推荐(0) 编辑

摘要:Detailed Description OpenGL计时器查询对象是OpenGL管理的资源,用于测量GPU上一系列OpenGL命令的执行时间。 OpenGL针对计时器查询提供不同级别的支持,这取决于您拥有的OpenGL版本和ARB_timer_query或EXT_timer_query扩展的存在。 阅读全文

posted @ 2023-03-16 10:59 Clemens 阅读(72) 评论(0) 推荐(0) 编辑

摘要:Detailed Description QOpenGLTimeMonitor类是一个便利的包装器,用于收集OpenGL计时查询对象,以测量您的渲染应用程序所需的粒度水平的GPU时间间隔。OpenGL计时查询对象按顺序查询,以记录您的渲染代码中感兴趣的位置的GPU时间戳。一旦所有发出的计时查询的结果 阅读全文

posted @ 2023-03-16 10:22 Clemens 阅读(49) 评论(0) 推荐(0) 编辑

摘要:Detailed Description Introduction 这个类支持使用OpenGL Shading Language (GLSL)和OpenGL/ES Shading Language (GLSL/ES)编写的着色器程序。QOpenGLShader和QOpenGLShaderProgra 阅读全文

posted @ 2023-03-16 09:55 Clemens 阅读(327) 评论(0) 推荐(0) 编辑

摘要:Detailed Description 此类支持使用 OpenGL 着色语言 (GLSL) 和 OpenGL/ES 着色语言 (GLSL/ES) 编写的着色器。QOpenGLShader 和 QOpenGLShaderProgram 使程序员免于编译和链接顶点和片段着色器的细节。另见 QOpenG 阅读全文

posted @ 2023-03-15 21:01 Clemens 阅读(83) 评论(0) 推荐(0) 编辑

摘要:Detailed Description 详细描述 QOpenGLContext表示底层OpenGL上下文的OpenGL状态。为了设置上下文,需要设置其屏幕和格式,使它们与上下文所需使用的表面的屏幕和格式相匹配,必要时使用setShareContext()使其共享资源,最后调用create()。使用 阅读全文

posted @ 2023-03-15 16:19 Clemens 阅读(1192) 评论(0) 推荐(0) 编辑

摘要:Detailed Description 详细描述 缓冲区对象是在OpenGL服务器中创建的,以便客户端应用程序可以避免每次需要时上传顶点、索引、纹理图像数据等。 QOpenGLBuffer对象可以作为对底层OpenGL缓冲区对象的引用进行复制: QOpenGLBuffer buffer1(QOpe 阅读全文

posted @ 2023-03-15 11:50 Clemens 阅读(186) 评论(0) 推荐(0) 编辑

摘要:此文档基于Qt5.14.2 详细描述 QOpenGLWidget提供了在Qt应用程序中显示集成OpenGL图形的功能。使用它非常简单:让您的类继承它,并像使用任何其他QWidget一样使用子类,除了您可以选择使用QPainter和标准OpenGL渲染命令之间的区别。 QOpenGLWidget提供了 阅读全文

posted @ 2023-03-15 10:58 Clemens 阅读(1938) 评论(0) 推荐(0) 编辑

摘要:首先,参考并建议阅读learnopengl. OpenGL一般被认为是一个API,包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。 实际的OpenGL库的开发者通常是显卡的生产商。你购买的显 阅读全文

posted @ 2023-03-14 16:25 Clemens 阅读(440) 评论(0) 推荐(0) 编辑

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