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

手机营销型网站制作html网页制作完整代码

手机营销型网站制作,html网页制作完整代码,wordpress图片主题模板下载,如何开发微信网站文章目录 前言一、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.dnsts.com.cn/news/116535.html

相关文章:

  • 网站怎么做搜狗排名网页设计与制作课程大纲
  • 一个网站收录很高 但外链很少是什么原因深圳品牌网站制作公司哪家好
  • 网站下载视频的方法泉州响应式网站建设
  • 怎么做一款贷款网站怎么在雅虎做网站收入
  • 宁波电信网站备案小游戏代码编程
  • 长沙网站定制开发建设比较好的网站空间
  • 跨平台网站开发东莞网站推广需要多少钱
  • 成都建设网站企业电话wordpress 路径标签
  • 学生个人网页制作html动态营销型企业网站优化
  • 深圳网站工作室wordpress查询分类为空
  • 昆明网站建设公司_营销方案有哪些
  • 网站建设ps模板衡水网站建设优化推广
  • 那个做图网站叫什么美食网站建设方案
  • 如何自己做众筹网站公司网站如何做seo
  • 山东川畅科技联系 网站设计wordpress技术博客模板
  • 判断网站到期企业服务网站制作
  • 做网站优化常用工具网站内页
  • 网站服务器开发自助网站建设方案
  • 山西商城网站建设网站开发前端和后端技术
  • 商城网站开发方案书重庆电子工程职业学院招生网
  • 网站制作中企动力国内做网上旅游业务的网站
  • 成都网站开发技术百度网址大全导航首页
  • 做外单网站旅游网站建设设计
  • 关于网站开发的外文翻译用jsp做的网站在不同浏览器显示效果差异很大如何解决
  • 企业网站的网络营销功能临沂网站建设小程序
  • 电子商务网站建设 教材做网站地图
  • 哪里学网站建设与管理网站服务器搭建及配置的具体步骤
  • 前端什么证书含金量高长沙市seo百度关键词
  • 在深圳做网站平台需要什么备案网站建设怎么做账
  • 如何在网盘上做网站WordPress有哪些工具