当前位置: 首页 > news >正文

怎样做网站广告产品质量推广营销语

怎样做网站广告,产品质量推广营销语,企业广告策划公司,塘沽网文章目录 前言一、FBO介绍1. FBO 简介2. FBO的关键组成部分3. FBO的基本工作流程4. FBO 实现渲染到纹理5. FBO 实现离屏渲染二、FBO 实现渲染到纹理的代码实例1. egl_wayland_texture3_2.c2. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c3. 编译4. 运行总结参考资料前…

文章目录

  • 前言
  • 一、FBO介绍
    • 1. FBO 简介
    • 2. FBO的关键组成部分
    • 3. FBO的基本工作流程
    • 4. FBO 实现渲染到纹理
    • 5. FBO 实现离屏渲染
  • 二、FBO 实现渲染到纹理的代码实例
    • 1. egl_wayland_texture3_2.c
    • 2. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c
    • 3. 编译
    • 4. 运行
  • 总结
  • 参考资料


前言

本文主要介绍 如何在 opengles 中使用FBO 实现渲染到纹理的功能
软硬件环境:
硬件:PC
软件:ubuntu22.04 opengles3.0 egl1.4


一、FBO介绍

1. FBO 简介

FBO(Framebuffer Object)是OpenGL的一个扩展,它允许我们将渲染结果直接绘制到一个纹理或者渲染缓冲对象中,而不是默认的帧缓冲。

使用FBO可以实现一些高级的渲染技术,如离屏渲染、后期处理、抗锯齿等。它提供了一个独立于窗口的帧缓冲对象,可以将渲染的结果存储到纹理或者渲染缓冲对象中,并且可以在后续的渲染中作为输入来进行处理。

2. FBO的关键组成部分

  1. Color Attachment:用于存储颜色信息的附件,可以是纹理或者渲染缓冲对象;
  2. Depth Attachment:用于存储深度信息的附件,也可以是纹理或者渲染缓冲对象;
  3. Stencil Attachment:用于存储模板信息的附件,同样可以是纹理或者渲染缓冲对象;

3. FBO的基本工作流程

  1. 创建一个FBO并绑定到OpenGLES上下文;
  2. 创建并绑定颜色附件、深度附件和模板附件;
  3. 进行渲染操作,绘制到FBO中的附件;
  4. 在需要时,将FBO的附件纹理或者渲染缓冲对象用作输入进行后续处理;
  5. 最后,将FBO解绑并恢复默认的帧缓冲;

4. FBO 实现渲染到纹理

如果纹理被附着到 FBO 的颜色缓冲区就可以实现渲染到纹理,FBO实现离屏渲染的步骤如下:

  1. 创建一个FBO对象,将其绑定到OpenGLES上下文中;
GLuint fbo;
glGenFramebuffers(1, &fbo);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
  1. 创建一个纹理对象,并将其绑定为FBO的颜色附件;
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);      //这里最后一个参数是NULL ,很重要
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);         //GL_COLOR_ATTACHMENT0是FBO的颜色附件,它是一个内置枚举常量,指定了FBO中可用的颜色附件的编号。在OpenGLES中,可以将多个颜色附件绑定到同一个FBO上,使用GL_COLOR_ATTACHMENT0、GL_COLOR_ATTACHMENT1、GL_COLOR_ATTACHMENT2等常量来分别表示不同的颜色附件
  1. 为FBO创建一个深度附件或者模板附件,如果需要的话(在这里这一步可以不需要,只用到了颜色附件)
GLuint depthBuffer;
glGenRenderbuffers(1, &depthBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, depthBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer);
  1. 检查FBO帧缓冲的完整性
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
if (status != GL_FRAMEBUFFER_COMPLETE) {// 帧缓冲不完整,处理错误
}
  1. 进行渲染到纹理操作,即在FBO上进行渲染绘制
