OpenGL
iaccepted
爱生活,爱算法!
展开
-
OpenGL单缓冲与双缓冲的区别
OpenGL单缓冲与双缓冲的区别:单缓冲,实际上就是将所有的绘图指令在窗口上执行,就是直接在窗口上绘图,这样的绘图效率是比较慢的,如果使用单缓冲,而电脑比较慢,pingm双缓冲,实际上的绘图指令是在一个缓冲区完成,这里的绘图非常的快,在绘图指令完成之后,再通过交换指令把完成的图形立即显示在屏幕上,这就避免了出现绘图的不完整,同时效率很高。一般用OpenGL绘图都是用双缓冲,单缓冲一原创 2014-05-22 13:34:31 · 2484 阅读 · 0 评论 -
Zonal harmonic 拟合 Spherical harmonic
LDPRT实现过程中的核心内容就是用一些列的Zonal harmonic 来拟合已知的Spherical harmonic,拟合过程用到了LBFGS来优化最小能量。由于最近比较忙,暂时在这里占位,本文会讲解Zonal harmonic 来拟合 Spherical harmonic的详细过程,项目已上传本人github。原创 2015-11-09 20:22:35 · 1741 阅读 · 0 评论 -
shadow map + vsm 总结
以前写了shadow map实现的注意事项,这篇文章吧shadow map 和 vsm放在一块总结一下。占位。原创 2015-10-25 11:03:07 · 2008 阅读 · 0 评论 -
SSAO + FXAA
现在已经完成了渲染器的屏幕空间环境光遮挡(SSAO)算法和FXAA快速反走样算法,等有时间就把其中的相关原理和其中遇到的问题进行总结发表。原创 2015-07-15 11:01:16 · 2399 阅读 · 0 评论 -
shadow mapping实现动态shadow实现记录
前段时间一直在弄一个室内场景,首先完成了render,效果还可以。然后给其加上shadow,使其更逼真。这里主要记录下在做的过程中遇到的问题。 1.是在导入场景的时候,由于场景比较大(200M)左右,所以在ios上加载这么大的场景会频繁的memorywarning,然后就会被系统kill掉。这个问题的解决方法是通过改变数据类型来达到压缩的目的。顶点的坐标double是没法改变的,如果改变会原创 2015-05-18 20:51:48 · 2419 阅读 · 0 评论 -
opengl中深度冲突问题以及几种可能的解决方案
opengl中遮挡关系是通过z缓冲区+深度测试来实现的,而z缓冲区一般都有位数限制,通常为24位,也有32位。这样在进行遮挡查询的时候,如果两个面距离非常近的话,那么这两个面的z值就可能会由于非常小而产生交替出现的现象,称为z-fighting,这就严重影响渲染质量。通常的解决方法:1.最常用的就是使用glPolygonOffset函数,对于两个非常近的面或者model我们可以将其分开原创 2015-04-04 16:21:05 · 3819 阅读 · 0 评论 -
简单一个opengl程序,2D图形移动
很早打算系统的学习一下opengl,但是由于课程以及学习算法占据了时间,一直没能开始,现在这段时间开始弄opengl了,这几天看正在看《Opengl 变成指南 第8版》,首先看了GLSL写shader。这里先使用固定管线写个简单的小例子试试,然后开始进行可编程管线。这个小例子很简单,就是在2D平面画个正方形,然后左右移动。思路很简单,主要是两个函数,draw 和 move,draw负责绘制原创 2015-02-13 22:08:15 · 6421 阅读 · 0 评论 -
opengl 绘制简单的带纹理贴图的立方体
#include #include #include #include #include #include #include "ourProgram.h"#include "SOIL.h"using namespace std;int main(){ glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);原创 2015-03-29 13:00:30 · 8246 阅读 · 1 评论 -
opengl使用现在比较常用的方法来绘制简单几何图元
上一篇文章中也使用了比较老的方法glBegin 和 glEnd的方法来绘制了简单的集合图元,现在使用比较新的而且更高效的方法来绘制简单的集合图元。这种方法与以前方法的不同点在对数据的处理上,glBegin 和 glEnd是要给出数据,然后直接来进行绘制,然而新的方法是现将数据保存到显存中,然后直接一个绘制命令,就可以直接从显卡内存中直接读取数据进行绘制,效率更高而且更方便。#include原创 2015-03-11 10:44:44 · 2006 阅读 · 0 评论 -
ios平台中glsl中shadow2DProjEXT函数的简单说明以及变换矩阵的小注意点
一.shadow2DProjEXT函数需要传入一张深度纹理和一个点的坐标(4维)1.这里首先注意的是这张纹理必须使用采样器类型为sampler2DShadow才可以,直接使用sampler2D是不行的,会出错。2.深度纹理必须设置正确的格式GL_DEPTH_COMPONENT,另外要指定相应的比较函数,可以通过glTexParameteri来设置GL_TEXTURE_COMPARE_FUN原创 2015-06-19 15:58:11 · 2455 阅读 · 0 评论