1. 常用的宏
宏
功能
CMAKE_CURRENT_SOURCE_DIR
当前访问的 CMakeLists.txt 文件所在的路径
PROJECT_SOURCE_DIR
使用cmake命令时,后面紧跟的目录,一般是工程的根目录
EXECUTABLE_OUTPUT_PATH
指定输出的目录
LIBRARY_OUTPUT_PATH
库目录
CMAKE_AUTORCC
指定CMake是否会自动处理Qt资源文件
2. 最简单的CMakeLists.txt文件1234567# 指定使用的 cmake 的最低版本cmake_minimum_required(VERSION 3.8) project (Master VERSION 0.1 LANGUAGES CXX)# 可执行程序名 源文件名称add_executable (app main.cpp)
3. 指定使用的C++标准12345678#增加-std=c++11set(CMAKE_CXX_STANDARD 11)#增加-std=c++14set(CMAKE_CXX_STAND ...
1. QT5.15.2在程序退出时崩溃:提示QBasicTimer::start: QBasicTimer can only be used with threads started with QThread
我的是QComboBox引发的问题,我最开始因为一些原因将主界面设置成了单例类,去掉之后就好了。
引发的原因可以不一样,可以通过一点一点删除最后定位到原因。
1. 函数解析1initializeOpenGLFunctions();
初始化OpenGL函数,将Qt里的函数指针指向显卡的函数,这样如glGenBuffers()这样的函数实际操作的就是显卡上的内存了。
1.1 VBOVBO(Vertex Buffer Object):顶点缓冲区对象。
VBO 是一种用于在 GPU 中存储数据(例如顶点数据)的缓冲区对象。
VBO 存储的是实际的顶点数据、索引数据,如坐标分量,颜色等。
通过把顶点数据上传到 VBO 中,可以让 OpenGL 在渲染过程中直接从显存读取数据。
VBO 不保存顶点数据的布局或如何处理这些数据的信息。它只是简单地存储一段内存区域,数据是原始的顶点数据。
12unsigned int VBO;glGenBuffers(1, &VBO);
unsigned int VBO;是在CPU上创建了一个int类型的缓冲Id。
glGenBuffers(1, &VBO);相当于在GPU上创建了一个缓冲区对象标识符(buffer object identifier),也就是一个在 OpenGL 上下文中使用的唯一 ...
OpenGL
未读项目仓库:
1git clone https://gitee.com/yongwang12138/learn-open-gl.git
1. 新建项目
2. 新建OpenGL类继承于QOpenGLWidget和QOpenGLFunctions
3. 重写对应的虚函数
4. 将界面上的对象提升为自定义的OpenGL类
1. 添加opengl模块1QT += openglwidgets
2. 创建OpenGL Widget需要继承QOpenGLWidget和QOpenGLFunctions_4_5_Core类和重写虚函数。
virtual void initializeGL(); virtual void resizeGL(int w, int h); virtual void paintGL();
12345678910111213141516171819202122232425262728#ifndef TESTOPENGLWIDGET_H#define TESTOPENGLWIDGET_H#include <QOpenGLWidget>#include <QOpenGLFunctions_4_5_Core>class TestOpenGLWidget : public QOpenGLWidget, QOpenGLFunctions_4_5_Core{ Q_OBJECTpublic: enum Shape { ...
kanzi
未读
1. 创建节点使用堆栈布局创建7个节点
2. 添加状态机通过控制Y轴的移动来显示不同的驾驶模式
3. 创建动画
State_0-State_3采用线性动画。
State_3-State_0采用自定义动画。
extern 关键词的运用概述extern 关键字在C和C++语言中主要用于声明变量或函数是在其他文件或本文件的其他位置定义的。这允许程序的不同部分共享变量和函数的定义。
在C语言中的运用声明全局变量当你在一个源文件中定义了一个全局变量,并希望在另一个源文件中访问它时,你需要在那个源文件中使用 extern 关键字来声明这个变量。
globals.c
12// 定义全局变量 int globalVar = 10;
main.c
123456789#include <stdio.h> // 声明全局变量,表示它在其他地方定义 extern int globalVar; int main() { printf("全局变量的值为: %d\n", globalVar); return 0; }
声明函数虽然对于函数来说,extern 关键字不是必需的(因为函数默认就是全局的,并且默认就是 extern 的),但它仍然可以用来显式地声明一个函数是在其他地方定义的。
functions.h
1 ...