OpenGL
文章平均质量分 53
OSevenC
随便写写
展开
-
OpenGL可视化入门:体绘制(VRT)
一个极简的使用C++和OpenGL制作的体绘制Demo原创 2022-10-16 21:56:03 · 2177 阅读 · 1 评论 -
法线的切线空间
一个原点和三个构成正交基的向量构成一个坐标系。顶点的法向量如何表示?可以保存该法向量在切线空间中的坐标切线空间的原点就是顶点的位置,构成切线空间正交基的三个向量被称为T、B、N其中N的方向是该顶点的原始法向量(根据其所在的三角形面片决定)T是该顶点的一条切线,方向是纹理坐标uB由T和N叉乘得到因为N方向(z)上的值恒为正,法线纹理仅保存x,y...原创 2021-07-09 14:39:52 · 267 阅读 · 0 评论 -
OpenGL笔记
1.渲染管线1)将顶点保存到缓存对象将顶点数据保存到OpenGL管理的一块内存中2)发送到OpenGL服务端调用绘制命令如glDrawArrays()3)顶点着色器4)细分着色器5)几何着色器6)图元装配7)剪切(clipping)8)光栅化9)片元着色器10)逐片元操作深度测试、模板测试写入帧缓存(若开启融混则以叠加的方式写入)2.着色器1)矩阵是列主序的先填充列,再填充行mat3 M1 = mat3(1.0, 2.0, 3.0, 4.0,原创 2021-07-08 14:32:18 · 251 阅读 · 0 评论 -
OpenGL与FreeImage
使用FreeImage库读图片,通过OpenGL显示出来先介绍一些FreeImage的基本函数/* 得到图像格式函数 FREE_IMAGE_FORMST fif = FreeImage_GetFileType(filename); 读图像函数 FIBITMAP *dib = FreeImage_Load(fif, filename, 0); 写图像函数 FreeImage_Sa...原创 2019-03-15 15:40:55 · 524 阅读 · 0 评论 -
VS2017+OpenGL环境配置
最终创建好的项目可以在这里获取:链接:https://pan.baidu.com/s/1XXn3LWHooRNWfYRTnj5CMQ提取码:ef95这是一个64位的项目。下面是创建过程:1.新建一个文件夹OpenGLWin2.打开VS2017,新建空项目OpenGLWin3.新建源文件main.cpp4.在解决方案文件夹(有.sln文件的文件夹)中新建文件夹glew5.在...原创 2019-03-09 16:21:22 · 1488 阅读 · 0 评论 -
OpenGL顺序无关的透明(OIT)大型链表法
1.初始化创建2D image用一个2D image来储存各个像素链表的头指针创建Pixel Unpack Buffer用一个PBO来刷新2D image创建原子计数器用一个原子计数器来记录pixel个数创建一维缓存用一个一维缓存来存储片元数据渲染刷新Image中的head指针刷新原子计数器...原创 2018-11-28 17:43:41 · 2377 阅读 · 0 评论 -
OpenGL顺序无关的透明(OIT)加权平均法
有了OpenGL渲染到帧缓存对象(FBO)和OpenGL纹理的基础,就可以用加权平均法(WA)做顺序无关的透明度(OIT)了加权平均法Pass0 PixelShader关闭深度测试,每一个像素上可能是由 i 个颜色叠加起来的,我们把它们全被加起来,记录在一张纹理(Color)上vec3( r1, g1, b1 ) * Alpha1 + vec3( r2, g2 ,b2 ) * A...原创 2018-11-20 12:38:42 · 4184 阅读 · 2 评论 -
OpenGL渲染到帧缓存对象(FBO)
窗口系统提供的帧缓存是唯一可以被图形服务器的显示系统所识别的帧缓存。也就是说,我们要想在屏幕上看到东西,就必须把它画在这个窗口系统提供的帧缓存中。1. 创建n个帧缓存对象idvoid glGenFramebuffers(GLsizei n,GLuint* ids);2.创建帧缓存对象并切换到当前帧缓存void glBindFramebuffer(GLenum target, GLuin...原创 2018-11-19 18:48:24 · 1100 阅读 · 0 评论 -
OpenGL图像(image)
在OpenGL中,图像(image)类似于一个矩阵,代表一块内存,我们在着色器中可以对它进行读写操作。它有点像单一层级的纹理,但与纹理不同,它不支持滤波、深度比较等采样操作。1.用纹理texture作为image的存储空间Shader中选择 image1D、image2D、image3D。。。GLuint tex;glGenTextures(1, &tex);glBindText...原创 2018-11-20 18:08:42 · 5552 阅读 · 0 评论 -
OpenGL纹理
void glGenTexture(GLsizei n, GLuint ids);*创建n个纹理idvoid glBindTexture(GLenum target, GLuint id);把指定纹理对象与当前启用的纹理单元以target的形式进行绑定target为 GL_TEXTURE_1D、GL_TEXTURE_2D、GL_TEXTURE_3D。。。例如要把当前的GL_TEXTURE...原创 2018-11-18 18:13:41 · 984 阅读 · 0 评论