在OpenGL上,如何渲染ips屏幕适合打游戏吗外

OpenGL中怎样实现离屏渲染拷贝_百度知道
OpenGL中怎样实现离屏渲染拷贝
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
热心网友知道合伙人
OpenGL中,GPU屏幕渲染有以下两种方式: On-Screen Rendering 意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行。 Off-Screen Rendering 意为离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。 ...
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。「音视频直播技术」OpenGL渲染(三)「音视频直播技术」OpenGL渲染(三)端木悠奕百家号前言本文介绍一下OpenGL的基本概念。在OpenGL中,只能画三种图元,点、线、三角型。在OpenGLES2.0之后,引用也GLSL(OpenGL Shader Languge),它类似于C语言的语法。着色器类型有两种常用着色器,分别是顶点着色器(Vertex Shader)和片元着色器(Fragment Shader)。片元着色器是在顶点着色器之后被调用的。顶点着色器,每个顶点运行一次,确定生成顶点最终的位置。一但确定了位置,OpenGL将利用这些点生成 点、线、三角形。片元着色器,每个片元运行一次,它用于确定每个片元的点、线、三角形的最终颜色。片元是一个单一颜色的小矩形区域,类似于计算机屏幕上的像素。加载着色器加载着色器需要按下面的步骤进行加载:根据着色器类型,他建一个着色器。GLES20.glCreateShader(shaderType); 着色器类型包括 GLES20.GL_VERTEX_SHADER(顶点着色器)和 GLES20.GL_FRAGMENT_SHADER(片元着色器)。将着色器程序代码与上面创建的着色器绑定在一起。GLES20.glShaderSource(shader, source);。编译着色器程序。GLES20.glCompileShader(shader);可以通过 GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0); 函数获取编译结果。创建程序对象。GLES20.glCreateProgram();将编译好的着色器与上面创建的程序对象绑定到一起。如GLES20.glAttachShader(program, vertexShader);和 GLES20.glAttachShader(program, fragmentShader);最后将这们链接到一起。GLES20.glLinkProgram(program);可以通过 GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);获取链接的状态。获得着Uniform和Attribute位置着色器中的Uniform和Attribute变量是可以在着色器程序之外赋值的。在赋值之前,首先获取变量的位置。可以通过下面的方法来获取位置:获取 Uniform 位置, GLES20.glGetUniformLocation(mProgramHandle, "uMVPMatrix"); uMVPMatrix就是着色器中的 Uniform 变量。获取 Attribute 位置, GLES20.glGetAttribLocation(mProgramHandle, "aPosition"); aPosition就是着色器中的 Attribute 变量。将顶点数据与Attribute关联取得 Attribute 变量位置后,还需要将顶点数组中的数据与 Attribute 变量关联。先使 Attribute 变量可用。GLES20.glEnableVertexAttribArray(maPositionLoc);关联数据。GLES20.glVertexAttribPointer(maPositionLoc, coordsPerVertex, GLES20.GL_FLOAT, false, vertexStride, vertexBuffer);maPositionLoc: Attribute 变量位置。coordsPerVertex: 第个顶点坐标占用的数量。如x,y代表2vertexStride: 每个顶点数据的宽度。vertexBuffer: 数组着色器的数据类型着色器分为 标量,向量,距阵,采样器,结构体,数组几种类型。标量:布尔型(bool)、整形(int)和浮点型(float)等。向量:向量类型说明vec2包含了2个浮点数的向量ivec2包含了2个整数的向量bvec2包含了2个布尔数的向量vec3包含了3个浮点数的向量ivec3包含了3个整数的向量bvec3包含了3个布尔数的向量vec4包含了4个浮点数的向量ivec4包含了4个整数的向量bvec4包含了4个布尔数的向量距阵:矩阵类型mat22x2浮点数矩阵mat33x3浮点数矩阵mat44x4浮点数矩阵采样:一般情况下,一个采样器变量代表一幅或一套纹理贴图采样器sampler2D用于访问二维纹理smapler3D用于访问三维纹理samplerCube用于访问立方贴图纹理变量限定符着色器一般包括下在几种变理限定符:限定符attribute一般用于每个顶点都各不相同的量,如顶点位置、颜色等。uniform一般用于对同一组顶点组成的单个3D物体中所有顶点都相同的量,如当前光源的位置。varying用于从顶点着色器传递到片元着色器的量const用于声明常量本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。端木悠奕百家号最近更新:简介:端木悠奕,分享最新的行业资讯作者最新文章相关文章论文发表、论文指导
周一至周五
9:00&22:00
一种基于OpenGL的图像渲染加速方法
  摘要:针对图像渲染速度和CPU、GPU效率问题,在分析了基于OpenGL图像渲染技术的基础上,提出了改进OpenGL渲染流程,加入CPU监控器和任务分配器模块,让GPU和CPU根据实际情况共同分担绘图和渲染任务的构想,从而达到加速图像渲染速度的目的。经实验证明,改进的渲染流程对图像处理速度具有优化作用,是一种可行的图像渲染加速方法。 中国论文网 /8/view-2293186.htm  关键词:图像渲染;OpenGL;渲染加速;GPU;CPU   中图分类号:TP393文献标识码:A文章编号:12)01-0194-03   A Method of Speeding Image Rendering based on OpenGL   LI Shi-dan,CHEN Xing-hao   (Guangxi Electric Power Institute of Vocational Training,Nanning 530007,China)   Abstract:Aiming at the issues of image-rendering technoligy based on OpenGL.,this paper proposed a new method which set GPU and CPU together to working for image rendering through reorganizing the OpenGL rendering procedure..the proof of the experimentation show that this method can increasing the speed of the image rendering.   Key words:image-rendering;OpenGL;speeding rendering;GPU;CPU   图形图像渲染速度问题是计算机多媒体应用的重点问题。传统的方法中,如乔少杰、王有为文献[1]提出的方法,是将全部工作负担在CPU上,致使CPU高负荷运行并导致响应恶化,从性能和质量上均无法满足高质量实时处理的要求。而如NILSSON文献[2]提出的方法,主要渲染任务交给GPU完成,CPU只承担必要的程序控制,虽然使渲染速度和渲染质量都得到了优化,但是CPU的资源利用率比较低。   在现代的计算机应用技术中(特别是影视处理、虚拟现实等领域),图形的处理变得越来越重要,需要一个专门用于处理图形的处理器,这就是GPU。GPU是相对于CPU的一个概念,GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”。借助GPU实现的各种高级数学计算可在像素级别完成图像处理工作,即可满足实时响应的需要,也减轻了CPU的负担,使CPU在相同时间内执行更多的通用程序控制。其中主要的应用是科学计算可视化,即基于CPU和GPU明确任务分工实现的科学计算实时可视化[3]。CPU处理得到的数据直接输出到GPU绘图渲染核心,渲染绘制后输出到屏幕。在不损失CPU性能的前提下获得对当前处理结果的动态观测。图形渲染在天气预报、电子轨道计算、地球磁场模拟、核试验、DNA分子排布等大规模科学计算任务中扮演着重要的角色。   在乔少杰等人提出的重组渲染流程的基础上,加入了CPU监控器和任务分配器模块,搭建高速特效渲染通道的解决方案:使用OpenGL硬件加速的绘图引擎绘制图形,CPU除了必要的程序控制,还承担一定的渲染任务,从而能加速渲染速度,提高CPU的利用率。   1技术背景   1.1开发框架   Mac OS X Tiger操作系统为图形图像处理提供系统内嵌处理引擎支持,同时对开发人员开放相应的编程框架支持[5]。Cocoa是Mac OS X应用程序开发框架代号,它使用面向对象技术,封装全部系统核心架构技术的实现,为应用程序开发提供完整可靠,可扩展可维护的接口。本文的测试程序在Cocoa框架内实现。   1.2图形绘制系统   Quartz是Mac OS X核心架构图形子系统部分代号,它负责Mac OS X GUI绘图的核心任务,它由用于绘图的Quartz 2D和用于合成最终屏幕输出的Quartz Compositor组成[4]。   Quartz基于工业标准图形库OpenGL操纵CPU,使用OpenGL纹理渲染技术将输出至屏幕的图形元素合成基于PDF为成像模型基础的PostScript文本,提供锯齿平滑和高范围缩放等高级图形渲染能力[6]。Mac OS X v10.4 Tiger将Quartz技术升级为Quartz Ex? treme:Quartz 2D和Quartz Compositor均通过OpenGL获得硬件加速支持:Quartz 2D和Quartz Compositor只保留PostScript绘图指令,将需要组合的不同窗口绘制结果作为图像纹理交付CPU 2D绘图单元加速,在帧缓冲区合成最终屏幕视图输出到监视器,实现了完全借助GPU加速在图形加速卡中合成屏幕输出。          1.3图像特效引擎系统   在原有图形架构基础上,M v10.4Tiger引入使用Core Image Kemel Language语言构建的图像特效渲染引擎CoreImage。其利用GPU像素着色器处理平面像素变换,实现像素级别的高速变换与高精度浮点数据处理。通过可编程GPU消除渲染时间延迟,利用GPU矢量引擎和超标量流水线优化CPU和GPU之间的数据通路。   Mac OS X v10.4 Tiger实现从图形绘制和特效渲染的全面硬件加速;Quartz Extreme利用硬件合成图像。   2渲染流程   2.1 CPU监控器   在图形处理过程当中,CPU要么只承担基本的控制任务,要么就不加限制地承担计算和渲染等繁重任务,这就导致CPU利用率要么很低要么很高,这不但影响PC系统的性能,而且对图形处理也有很大的影响。   针对此种情况,并分析了传统的做法,本文提出了CPU监控器的概念,其主要功能是实时监测CPU的利用率,并返回精确的百分比数。具体的任务是:每隔一个时间值,探测CPU的占用率,并返回一个精确的百分值。具体流程如图1所示。   2.2任务分配器   文献[2]中提出了重组OpenGL渲染流程实现加速图形绘制和图像渲染结合的管道化方法,目的是实现GPU完全承担绘图和渲染加速,整个流程无需CPU参与,CPU占用率只占很少的比值,这在某一程度上优化了应用程序的响应能力,也保障了系统不会因为渲染任务繁重而导致无法流畅运行。但是由于所有绘图以及渲染任务都有GPU完成,而CPU却留有很多的利用空间,从图形处理这一特殊角度来看,资源利用率不高,处理速率还可以再提高。所以,本文提出了任务分配器的概念,通过任务分配器,在CPU占用率未达到一个临界值的情况下,适当地分配给CPU一定的绘图以及渲染任务,从而让CPU和GPU同时为图形处理服务,将有利于提升图像的渲染速度。   具体的做法是:任务分配器读取CPU监控器返回的结果,判断此结果是否达到某一临界值,如果为真,则放弃分配任务到CPU;如果为假,则分配一定的绘图以及渲染任务到CPU。   流程如图2所示。   2.3渲染流程   2.3.1原先的流程   文献[2]以基于OpenGL绘图指令合成的可视化动画生成工具Quartz Composer为创作素材,借助Quartz 2D、OpenGL、Core Video等技术合成丰富多彩的视觉特效,将OpenGL绘图指令组合成.qtz格式的文件导出,作为图像源,并使用基于Core Video的QuickTime引擎;使用QCRenderer类执行绘图指令;基于线程调度的实时制图方法。采用了链式迭代的特效叠加方法---核心滤镜引擎,还采用了基于OpenGL加速图像输出方法。其应用程序流程如图3所示。   2.3.2改进的流程   在原有流程的基础上,对某些任务量比较繁重的环节调用CPU监控器以及任务分配器,保证CPU临界值之内极力分担图形处理过程中的绘图以及渲染任务,从而达到加速的效果。具体流程如图4所示。   3实验分析   为了便于比较实验结果,本文实验平台以及实验素材均采用与文献   [1]的实验平台一致。   实验平台所用的计算机型号为Mac Pro:Intel Xeon 5100处理器,1GB DDR2 ECC内存,Mac OS X v10.4.9 Tiger操作系统。图形加速卡为NVIDIA GeForce 7300 GT 256MB GDDR2 SDRAM。OpenGL引擎使用NVIDIA OpenGL引擎使用NVIDIA OpenGL硬件扩展和Apple OpenGL软件实现。   为了查看CPU在图形处理过程当中承担任务的情况,采集了CPU监控器的监控一览表,如表1所示。   从表1可以看出,从图形处理开始,CPU处于正常状态,之后一直到7分38秒图形处理结束之前,CPU处于一种临界值(50%)内的利用率,说明CPU分担GPU的图形绘制以及渲染任务,图形处理结束之后,CPU回归正常状态。   为了分析应用程序运行过程的OpenGL代码执行时间,使用OpenGL Driver Monitor工具统计OpenGL驱动指令与CPU指令对图形加速卡的使用情况,表2、表3分别代表文献[1]的结果和采用改进流程后的结果。   从表2和表3的统计结果分析得出,采用改进的流程OpenGL执行的时间短,说明利用CPU分担图形处理任务在速度上得到了优化。         4结束语   针对乔少杰等人所提出的文献内容进行分析,在重新调整渲染流程的基础上,加上了CPU监控器和任务分配器,对整个作业流程进行改进,让CPU在其一定的占用率临界值内分担GPU所承担的绘图和渲染任务,保证系统性能不受影响的前提下,为图形处理服务。从实验结果上分析可以看出,改进的流程对渲染速度具有一定的优化作用,达到图像渲染加速的目的。   参考文献:   [1]乔少杰,王有为.基于OpenGL的快速图像渲染方法[J].计算机应用研究,):.   [2] NILSSON P Hardware accelerated image compositing using OpenGL[C]//Proc of Usenix’04 Annual Technical Conference.Santiago:Freenix Track.2004.   [3] NVIDIA Inc.NVIDIA OpenGL extension specifications[EB/OL]. http://developer.省略/object/nvidia―.opengl―.specs.htm1.   [4] Apple Inc.Apple OpenGL extensions specification[EB/OL].http://developer.省略/graphicsimaging/0pe“gL/extensi0ns.htm1.   [5] GELPHMAN D,LADEN B.Programming with Quartz:2D and PDF graphics in Mac OS X[M].San Francisco:Morgan Kaufmann Publi. sher,2005.   [6] DALRYMPLE M,HILLEGASS A.Advanced Mac OS X programming [M].2nd ed.[S.1.]:Big Nerd Ranch Publisher,2005.
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。Opengl离屏渲染,绘到内存bitmap,如何保持alpha通道??alpha通道数据丢失?
[问题点数:20分]
本版专家分:0
CSDN今日推荐
本版专家分:0
本版专家分:313
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐
使用该软件可以让你检测任意图片格式,png,jpeg, jpg , bmp, gif, tiff等的每个像素的rgb还有alpha通道的值。只要一动鼠标就可以检测到。
可以运行在windows, linux,mac
如果我还年轻但是却怀揣着一颗成熟的心做着老人干的事情,还要个毛青春干啥。。。。。。。。。。。
void main()
IplImage *img1,*img2;
img1 = cvLoadImage(&d:\\2.png&);
在看《VTK图形图像开发进阶》的时候,第七章中提到了Alpha合成技术,不明白是什么,所以。。。。
Alpha通道是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域,其中黑表示全透明,白表示不透明,灰表示半透明。
彩色深度标准通常有以下几种:
8位色,每个像素所能显示的彩色数为2的8次方,即
近日研究OpenCV的templateMatch,发现读取的template如果带有Alpha通道,那么templateMatch无法得到正确的结果,因此,尝试在遇到这种情况时,通过算法合并Alpha通道到BGR通道上,由于目标图像背景为纯黑,所以,这里没做其它的计算。
代码如下:/*
======================================
虽然手游内容越来越丰富,手游安装包资源包越来越大,却不能否认开发者们一直在努力地缩减资源包容量。以玩家为之痴狂的精美游戏贴图的处理为例,在多方权衡采用合理尺寸的同时,还在采用各种历史悠久的久经考验的高效压缩算法来进一步压缩贴图,譬如十数年前创立的ETC1压缩格式,依然被最广泛地应用在各种Android机器上。但是,ETC1居然不支持贴图的Alpha通道…… 多么坑爹坑娘的设定,为了这份原罪,无数可怜可爱的程序猿程序媛们要为ETC1的Alpha通道处理多一些辛劳。
今天项目上线,在iTunes Connect 里新建了项目,导入icon图片时,遇到以下问题——————-
百度后找到解决办法,在这里记录一下
双击打开有问题的图片
选择导航栏的文件–&导出
若有alpha选项被勾选,取消勾选即可,存储到桌面。现在的图片再次上传到iTunes Connect就不会有问题了
项目上线,在iTunes Connect 里新建了项目,导入icon图片时,遇到的问题是,
图像不能保护alpha通道或透明度
原截图(command+S)
解决办法一:
解决办法二
把图片用PS打开
点击ps菜单栏中的
图像/模式/索引颜色
把索引颜色小米有一个透明度的勾选框去掉,再保存发现也改变了Alpha通道为否
上架的时候你们有没有遇到过这个问题??打开图片的“显示简介”,你会发现有个叫“alpha通道”的东西,(如果是“是”你的图片就不能上架)如下图:第一种方法怎样解决。把你的图片用PS打开,如下图选择进行操作:点击“索引颜色”,会弹出一个框框,如下图,你只需要把那个勾去掉了 保存,就行了,第二种方法直接打开图片,点击导出,如图:点击导出后 会弹出这个框:然后再打开看看:
在使用opencv的python接口读取jpg,相对jpg图片透明处理时,需要处理其alpha通道
可以用时imread接口
origin_image = cv2.imread(image_path, cv2.CV_LOAD_IMAGE_UNCHANGED)
而imread的第二个参数flag代表的是是否读取alpha通道
但是有个一问题是jpg不存在alpha通道,这样后续操作会
After Effects 的色彩信息包含在三个通道中:红 (R)、绿 (G)、蓝 (B)。此外,图像还包含第四个不可见通道,即包含透明度信息的 Alpha 通道。有时,此类图像称为 RGBA 图像,指示它包含 Alpha 通道。通道概览A. 分离的颜色通道 B. Alpha 通道表现为灰度图像 C. 使用所有四个通道的合成,背景隐约显出透明区域 许多文件格式都可能包括 Alpha 通道,其中包括...扫一扫体验手机阅读
OpenGL渲染流水中的处理步骤
<span type="1" blog_id="1409821" userid='
118篇文章,8W+人气,0粉丝
大数据时代的微服务之路
¥51.00495人订阅

我要回帖

更多关于 屏幕渲染 的文章

 

随机推荐