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

网站做漏洞扫描费用北京丰台区

网站做漏洞扫描费用,北京丰台区,wordpress 运行天数 小工具,苏州建站模板平台文章目录 OpenGL 简述特点和功能主要组件OpenGL ES当前状态 OpenGL ES 在 Android 上进行视频帧渲染总体流程 OpenGL 简述 OpenGL#xff08;Open Graphics Library#xff09;是一个跨平台的、语言无关的应用程序编程接口#xff08;API#xff09;#xff0c;用于开发生… 文章目录 OpenGL 简述特点和功能主要组件OpenGL ES当前状态 OpenGL ES 在 Android 上进行视频帧渲染总体流程 OpenGL 简述 OpenGLOpen Graphics Library是一个跨平台的、语言无关的应用程序编程接口API用于开发生成二维和三维图像的应用程序。这个API广泛用于计算机图形渲染包括视频游戏、CAD计算机辅助设计、虚拟现实等领域。OpenGL 是由 Silicon Graphics Inc.SGI在1992年首次引入并由 Khronos Group 目前负责维护。 特点和功能 OpenGL 的核心特点和功能包括 跨平台OpenGL 可以在多种操作系统上运行包括 Windows、macOS、Linux、iOS 和 Android。这使得开发者可以编写一次代码多平台部署。 底层硬件加速OpenGL API 允许直接利用底层硬件如图形处理单元或 GPU加速图形渲染过程从而实现高效率的图形输出。 广泛的应用由于其高效和灵活的特性OpenGL 被广泛应用于游戏开发、专业图形设计和科学可视化等多个领域。 版本和扩展OpenGL 随着时间发展推出了多个版本每个版本都增加了新的特性和改进。此外它支持扩展机制允许硬件制造商实现并支持超出核心规范的新功能。 主要组件 OpenGL 的架构包括多个主要组件例如 渲染管线OpenGL 定义了一个复杂的渲染管线该管线描述了从原始顶点数据到最终图像的转换过程。这包括变换、光照、着色和光栅化等步骤。着色器从 OpenGL 2.0 开始引入了着色器Shader程序允许开发者通过编写顶点着色器和片元着色器来自定义渲染效果。着色器是用 GLSLOpenGL Shading Language编写的。纹理OpenGL 支持多种纹理技术可以将图像或其他模式应用于三维物体表面以增强视觉效果。 OpenGL ES OpenGL ESEmbedded Systems是 OpenGL 的一个子集专门针对移动设备和嵌入式系统优化。它删除了一些不适用于这些平台的特性同时保持了核心功能使其在资源受限的设备上运行得更高效。OpenGL ES 在智能手机和平板电脑上非常流行是许多移动游戏和应用的图形标准。 当前状态 随着 Vulkan 的推出由 Khronos Group 推出的另一种新的图形API许多开发者和公司开始转向使用 Vulkan因为它提供了更好的控制和效率特别是在多核心设备上。然而由于 OpenGL 的广泛支持和成熟性它仍然在许多项目和系统中被广泛使用。 OpenGL ES 在 Android 上进行视频帧渲染 总体流程 使用 OpenGL ES 在 Android 上进行视频帧渲染涉及以下主要步骤 初始化 OpenGL ES 环境 创建一个 GLSurfaceView 并将其添加到布局中。创建一个自定义的 GLSurfaceView.Renderer 类并实现其接口方法如 onSurfaceCreated、onSurfaceChanged 和 onDrawFrame。 加载和编译着色器 编写顶点着色器和片段着色器用于处理和显示视频帧数据。使用 OpenGL ES 的 API 加载、编译并链接这些着色器。 创建纹理 创建一个或多个纹理对象用于存储视频帧数据。使用 glGenTextures、glBindTexture 和 glTexImage2D 等函数初始化纹理。 设置纹理参数 配置纹理的过滤和包装参数例如 GL_TEXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER、GL_TEXTURE_WRAP_S 和 GL_TEXTURE_WRAP_T。 上传视频帧数据到纹理 在每次需要渲染新的视频帧时将解码后的 YUV 数据上传到纹理中。通常 Y、U、V 分量分别上传到不同的纹理单元中。 绘制视频帧 在 onDrawFrame 方法中将纹理绑定到片段着色器中并绘制一个矩形通常是两个三角形构成来显示视频帧。 释放资源 在适当的时候释放 OpenGL ES 资源如纹理和着色器。 下面是一个简单的代码示例展示了如何使用 OpenGL ES 渲染视频帧 public class VideoRenderer implements GLSurfaceView.Renderer {private int[] textures new int[3]; // YUV 分量的纹理private int program;Overridepublic void onSurfaceCreated(GL10 gl, EGLConfig config) {// 加载和编译着色器String vertexShaderCode uniform mat4 uMVPMatrix; attribute vec4 vPosition; attribute vec2 aTexCoord; varying vec2 vTexCoord; void main() { gl_Position uMVPMatrix * vPosition; vTexCoord aTexCoord; };String fragmentShaderCode precision mediump float; uniform sampler2D Ytex; uniform sampler2D Utex; uniform sampler2D Vtex; varying vec2 vTexCoord; void main() { vec3 yuv; yuv.x texture2D(Ytex, vTexCoord).r; yuv.y texture2D(Utex, vTexCoord).r - 0.5; yuv.z texture2D(Vtex, vTexCoord).r - 0.5; gl_FragColor vec4(mat3(1.0, 1.0, 1.0, 0.0, -0.39465, 2.03211, 1.13983, -0.58060, 0.0) * yuv, 1.0); };int vertexShader loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode);int fragmentShader loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);program GLES20.glCreateProgram();GLES20.glAttachShader(program, vertexShader);GLES20.glAttachShader(program, fragmentShader);GLES20.glLinkProgram(program);GLES20.glUseProgram(program);// 创建纹理GLES20.glGenTextures(3, textures, 0);for (int i 0; i 3; i) {GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[i]);GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);}}Overridepublic void onSurfaceChanged(GL10 gl, int width, int height) {GLES20.glViewport(0, 0, width, height);}Overridepublic void onDrawFrame(GL10 gl) {GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);// 上传 YUV 数据到纹理updateTextures();// 绘制视频帧GLES20.glUseProgram(program);// 绑定纹理for (int i 0; i 3; i) {GLES20.glActiveTexture(GLES20.GL_TEXTURE0 i);GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[i]);}// 绘制矩形drawRectangle();}private void updateTextures() {// 在这里上传解码后的 YUV 数据到纹理}private void drawRectangle() {// 在这里绘制矩形使用顶点和纹理坐标}private int loadShader(int type, String shaderCode) {int shader GLES20.glCreateShader(type);GLES20.glShaderSource(shader, shaderCode);GLES20.glCompileShader(shader);return shader;} }
http://www.hkea.cn/news/14392157/

