
3D图形 OpenGL
Lion.Kuo
这个作者很懒,什么都没留下…
展开
-
OBB方向包围盒碰撞检测算法(原理与代码)
原理:OBB间的相交测试基于分离轴理论(separating axis test)。若两个OBB在一条轴线上(不一定是坐标轴)上的投影不重叠,则这条轴称为分离轴。若一对OBB间存在一条分离轴,则可以判定这两个OBB不相交。对任何两个不相交的凸三维多面体,其分离轴要么垂直于任何一个多面体的某一个面,要么同时垂直于每个多面体的某一条边。因此,对一对OBB,只需测试15条可能是分离轴的轴(每个OBB的3个面方向再加上每个OBB的3个边方面的两两组合),只要找到一条这样的分离轴,就可以判定这两个OBB是不相交的,如原创 2020-12-14 14:04:51 · 7681 阅读 · 18 评论 -
正向渲染和延迟渲染彼此之间有什么不同
如果你是一个游戏开发者,在你使用的图形引擎中或多或少都听说过forward rendering和deferred rendering。通常你必须在你的游戏中选择一种。但它们是什么,彼此之间有什么不同,我们又该如何选择呢?Modern Graphics Pipelines(现代图形管道)在开始之前,我们必须要知道一点现代可编程图形管线的一些知识。早些时候,我们被显卡的功能限制,不能去改变每个...转载 2019-08-01 10:18:49 · 2106 阅读 · 0 评论 -
左手坐标系与右手坐标系中Location,Translation,Rotation互相转换
最近做了一个ART动捕设备实时驱动UE场景中人体的功能,但是ART动捕设备产生的数据是右手坐标系的,而UE4中使用的是左手坐标系,要想使动捕数据驱动UE4场景中的人体,首先必须将原始的右手坐标系中的数据转换为左手坐标系中的数据。动捕数据有六个自由度,三个位移,三个旋转,我们分别讨论。位置(Location)与位移(Translation)位置与位移的转换是相同的,都是顶点位置,转换也比较简原创 2017-12-29 17:32:52 · 10083 阅读 · 8 评论 -
彻底搞懂四元数
提要旋转的表达方式有很多种,有欧拉角,旋转矩阵,轴角,四元素等等,今天要学习的就是游戏开发中最常用的四元素。从欧拉角和轴向角到四元数在讲四元素之前,我们先来看下简单的欧拉角和轴向角。欧拉角使用最简单的x,y,z值来分别表示在x,y,z轴上的旋转角度,其取值为0-360(或者0-2pi),一般使用roll,pitch,yaw来表示这些分量的旋转值。需要注意的是,这里的旋转是针对...转载 2017-11-09 17:28:53 · 112202 阅读 · 10 评论 -
gluPerspective注意事项
void gluPerspective ( GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);fovy为视场角度,角度越大,模型在窗口中显示出来越小,反之越大。ZNear为视景体近平面距离照相机的距离,必须大于0,一般设为0.1,这样可以在很近的距离观察模型的细节.ZFar为视景体远平面距离相机的距离,必须大原创 2020-04-02 17:14:52 · 679 阅读 · 0 评论 -
wglMakeCurrent 多线程注意问题
wglMakeCurrentwglMakeCurrent 函数设定OpenGL当前线程的渲染环境。以后这个线程所有的OpenGL调用都是在这个hdc标识的设备上绘制。你也可以使用wglMakeCurrent 函数来改变调用线程的当前渲染环境,使之不再是当前的渲染环境。 BOOL wglMakeCurrent( HDC hdc, // device context of原创 2016-09-10 13:06:19 · 6519 阅读 · 6 评论 -
OpenGL贴图颜色偏差小问题
最近做一个OpenGL渲染的小项目,渲染出来的效果颜色有偏差,偏蓝色,glColor没问题,光照没问题,材质没问题,怪了,冷静思考一下,只有在贴图的时候颜色有偏差,不显示贴图颜色没问题,可以把问题定位到贴图出问题了,到指定纹理的地方看了看,仔细检查参数,再想到我使用Opencv加载图像的,opencv的mat类的颜色通道是BGR,问题找到了,就出在这里,代码如下所示:最近做一个Open原创 2016-07-06 23:14:23 · 3340 阅读 · 1 评论 -
OpenGL Frame BufferObject(FBO)
Overview: 在OpenGL渲染管线中,几何数据和纹理经过多次转化和多次测试,最后以二维像素的形式显示在屏幕上。OpenGL管线的最终渲染目的地被称作帧缓存(framebuffer)。帧缓冲是一些二维数组和OpenG所使用的存储区的集合:颜色缓存、深度缓存、模板缓存和累计缓存。一般情况下,帧缓存完全由window系统生成和管理,由OpenGL使用。这个默认的帧缓存被称作“win转载 2016-06-20 15:32:14 · 462 阅读 · 0 评论 -
关于OpenGL的RenderBuffer,FrameBuffer
近日在学习OpenGL,被RenderBuffer,FrameBuffer,搞的晕头转向,网上找到了一些不错的文章供大家学习。看了之后神清气爽啊,有木有?1,几篇博文,写的不错http://longzxr.blog.sohu.com/168909774.htmlhttp://blog.youkuaiyun.com/wl_soft50/article/details/7916955转载 2016-06-17 18:21:59 · 3933 阅读 · 0 评论 -
OpenGL 法线自动规范化
OpenGL中,当对物体进行均匀缩放后,如果场景中有光照,那么必须以GL_RESCALE_NORMAL为参数调用glEnable函数,物体材质才能起作用,如下图所示:以GL_RESCALE_NORMAL为参数调用glEnable函数效果图没有调用上述函数效果图原创 2016-07-03 23:37:52 · 667 阅读 · 0 评论 -
GLSL vary、atrribute、in、out的区别
这个问题困扰我很久了,前一段时间面试,面试官问我GLSL中的vary、atrribute,当时我就懵逼了,一阵心虚,我只说我知道in out,应为我学的就只有in out,回来自己也查了查,GLSL中确实有vary、atrribute这么用的,但是一直没搞清楚他们与in、out的区别联系,今天看了这篇文章豁然开朗,原来是vary、attribute是老版本的GLSL中的关键字,现在已经统一使用in原创 2016-07-01 16:45:31 · 15461 阅读 · 2 评论 -
glew库初始化问题
今天用OpenGL做一个demo,用到了glActiveTexture函数,编译没有问题,但是运行到这就崩溃,到堆栈里看了看,是空指针,以为是系统glew库太老了,没有这个函数,于是下载了最新的glew库,还是不行,网上查了查,原来是glew没有初始化的原因,在main函数里调用glewInit()函数,问题解决!原创 2016-06-03 13:57:21 · 1126 阅读 · 0 评论 -
加载Obj文件并用OpenGL渲染注意问题
Obj文件中的索引数据是从1开始的,所以需要对每个索引减一原创 2016-06-01 10:51:51 · 1537 阅读 · 0 评论