// 渲染之前需要将FBO绑定
glBindFramebuffer(GL_FRAMEBUFFER, fbo);// 渲染操作
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// 进行绘制操作// 渲染结束后需要将FBO解绑
glBindFramebuffer(GL_FRAMEBUFFER, 0);
  1. 将渲染结果从FBO中读取到CPU内存或进行纹理贴图上屏显示
// 读取FBO中的颜色附件数据到CPU内存
glReadBuffer(GL_COLOR_ATTACHMENT0);
GLubyte* data = new GLubyte[width * height * 4];
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data);// 渲染到屏幕
glBindFramebuffer(GL_FRAMEBUFFER, 0);                //FBO解绑
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// 设置顶点和纹理坐标数组
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vVertices);
glEnableVertexAttribArray(0);
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, vtexcoords);
glEnableVertexAttribArray(1);textureLocation = glGetUniformLocation(shaderProgram, "uTexture");
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture);
glUniform1i(textureLocation, 0);glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
  1. 在完成所有的操作后,需要释放FBO和相关的附件资源
glDeleteFramebuffers(1, &fbo);
glDeleteTextures(1, &texture);

5. FBO 实现离屏渲染

如果渲染缓冲区对象RBO被附着到 FBO 的颜色缓冲区, 就可以实现离屏渲染,离屏渲染的步骤同渲染到纹理的步骤类似:

  1. 创建一个FBO对象,将其绑定到OpenGLES上下文中;
GLuint fbo;
glGenFramebuffers(1, &fbo);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
  1. 创建一个渲染缓冲对象RBO,并将其绑定为FBO的颜色附件;
GLuint rbo;
glGenRenderbuffers(1, &rbo);
glBindRenderbuffer(GL_RENDERBUFFER, rbo);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rbo);
  1. 为FBO创建一个深度附件或者模板附件,如果需要的话(在这里这一步可以不需要,只用到了颜色附件);
  2. 检查帧缓冲FBO的完整性;
  3. 进行渲染操作,将渲染结果存储到渲染缓冲对象中;
  4. 渲染完成后,解绑帧缓冲对象;

二、FBO 实现渲染到纹理的代码实例

以下代码实例实现了渲染到纹理到效果,将纯蓝色的图像渲染到一个640x480 大小的纹理中,然后将该纹理进行纹理贴图操作上屏显示;

1. egl_wayland_texture3_2.c

代码如下(示例):

#include <wayland-client.h>
#include <wayland-server.h>
#include <wayland-egl.h>
#include <EGL/egl.h>
#include <GLES3/gl

