![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
计算机图形学
文章平均质量分 64
关于计算机图形学,以及OpenGL
安东time
比技术更重要的是人品
展开
-
arcball原理 旋转视图 关键点总结 及代码
旋转轴arcball原理前期计算是在相机视角下,所以计算出来的旋转轴也在相机视角下,所以要把旋转轴向量变换到世界坐标系。变换步骤:假设旋转轴是一个过相机坐标系原点的单位向量(也可以看做一个坐标点),利用view矩阵的逆矩阵将这个坐标点变换到世界坐标系中,得到新的坐标点然后减去世界坐标系中相机的位置(相机坐标系的原点),就可以得到世界坐标系中的旋转轴。世界坐标系中的上向量当使用lookAt函数的时候需要一个世界坐标系的上向量,很多教程给的(0,1,0)向量,但是如果一直使用这个向量,当利用arcball原创 2021-02-12 21:53:46 · 749 阅读 · 0 评论 -
Qt OpenGL 问题总结
如果没有刷新新的图形试一下makecurrent()和donecurrent()函数,虽然文档里说会自己调用makecurrent()函数,但是手动调用一下更有保证。不要轻易重写 QOpengGLWidget的resizeEvent()函数,说明文档里的要求...原创 2020-07-13 16:12:01 · 922 阅读 · 0 评论 -
一个相机变换系统
相关实现及原理:这里原创 2020-06-11 10:24:35 · 137 阅读 · 0 评论 -
arcball 鼠标 相机转动
利用arcball原理来是相机在某个半径旋转,而且相机的目标方向永远指向最初的目标方向,就是类似于相机在球面上旋转并且始终指向球心。直接上程序流图和代码。arcball原理还有相关的旋转矩阵在上一篇文章有介绍:这里程序流图:主函数: /* arcBallRotate 函数说明: 给定单位化后,鼠标在屏幕上的偏移量,计算在arcball原理下,相机实际位置的变换,并改变相机的实际位置 参数说明: double x : x方向偏移量 double y原创 2020-06-10 18:24:38 · 551 阅读 · 0 评论 -
三维点到平面的投影
原创 2020-05-21 17:46:31 · 2223 阅读 · 0 评论 -
Opengl :公转与自转
首先opengl 的模型视图 其实就是一个变换矩阵,这个变换矩阵 讲视图变换和模型变换综合到了一起,最后形成一个变换矩阵,乘以模型的局部坐标点就可以得到在相机眼中的位置。理解opengl的公转和自传首先要理解opengl的关于矩阵变换函数。从上面opengl指南中我们可以发现就是先乘的矩阵(先写出来的矩阵变化代码)实际上在最后的计算中是最后乘的。接下来看两个变换代码: glPushM...原创 2020-04-27 19:27:47 · 2680 阅读 · 0 评论 -
GL_RGBA和GL_RGB的差别
原创 2020-04-17 18:20:53 · 2524 阅读 · 0 评论 -
opengl AUX_RGBImageRec
AUX_RGBImageRec 包含于 glaux.h中。使用glaux.h时需要再链接库中连接上glaux.lib,但是编译的时候可能出现错误:_sscanf,该符号在函数 _GetRegistrySysColors@8 中被引用这时在链接库的依赖项添加:legacy_stdio_definitions.lib使用AUX_RGBImageRec 如果出现内存泄漏 ,一般是因为忘记dele...原创 2020-04-16 14:16:25 · 1317 阅读 · 2 评论 -
opengl glad.h和 glu.h
glad文件是一个包含了gl和glu的一些函数的文件,不能同时混合使用#include<glad/glad.c>和 #include<gl/glu.h>,这样会报错,应该是程序里出现了两套不同的opengl函数系统,做到只包含其中一个库就可以,包含系统的glu.h是不要忘了吧glu32.lib库文件加入到连接器中的依赖项上。...原创 2020-04-01 19:58:49 · 2065 阅读 · 0 评论 -
openGL认识
openGL相关的库第一种库是与设备相关的负责输入输出的库比如glfw第二种是与调用openGL核心函数相关的库如gladopenGL的版本openGL3.3 之前的版本是老版本,固定管线openGL3.3 之后是新版本没有固定管线。所以老版本中的函数会出现glMatrixMode(GL_PROJECTION)这种函数,表明你在设计管线中哪个部分的矩阵,而新版本中则没有了。这个管线其实...原创 2020-03-31 23:27:11 · 100 阅读 · 0 评论 -
光照Phong模型
显示一个物体的颜色需要考虑三个使物体产生颜色的缘由。第一是环境光,环境光是物体展示的颜色可以看作物体材料本身的颜色,一般其亮度比较弱。第二是光源发出的光在物体表面进行漫反射使其发光,一般发光面积比较大,产生的视觉颜色是物体材质的颜色加强版。第三是镜面反射光,镜面反射光面积比较小,聚焦在一小块有非常强的亮度,几乎等同于光源本身的光强。一个物体最终让人看见的颜色就是上面三种颜色的叠加。编程实现...原创 2020-03-27 22:22:51 · 407 阅读 · 0 评论 -
ZBufeer算法
ZBuffer是像空间消隐算法,首先在三维空间中记住物体的深度信息,将物体投影到二维平面后,用一个全局的缓冲器存储每个像素对应的Z值,这样只绘制距离相机最近的表面。关键是要有一个缓冲器,然后是计算每个像素对应的Z值,这个Z值是在相机坐标系下的距离。坐标转换bool CCamera::getZbufferPoint(CPoint3D& ScreenPoint, CPoint3D&am...原创 2020-03-10 00:28:40 · 2822 阅读 · 1 评论 -
边表法
边表法是用来绘制填充一个面的,边表法的关键是边表和连接边表的扫描线。对于边的描述利用边表数据结构,包含边与扫描线的交点x坐标,边的最大y坐标,这样可以知道边加入到哪些扫描线上,便还有一个指针来记录扫描线上其它边。//边数据结构#pragma once#ifndef __CAETZ__#define __CAETZ__#include "pch.h"#include "CPoin...原创 2020-03-10 00:24:57 · 1926 阅读 · 0 评论 -
面消隐
主要是根据右手定则判断一个面的法式量,这样对于一个封闭的几何体,它的面法矢量总是朝外的,再确定一个相机视矢量(用相机的位置和要观察的面中心位置确定),将这两个向量点乘,通过判断向量夹角与90度的关系可以确定面是否消隐。bool CSphere::checkIfShow(CFace &face, CCamera& camera){ //获取面上三个点的坐标 CPoint3D ...原创 2020-03-10 00:16:38 · 99 阅读 · 0 评论 -
球体模型建立
构建球体模型主要的数据结构是点表*pointList 和面表 *faceList,两个数据结构都是指针,首先利用void createPointList()函数创建点表,球面的参数方程如下,可以通过构建很多离散点,最后用这些离散点构建三角形面片,生成球面。void CSphere::createPointList(){ int NBeta = (int) (180 / this->b...原创 2020-03-10 00:15:21 · 2072 阅读 · 0 评论 -
鼠标 ArcBall 局部坐标系 旋转模型
坐标系统关键词:世界坐标系 模型坐标系 相机坐标系 模型坐标系到世界坐标系的变换举证,世界坐标系到相机坐标系的变换举证,透视投影,成像面与屏幕的比例映射一般在计算机图形显示中,我们需要三个坐标系构成一个坐标系统。分别是世界坐标系,局部坐标系(模型坐标系),相机坐标系。我们一开始建立模型的时候都是在模型坐标系(局部坐标系下完成的),然后我们通过局部坐标系到世界坐标系的变换矩阵,把局部坐标系中的模...原创 2020-02-24 18:17:14 · 750 阅读 · 0 评论 -
OpenGL点选
原创 2020-01-02 11:18:01 · 532 阅读 · 0 评论 -
OpenGL函数:wglCreateContext
见参考文档:https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-wglcreatecontext转载 2019-11-30 23:15:29 · 641 阅读 · 0 评论 -
OpenGL画图设备上下文与MFC设备上下文的对应
参考:https://blog.csdn.net/qq_22822335/article/details/50913214HGLRC:图形操作描述表。OpenGL Render Contex。在Windows下用GDI作图必须通过DC调用相应的函数;用OpenGL作图也是类似,OpenGL函数是通过Render Context完成三维图形的绘制。Windows下的窗口和设备上下文支持“位图格式”...转载 2019-11-30 22:51:20 · 184 阅读 · 0 评论 -
OpenGL整体概念
原创 2019-11-28 17:19:49 · 69 阅读 · 0 评论 -
OpenGL:carmer
参考资料:https://learnopengl-cn.github.io/01%20Getting%20started/09%20Camera/lookat 矩阵的创建lookat矩阵其实就是View矩阵,它的xyz坐标方向和model坐标的方向是相近的(既没有相对的坐标轴),而且它的观察是-z之后的空间。这两点可以通过三个坐标轴的计算过程得到横移的实现根据坐标轴计算,把横移改成以下方式...原创 2019-11-24 21:19:11 · 129 阅读 · 0 评论 -
Qt OpenGL环境配置的问题
Qt下"error:LNK2019:无法解析的外部符号 _imp_glXXXXXX"报错的处理网上的解决方案一般如下:但是我的C盘下找不到这个对应的lib库,弄了好久突然发现,我把windows SDK 安装在了以下目录:D:\Windows Kits\10\Lib\10.0.17134.0\um\x86一直没找到。。。。。。。太难了。。。...原创 2019-11-24 21:09:44 · 268 阅读 · 0 评论 -
OpenGL 坐标变换
参考资料:正射投影:https://www.cnblogs.com/hackpig/p/5790379.html透射投影:https://blog.csdn.net/linuxheik/article/details/78969526原创 2019-11-21 21:41:21 · 168 阅读 · 0 评论 -
OpenGL:纹理Textures
参考资料:https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/学习笔记,不一当作参考教程,上面的参考资料是比较详细的参考教程文章目录生成纹理生成纹理对象绑定纹理对象为绑定的纹理对象设置环绕,过滤方式设置环绕尝试使用只对一个轴操作,和对两个轴操作的不同之处设置过滤方式邻近过滤线性过滤多级纹理加载并生成纹理应用...原创 2019-11-21 13:43:59 · 268 阅读 · 0 评论 -
OpenGL:着色器shader
参考资料:https://learnopengl-cn.github.io/01%20Getting%20started/05%20Shaders/着色器基本描述首先看一个着色器#version version_numberlayout (location = 0) in type in_variable_name;layout (location = 1) in type in_va...原创 2019-11-20 16:04:01 · 128 阅读 · 0 评论 -
OpenGL:画三角形程序详解笔记
参考官网教程:https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/原创 2019-11-19 17:05:39 · 116 阅读 · 0 评论 -
计算机图形学OpenGL学习笔记一:画三角形,正方形和球形
本笔记参考MOOC课程:华中科技大学 万琳老师的 《计算机图形学》 实验部分内容。用OpenGL画一个简单三角形教程连接:https://github.com/chenandongtime/OpenGL/blob/master/%E5%AE%9E%E9%AA%8C%EF%BC%9A%E7%BB%98%E5%88%B6%E4%B8%89%E8%A7%92%E5%BD%A2%EF%BC%88%E...原创 2019-11-18 20:32:58 · 3960 阅读 · 3 评论