相关文章:

  • 章丘公司做网站厦门小型网站建设
  • wordpress中文网站模板用爱奇艺会员做视频网站违法吗
  • 论坛网站建设价格免费空白简历模板word
  • 库尔勒网站建设价格定制型网站怎么做
  • 创造网站的软件注册一个空壳建筑公司
  • 做网站和做系统有什么不同网站开发使用天气api
  • 中天建设集团山西分公司网站郑州做公司网站
  • 外包网站全国商城网站建设
  • 太仓市建设招标网站cms网站建设技术
  • 张家界住房和城乡建设局网站中德合作项目
  • 营销型网站建设与网页设计在网站上上传文件需要怎么做
  • 做网站预付款 怎么做账怎么做发卡网站
  • 深圳手机移动网站开发wordpress的代码在哪里修改
  • 做网站怎么弄网页设计公司网站设计
  • 网站推广方式推荐用php做网站需要什么
  • 哪里有建站代理加盟网络空间服务商
  • 有没有免费的推广网站页面设计总结
  • 自己怎么建个网站赚钱吗阿里云免费网站备案
  • 做淘客的网站都有哪几个哪个网站可以做纸箱
  • 单机网页游戏网站微网站开发
  • 网站产品二级分类网页设计公司未来三年规划费用
  • 前端网站开发框架沈阳大型网站设计公司
  • 邯郸建设局公开网站公司网站建立教程
  • 东城网站建设公司360建站公司
  • 百度注册新账号seo搜索引擎优化什么意思
  • 建设论坛网站步骤百度开发者
  • 微网站如何做微信支付宝支付宝支付宝在设计赚钱的网站
  • 设计制作个人网站地产网站建设方案
  • 公司网站怎么做网站备案珠海建设局网站首页
  • 手机网站怎么搜索引擎网站开发视频会议插件