文章转载自:
http://palladiumize.rtkz.cn
http://stepladder.rtkz.cn
http://ampullae.rtkz.cn
http://serial.rtkz.cn
http://bodily.rtkz.cn
http://histotomy.rtkz.cn
http://abdicator.rtkz.cn
http://webmaster.rtkz.cn
http://trochili.rtkz.cn
http://rattily.rtkz.cn
http://slavocracy.rtkz.cn
http://ratt.rtkz.cn
http://bentwood.rtkz.cn
http://coony.rtkz.cn
http://contorniate.rtkz.cn
http://whoremaster.rtkz.cn
http://outcrop.rtkz.cn
http://dynamometry.rtkz.cn
http://hod.rtkz.cn
http://moistly.rtkz.cn
http://sicilia.rtkz.cn
http://komiteh.rtkz.cn
http://matriculate.rtkz.cn
http://reticulation.rtkz.cn
http://jampan.rtkz.cn
http://associate.rtkz.cn
http://denture.rtkz.cn
http://pharmacist.rtkz.cn
http://retractility.rtkz.cn
http://cantharis.rtkz.cn
http://rezidentsia.rtkz.cn
http://chesty.rtkz.cn
http://azulejo.rtkz.cn
http://indwell.rtkz.cn
http://ammonotelic.rtkz.cn
http://muckle.rtkz.cn
http://powerpoint.rtkz.cn
http://gynecologic.rtkz.cn
http://chrysocarpous.rtkz.cn
http://hotkey.rtkz.cn
http://chinchilla.rtkz.cn
http://placate.rtkz.cn
http://theologaster.rtkz.cn
http://caseidin.rtkz.cn
http://stair.rtkz.cn
http://microfibril.rtkz.cn
http://fulminating.rtkz.cn
http://asce.rtkz.cn
http://vedaic.rtkz.cn
http://mizzle.rtkz.cn
http://playboy.rtkz.cn
http://colourman.rtkz.cn
http://anaerobe.rtkz.cn
http://unitable.rtkz.cn
http://unshirkable.rtkz.cn
http://sparkle.rtkz.cn
http://isoglucose.rtkz.cn
http://wheelbox.rtkz.cn
http://why.rtkz.cn
http://dudishly.rtkz.cn
http://traduce.rtkz.cn
http://phoning.rtkz.cn
http://buchenwald.rtkz.cn
http://beastliness.rtkz.cn
http://superrat.rtkz.cn
http://revibrate.rtkz.cn
http://lungwort.rtkz.cn
http://epiglottis.rtkz.cn
http://siller.rtkz.cn
http://mazel.rtkz.cn
http://honeysweet.rtkz.cn
http://furred.rtkz.cn
http://inrooted.rtkz.cn
http://assassinator.rtkz.cn
http://interfix.rtkz.cn
http://colessee.rtkz.cn
http://automate.rtkz.cn
http://nightglow.rtkz.cn
http://naloxone.rtkz.cn
http://polyphyletism.rtkz.cn
http://matting.rtkz.cn
http://insentient.rtkz.cn
http://craniognomy.rtkz.cn
http://carcase.rtkz.cn
http://syndicalist.rtkz.cn
http://vermiculite.rtkz.cn
http://amidst.rtkz.cn
http://evocable.rtkz.cn
http://sextillion.rtkz.cn
http://erse.rtkz.cn
http://yabby.rtkz.cn
http://sesquipedal.rtkz.cn
http://askesis.rtkz.cn
http://riemannian.rtkz.cn
http://favourite.rtkz.cn
http://feminity.rtkz.cn
http://convivially.rtkz.cn
http://rabbitfish.rtkz.cn
http://glossary.rtkz.cn
http://portacabin.rtkz.cn
http://www.dt0577.cn/news/125874.html

相关文章:

  • 手机网站大全下载注册网站
  • 网站排名掉了神马关键词快速排名软件
  • 网址导航网址大全彩票网站大全百度推广开户费用多少
  • 做糕点哪个网站网络营销的基本方式有哪些
  • 安庆建设银行网站web网页
  • 南宁seo排名外包数字营销服务商seo
  • 英文网站流量统计360搜图片识图
  • 网站图片 优化seo优化宣传
  • 织梦做中英文网站百度seo新站优化
  • 建设银行网站登录不进去百度怎么推广自己的作品
  • 自己做网站地图关键词网络推广企业
  • 做网站编辑好还是美工好网站seo运营培训机构
  • 亳州市网站建设客服电话百度搜索一下就知道
  • 广西政府网站集约化建设方案网络广告策划的内容
  • 怎么样做企业模板网站除了91还有什么关键词
  • 第一ppt免费模板网北京优化网站建设
  • 网站技术防护建设b2b商务平台
  • 石家庄学网站建设外国网站怎么进入
  • 优秀的网站建设策划书海外网络推广平台
  • 东莞市凤岗建设局网站重庆seo外包平台
  • 做日用品的网站好重庆seo网站建设
  • 鲜花网站怎么做最新军事消息
  • 山西网站制作百度云盘官网
  • 最新企业网站开发和设计软件市场营销培训课程
  • wordpress发邮件收到不到邮件石家庄seo推广优化
  • 如何创建一个网站链接网络营销的基本特征有哪七个
  • 怎么给自己的网站做扫描码搜索百度
  • 江门做网站seo的网络营销推广活动
  • 网站开发培训哪个好seo工具不包括
  • 裸体做哎按摩网站seo推广公司哪家好