文章分类 - opengl
opengl
摘要:前言 qt对opengl进行了封装,使用很方便,便于我们的学习 qt下的opengl有很多解决方案 QGLWidget,旧的Qt OpenGL module,避免使用 QOpenGLWidget ,Qt5.4以后新的Qt OpenGL module,推荐使用 QOpenGLFunctions,提供对
阅读全文
摘要:第一课:创建一个OpenGL窗口 选择空项目 输入项目名称和位置 选择编译器 创建成功后,首先添加pri文件,pri文件可以管理我们的类文件,类似一个小项目的感觉 输入pri名字 此时项目结构,只有pro项目文件,和pri文件 修改pro代码,改变项目结构 右键pri文件,在pri下创建窗口类 输入
阅读全文
摘要:Qt OpenGL的准备工作 下载安装vs 2015 下载安装qt 最新版(http://download.qt.io/archive/qt/5.10/5.10.1/qt-opensource-windows-x86-5.10.1.exe) 新建项目
阅读全文
摘要:第二课:你的第一个多边形 新建窗口类TriangleWindow,继承Openglwindow trianglewindow.h代码 #ifndef TRIANGLEWINDOW_H #define TRIANGLEWINDOW_H #include "openglwindow.h" #includ
阅读全文
摘要:第三课:上色 修改上节课的颜色值 //颜色值 GLfloat colors[] = { 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f }; 运行
阅读全文
摘要:OpenGL里的坐标系统包括 model矩阵,view矩阵,projection矩阵 从着色器代码中可以看出我们物体顶点的坐标受model矩阵,view矩阵,projection矩阵影响 static const char *vertexShaderSource = "attribute highp
阅读全文
摘要:第五课:向三维进军 3个点组成一个三角形面,如果要画个三菱锥,需要4个面 前面,左侧面,右侧面,底面 点1显示红色,点2显示绿色,点3显示蓝色,点4显示白色 正面 左侧面 右侧面 底面 顶点数组 //顶点坐标 GLfloat vertices[] = { 0.5f, 0.0f, 0.5f, //3
阅读全文
摘要:第四课:旋转 坐标轴遵循右手坐标系 x轴旋转 //乘以这个矩阵,通过向量上的角度旋转坐标 matrix.rotate(100.0f * m_frame / screen()->refreshRate(), 1, 0, 0); m_frame++; y轴旋转 //乘以这个矩阵,通过向量上的角度旋转坐标
阅读全文
摘要:索引缓冲对象(Element Buffer Objects,EBO) 为什么使用EBO 正常画一个立方体,需要8个顶点,合计6个面 但实际我们是用了4*6=24个点来画的,因为4个点组成一个面,我们能看出来,有很多重复点,为了能节省内存空间,我们想只用8个点描画立方体,这需要用到EBO Vertex
阅读全文
摘要:本文参考 https://www.jianshu.com/p/dfe29d697a62 顶点数组对象(Vertex Array Object, VAO) 顶点数组对象(Vertex Array Object, VAO)可以像顶点缓冲对象一样绑定,任何随后的顶点属性调用都会储存在这个VAO中。这有一个
阅读全文
摘要:终于我们可以把图片贴到我们的图形上了 纹理坐标 当我们把图片贴到我们的正方形上,需要指定四个角的对应关系,这就是纹理坐标,通常,我们希望图片左下角对应正方形左下角,图片右上角对应正方形右上角,如果对应错了,图片就会上下颠倒,左右颠倒 把原来顶点颜色数组改为,顶点纹理坐标数组 //VAO数据,顶点与颜
阅读全文
摘要:本文参考 https://www.jianshu.com/p/dfe29d697a62 我们通过顶点缓冲对象(Vertex Buffer Objects, VBO)管理内存,它会在GPU内存(通常被称为显存)中储存大批顶点。使用这些缓冲对象的好处是我们可以一次性的发送一大批数据到显卡上,而不是每个顶
阅读全文
摘要:纹理滤波 在纹理映射的过程中,如果图元的大小不等于纹理的大小,OpenGL便会对纹理进行缩放以适应图元的尺寸。我们可以通过设置纹理滤镜来决定OpenGL对某个纹理采用的放大、缩小的算法 滤镜|描述 -|- GL_NEAREST|取最邻近像素 GL_LINEAR |线性内部插值 GL_NEAREST_
阅读全文
摘要:程序框架参考: https://qtdream.com/topic/1144/第八课-融合 点 glDrawArrays(GL_POINTS,0, 24); 单线 glDrawArrays(GL_LINES,0, 24); 循环线 条线 glDrawArrays(GL_LINE_STRIP,0, 2
阅读全文
摘要:参考帖子: https://www.cnblogs.com/ylwn817/archive/2012/09/07/2675285.html 混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。 这两种颜色我们分为源因子和目标
阅读全文
摘要:环境搭建 学习《OpenGL编程指南》,首先要搭建环境,运行第一个例子【第一个 OpenGL 程序 triangles.cpp】 我的环境是Ubuntu14.04,以下阅读需要有linux基础知识。 安装依赖库 gcc g++ 安装 cmake 3.19.0-rc2 源码编译安装 官网 https:
阅读全文

浙公网安备 33010602011771号