当前位置: 首页> 教育> 就业 > OpenGL3.3_C++_Windows(13)

OpenGL3.3_C++_Windows(13)

时间:2025/8/2 12:55:01来源:https://blog.csdn.net/sengyongan/article/details/139817837 浏览次数:0次

demo演示

demo演示

面剔除

  1. 当我们都以逆时针绘制三角形顶点,那么从三角形的背面看就是顺时针,
  2. 面剔除正是根据这个原理,glEnable()首先启用,glCullFace()改变需要剔除的面类型(只剔除背向面,只剔除正向面,剔除正向面和背向面)
  3. glFrontFace()指定将正GL_CW/逆GL_CCW时针定义为正面

帧缓冲

  1. 帧缓冲定义:颜色缓冲,模板缓冲,深度缓冲,这些缓冲结合起来
  2. 我们可以定义自己的缓冲,也就是说我们能够定义我们自己的颜色缓冲,甚至是深度缓冲和模板缓冲,我们目前所做的所有操作都是在默认帧缓冲的渲染缓冲上进行的
  3. 作用:通过创建我们自己的帧缓冲,我们可以获得额外的渲染目标(纹理,渲染缓冲对象)
  4. 创建和绑定帧缓冲到GL_FRAMEBUFFER目标上(帧缓冲可以分别绑定到读取目标或写入目标)
  5. 完整帧缓冲:附加至少一个缓冲(颜色、深度或模板缓冲),至少有一个颜色附件(纹理)(我们可以附加多个颜色附件)还可以有其他附件(渲染缓冲对象),每个缓冲都应该有相同的样本数
  6. 创建和绑定帧缓冲到GL_FRAMEBUFFER
  7. 创建纹理附件:
    1. 当把一个纹理附加到帧缓冲glFrameBufferTexture2D的时候,所有的渲染指令将会写入到这个纹理中,
    2. 为帧缓冲创建一个纹理,data参数传递了NULL,仅仅分配了内存而没有填充它,其中我们还可以将维度设置为了屏幕大小,并不关心环绕方式或多级渐远纹理
    3. glFrameBufferTexture2D()参数:
    4. 帧缓冲的目标类型,附加的附件类型(颜色附件GL_COLOR_ATTACHMENT,深度GL_DEPTH_ATTACHMENT和模板附件GL_STENCIL_ATTACHMENT),附加的纹理类型,要附加的纹理对象标识符,多级渐远纹理的级别
  8. 创建渲染缓冲对象附件:
    1. 它会将数据储存为OpenGL原生的渲染格式,它变为一个更快的可写储存介质。然而,渲染缓冲对象通常都是只写的,所以你不能读取它们
    2. 创建渲染缓冲对象附件和绑定到GL_RENDERBUFFER,它经常用于深度和模板附件,只关心深度和模板测试,不需要对它们进行采样
    3. glRenderbufferStorage创建一个深度和模板渲染缓冲对象(),GL_DEPTH24_STENCIL8作为内部格式,,24位的深度和8位的模板缓冲。glFramebufferRenderbuffer()渲染缓冲对象附加到帧缓冲:
    4. 帧缓冲的目标类型,附加的附件类型,渲染缓冲区对象的目标类型GL_RENDERBUFFER,要附加的渲染缓冲区对象的标识符
  9. 渲染到帧缓冲附件上;
    1. 绑定这个我们自己的帧缓冲对象,深度和模板操作都会从当前绑定的帧缓冲的深度和模板附件中读取
    2. 渲染场景,绘制场景,也就是,会渲染到自己的帧缓冲对象,附加的所有附件上
    3. 由于我们使用的每个帧缓冲都有它自己一套缓冲,需要调用glClear,清除这些缓冲区的内容(其实仅清除当前绑定的帧缓冲区中的颜色缓冲区)
    4. 解绑当前自己的帧缓冲 == 绑定默认的帧缓冲,禁用深度测试,绘制一个横跨整个屏幕的四边形,将帧缓冲的颜色缓冲作为它的纹理
  10. 后期处理:
    1. 后期处理:
      1. 反相:黑白反色,1 - 帧缓冲的vec4颜色
      2. 灰度:移除场景中除了黑白灰以外所有的颜色,将纹理的rgb颜色平均化
      3. 核效果:通过增强图像中的边缘和细节来提高图像清晰度和对比度,核的中心值是负数
      4. 模糊:平滑颜色值
      5. 边缘检测:捕捉图像中的不同物体之间的边界,和锐化核非常相似
    2. 核的具体实现:
      1. 创建3*3=9的偏移位置(offset = 1.0 / 300.0;)
      2. 创建3*3kernel数组,每个颜色值,for9次,卷积运算,求和后返回最终的颜色值
    3. 卷积矩阵:
      1. 作用:卷积可以用于图像锐化、模糊和边缘检测等操作
      2. 定义:卷积矩阵image,卷积核kernel(通常3*3),卷积结果
      3. 计算步骤:
        1. 卷积核矩阵翻转 180°
        2. 将卷积核h的中心对准x的第一个元素,然后对应元素相乘后相加,没有元素的地方补0。
        3. 卷积核中心从左上角顺序地行移动,直到抵达右下角。
关键字:OpenGL3.3_C++_Windows(13)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: