当前位置: 首页 > 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.c2. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c3. 编译4. 运行 总结参考资料 前言 本文主要介绍 如何在 opengles 中使用FBO 实现渲染到纹理的功能 软硬件环境: 硬件:PC 软件:ubuntu22.04 opengles3.0 egl1.4 一、FBO介绍 1. FBO 简介 FBO(Framebuffer Object)是OpenGL的一个扩展,它允许我们将渲染结果直接绘制到一个纹理或者渲染缓冲对象中,而不是默认的帧缓冲。 使用FBO可以实现一些高级的渲染技术,如离屏渲染、后期处理、抗锯齿等。它提供了一个独立于窗口的帧缓冲对象,可以将渲染的结果存储到纹理或者渲染缓冲对象中,并且可以在后续的渲染中作为输入来进行处理。 2. FBO的关键组成部分 Color Attachment:用于存储颜色信息的附件,可以是纹理或者渲染缓冲对象;Depth Attachment:用于存储深度信息的附件,也可以是纹理或者渲染缓冲对象;Stencil Attachment:用于存储模板信息的附件,同样可以是纹理或者渲染缓冲对象;3. FBO的基本工作流程 创建一个FBO并绑定到OpenGLES上下文;创建并绑定颜色附件、深度附件和模板附件;进行渲染操作,绘制到FBO中的附件;在需要时,将FBO的附件纹理或者渲染缓冲对象用作输入进行后续处理;最后,将FBO解绑并恢复默认的帧缓冲;4. FBO 实现渲染到纹理 如果纹理被附着到 FBO 的颜色缓冲区就可以实现渲染到纹理,FBO实现离屏渲染的步骤如下: 创建一个FBO对象,将其绑定到OpenGLES上下文中;GLuint fbo; glGenFramebuffers(1, fbo); glBindFramebuffer(GL_FRAMEBUFFER, fbo);创建一个纹理对象,并将其绑定为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等常量来分别表示不同的颜色附件为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);检查FBO帧缓冲的完整性GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) {// 帧缓冲不完整,处理错误 }进行渲染到纹理操作,即在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);将渲染结果从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);在完成所有的操作后,需要释放FBO和相关的附件资源glDeleteFramebuffers(1, fbo); glDeleteTextures(1, texture);5. FBO 实现离屏渲染 如果渲染缓冲区对象RBO被附着到 FBO 的颜色缓冲区, 就可以实现离屏渲染,离屏渲染的步骤同渲染到纹理的步骤类似: 创建一个FBO对象,将其绑定到OpenGLES上下文中;GLuint fbo; glGenFramebuffers(1, fbo); glBindFramebuffer(GL_FRAMEBUFFER, fbo);创建一个渲染缓冲对象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);为FBO创建一个深度附件或者模板附件,如果需要的话(在这里这一步可以不需要,只用到了颜色附件);检查帧缓冲FBO的完整性;进行渲染操作,将渲染结果存储到渲染缓冲对象中;渲染完成后,解绑帧缓冲对象;二、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://www.pierceye.com/news/588602/

相关文章:

  • 推广网官方推广网站wordpress用户角色权限
  • 电子商务网站模板html淘宝网页版登录
  • 忆达城市建设游戏网站佛山市和城乡建设局网站
  • 备案后的域名改网站名青浦建设机械网站
  • 网站地图怎么做html网络营销论文2000字
  • 武进区城乡建设局网站组建网站建设团队
  • 做淘宝链接模板网站广安网站建设兼职
  • 受欢迎的网站建设平台有用的网站地址
  • 网站建设推广岗位网站建设法规
  • ftp两个网站子域名的绑定郑州网站推广公司
  • 安庆网站设计哈尔滨工程招标信息网
  • 精湛的佛山网站设计太原网站建设培训
  • 邹城市住房和建设局网站深圳比较好的vi设计公司
  • 企业网站建设维护方案一元购物网站怎么做
  • 网站建设优化公司哪家好兰州做网站公司es5188
  • jsp网站开发工资住建网查询
  • 长沙建网站需要多少钱夹江移动网站建设
  • 淄博网站制作高端网站后台任务
  • 营销型网站源码成都网站建设seo
  • 天津网上商城网站建设专业的猎头公司
  • 西平县住房城乡建设局网站西部数码网站管理助手3.0
  • 承德市网站建设WordPress电影资源分享下载站
  • 专注于网络推广及网站建设wordpress离线发布功能
  • 营销型网站案例提高wordpress打开速度
  • 怎么样做一个网站自己个人网站后台怎么做
  • 源码站免费找客户网站
  • idc空间商网站源码知名的网站建设
  • 什么叫网站降权建设网站租服务器
  • 网站后台模板怎样使用站长平台
  • 写一个app需要多少钱龙岩seo包年系统排行榜