OpenGl中surfaceview opengl是什么

2934人阅读
Android(23)
Surface是Android对后台缓冲区的抽象,它是一块在应用和SurfaceFlinger之间共享的内存区域。所有的Android界面,在往屏幕上绘制内容前,都需要先获得一个或者多个Surface,然后使用2D(SKIA)或者3D(OpenGL ES)引擎往这个缓冲区上绘制内容。内容绘制结束后,通知SurfaceFlinger将内容渲染到屏幕(Frame Buffer)上去。
本文不打算深入SurfaceFlinger的工作原理,仅着眼于2D/3D应用对Surface的使用,以增加对Android Surface的理解。
在Android里面,应用对Surface的使用主要有三个步骤:
1,初始化 Surface。初始化过程通常分为下述几个过程:
SurfaceComposerClient,建立和SF的连接。其通信接口由Client表达。
SurfaceControl,使用Client对象和SF通信,创建Layer和GraphicsBuffer。
Surface,创建通信接口UserClient,用于管理客户端和SF之间使用的Buffer状态,如前后台。
设定后台缓冲地址,设定了后台缓冲区地址后,绘图引擎就可以直接在这个缓冲区绘图了。
2,应用使用2D/3D绘图引擎在Surface的后台缓冲区绘图;
3,绘图结束,告知SF将Surface渲染到屏幕上。
在后台缓冲区绘图时,2D引擎SKIA需要维护一个SkCanvas的绘图上下文。OpenGL ES在后台缓冲区绘图时其实也有一个绘图上下文,用对象ogles_context_t描述,不过客户端通常接触不到这个对象。其实SKIA和OpenGL 都是有限状态机,绘图上下文就是用来记录这个状态机的当前状态。
后台缓冲区绘图的绘图行为可以描述为:绘图引擎根据当前的绘图上下文,用绘图原语在后台缓冲区绘图的过程。
初始化 Surface和绘图结束两个步骤中, SKIA和OpenGL的差异很有意思。后文会重点解释。
1.&&&&&&初始化 Surface
从上面两个序列图来看,SKIA和 OpenGL操作Surface的初始化过程,在形式上是很类似的。
2.&&&&&&绘图结束
对于2D 应用,绘图结束使用函数Surface::unlockAndPost来通知SurfaceFlinger。
对于OpenGL应用,则是通过eglSwapBuffers来通知SurfaceFlinger。
Surface::unlockAndPost
mLockedBuffer-&unlock//没找到相应实现
Surface::queueBuffer,将当前Surafce插入ready队列,并通知SF将其渲染到屏幕。
eglSwapBuffers
egl_window_surface_v2_t::swapBuffers
egl_window_surface_v2_t::unlock//没找到相应实现
Surface::queueBuffer(nativeWindow-&queueBuffer),将当前Surafce插入ready队列,并通知SF将其渲染到屏幕
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:221507次
积分:3397
积分:3397
排名:第7149名
原创:94篇
转载:31篇
评论:52条& Android游戏开发26:论SurfaceView与GLSurfaceView的效率
Android游戏开发26:论SurfaceView与GLSurfaceView的效率
&&&&&& 做游戏引擎总是倾向于使用OpenGL,这是为什么呢?本文就简单跟大家分析说明下。&&&&&& 如今国外游戏基本上质量都很好,不管是从视觉上、操作上还是流畅度上,那么今天我们关注的是流畅度。&&&&&& 首先有经验的游戏开发者,尤其是一直做2D游戏开发的童鞋门,从J2me到Android,很多做Android的都是从J2me过来的,那么对于J2me-3D开发的基本很少,原因不多说,对于Kjava的机器我也没什么再喷的,反正我是受够折磨了。&&&&&&&很多开发者对外国的游戏狠感慨,为什么他们做的游戏都是那么流畅,不丢帧,其实很明确的跟大家说,他们的大部分游戏都是基于OpenGL进行的开发,不管是3D还是2D。下面详细说下原因:&&&&&& 对于刚接触Android游戏开发的来说,首先印在心理的就是利用画布进行游戏开发(除3D游戏外),那么开发过程中,越来越多的开发者都开始对Android的运行内存产生怀疑(Android运行内存相对于Kjava的机器那可是大了很多),因为都开始再次关注内存的使用,动不动就卡,就OOM,~很经典的Error~&&&&&& 一般2D游戏开发使用SurfaceView足够,因为它也是google专们扩展用于2D游戏开发的画布。但是很早前我做过测试:&&&&&& 使用普通的游戏画布(Android中2D专用游戏画布)中进行绘制图片,然后在GLSurfaceView(Android中3D游戏专用画布)中渲染图片的对比中发现GLSurfaceView的效率是SurfaceView的30倍~呵呵,高了30倍的效率~这是什么概念,可想而知。GLSurfaceView的效率高主要是因为机器硬件的GPU加速,现在flash技术也有了GPU加速技术。&&&&&& 下面总结一下:&&&&&& 一般2D游戏使用SurfaceView足够,毕竟我之前公司做的网游就是用SurfaceView做的,很流畅,所以不要认为什么都要使用GLSurfaceView(OpenGL),而且&& GLSurfaceView的弊端在于适配能力差,因为很多机型中是没有GPU加速的。关于GPU童鞋门不知道的自己百度,这里不多说了。&&&&&& 不管是做什么游戏,对于开发者而言,流畅是最重要的;再好的游戏几帧左右,谁都哭。&&&&&& 不管使用SurfaceView还是GLSurfaceView,只要内存优化做的好,都基本无差(排除2D\3D游戏差异)。希望不管当前你是否看了此文章想将当前的项目换个GLSurfaceView框架还是如何如何,我都希望你静下心来,好好的优化你的内存先,不要总把问题推到SDK和硬件上,毕竟google提供了那就肯定不会那么低效率的,否则人家也不会闲着没事给你整那么多事情来。&&&&&& 对于初学者千万不要顾虑这些,对你来说,游戏的思想是最重要的,多做项目才是王道。
本文发布:
本文地址:
发布:鸡啄米
&&( 22:19:11)&&( 21:51:9)&&( 22:15:3)&&( 21:6:0)&&( 22:48:25)&&( 20:58:54)&&( 21:42:35)&&( 18:57:44)&&( 21:47:12)&&( 22:42:8)
完全随机文章Android平台下OpenGL初步
每天15篇文章
不仅获得谋生技能
更可以追随信仰
Android平台下OpenGL初步
作者:hilarysky ,发布于
本文只关注于如何一步步实现在Android平台下运用OpenGl。
1、GLSurfaceView
GLSurfaceView是Android应用程序中实现OpenGl画图的重要组成部分。GLSurfaceView中封装了一个Surface。而android平台下关于图像的现实,差不多都是由Surface来实现的
2、Renderer
有了GLSurfaceView之后,就相当于我们有了画图的纸。现在我们所需要做的就是如何在这张纸上画图。所以我们需要一支笔。
Renderer是GLSurfaceView的内部静态接口,它就相当于在此GLSurfaceView上作画的笔。我们通过实现这个接口来“作画”。最后通过GLSurfaceView的setRenderer(GLSurfaceView.Renderer
renderer)方法,就可以将纸笔关联起来了。
实现Renderer需要实现它的三个接口:onSurfaceCreated(GL10
gl, EGLConfig config)、 onSurfaceChanged(GL10 gl, int
width, int height)、onDrawFrame(GL10 gl)。下面就这三个接口的具体意义做个简单的介绍。
2.1、onSurfaceCreated
此方法看名字就知道它是在Surface创建的时候被调用的。因此我们可以在这个函数的实现中做一些初始化的工作。例如取出文房四宝、铺好画布、调好颜料之类的。它的函数原型如下:
public abstract void onSurfaceCreated
(GL10 gl, EGLConfig config)
第二个参数在文档中没有关于它的任何public方法和域。因此我们可以不用管它。
第一个参数非常重要。如果说Renderer是画笔的话,那么这个gl参数,就可以说是我们的手了。如何操作这支画笔,都是它说了算!所以我们绝大部分时候都是通过这个叫做gl的手来指挥Renderer画图的。
2.2 onSurfaceChanged
当GLSurfaceView大小改变时,对应的Surface大小也会改变。值得注意的是,在Surface刚创建的时候,它的size其实是0,也就是说在画第一次图之前它也会被调用一次的。(而且对于很多时候,Surface的大小是不会改变的,那么此函数就只在创建之初被调用一次而已)
原型如下:
public abstract void onSurfaceChanged
(GL10 gl, int width, int height)
同样的,画图的手是必需的。
另外值得注意的是,它告诉了我们这张纸有多高多宽。这点很重要。因为在onSurfaceCreated的时候我们是不知道纸的宽高的,所以有一些和长宽相关的初始化工作还得在此函数中来做。
2.3 onDrawFrame
好了,我们的初始化工作做得差不多了,那么现在就是该真刀真***画画的时候了!此函数就是真正给你画画用的。每调用一次就画一幅图。可能的疑问是这个函数什么时候会被调用呢?最开始的时候肯定是会被调用的。以后会有两种模式供你选择:
1.RENDERMODE_CONTINUOUSLY
2.RENDERMODE_WHEN_DIRTY
第一种模式(RENDERMODE_CONTINUOUSLY):
连续不断的刷,画完一幅图马上又画下一幅。这种模式很明显是用来画动画的;
第二种模式(RENDERMODE_WHEN_DIRTY):
只有在需要重画的时候才画下一幅。这种模式就比较节约CPU和GPU一些,适合用来画不经常需要刷新的情况。多说一句,系统如何知道需要重画了呢?当然是你要告诉它……
调用GLSurfaceView的requestRender ()方法,告诉它,你脏了。
这两种模式在什么地方设置呢? GLSurfaceView的setRenderMode(int
renderMode)方法。 可以供你设置你需要的刷新模式。
还是来看看这个函数的原型吧: public abstract void
onDrawFrame (GL10 gl) 很简单,只有手。
3、 Android下OpenGL绘图基本流程:
我们从画一个三角形开始说起:
3.1 MyRender
经过前面的介绍,我们应该知道现在需要做的事,就是写好Renderer的三个接口方法。
我们需要重新写一个类实现它,然后重写这三个方法。
class MyRender implements GLSurfaceView.Renderer
OK,笔已经拿好了。“铺好纸”是非常关键的一步。虽然我们说GLSurfaceView就是我们作图的纸,但是“铺”好这张纸,却也非常的重要。
下面我们重点讲下,这纸该怎么铺。OpenGL这张纸可不是一般的纸啊。最起码,它是三维的。然而实际的显示屏幕却是一个平面。所以这纸还不好“铺”。
首先,不一定整张纸都用来作画吧,Surface不一定全部都用上(当然,一般情况下我们是全部用上的)。那么我们需要计划好,哪部分区域用来作画。
gl.glViewport(0, 0, width, height);
根据这里的参数width和height,我们可以知道这个宽高需要在onSurfaceChanged里得知。
然后,这一步很关键。如何在平面上画三维坐标的点或图形呢?OpenGL有一个坐标系,如下图:
我们需要将这个坐标系和我们的GLSurfaceView里的Surface做一个映射关系。
glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glFrustumf(-400, 400, -240, 240,
0.3f, 100);
glMatrixMode(GL10.GL_PROJECTION); 是说我们现在改变的是坐标系与Surface的映射关系(投影矩阵)。
下一句 gl.glLoadIdentity(); 是将以前的改变都清掉(之前对投影矩阵的任何改变)。
glFrustumf (float left, float right,
float bottom, float top, float zNear, float zFar) 这个函数非常Powerful。它实现了Surface和坐标系之间的映射关系。它是以透视投影的方式来进行映射的。
透视投影的意思见下图:
映射说明:
1、 前面一个矩形表示的是我们平面作图的范围。即Surface的作图范围。它有四条边,我们将它们暂时命名edgeLeft、edgeRight、edgeTop、edgeBottom。
2、 glFrustumf 参数中的left、right、bottom、top指的是作图范围的四条edge在OpenGL
x = -400的位置。同理top、right、bottom的值表示的是edgeRight、edgeTop、edgeBottom这几条边在坐标系中的位置。
3、 上面第二点定出了作图范围的x和y的范围。那么对于3D的OpenGL这张纸来说,我们还需要定出z的范围。首先,要想象一下,相机或者眼睛在坐标系的哪个位置?
默认的眼睛的位置在OpenGL坐标的原点处(0,0,0)。视线方向是平行于Z轴往里看。
near表示的是眼睛到作图平面的距离(绝对值哦!),far表示眼睛到最远可见处的平面范围。于是,默认情况下z的作图范围就是在-near到-far的位置。
4、 好了,我们已经确定好x、y、z方向的作图范围了。回过头来,就可以发现,这张“立体”的纸,是一个方椎体切去头部的平截头体。我们所画的物体坐标落在这个区域范围内的部分将可以被我们看到(即在屏幕里画出来)。OK,至此,我们把纸终于铺好了。
glMatrixMode函数的选项(参数)有后面三种:GL_PROJECTION,GL_MODELVIEW和GL_TEXTURE;
GL_PROJECTION,是投影的意思,就是要对投影相关进行操作,也就是把物体投影到一个平面上,就像我们照相一样,把3维物体投到2维的平面上。这样,接下来的语句可以是跟透视相关的函数,比如glFrustum()或gluPerspective();
GL_MODELVIEW,是对模型视景的操作,接下来的语句描绘一个以模型为基础的适应,这样来设置参数,接下来用到的就是像gluLookAt()这样的函数;
GL_TEXTURE,就是对纹理相关进行操作;
顺便说下,OpenGL里面的操作,很多是基于对矩阵的操作的,比如位移,旋转,缩放,所以,
这里其实说的规范一点就是glMatrixMode是用来指定哪一个矩阵是当前矩阵,而它的参数代表要操作的目标:
GL_PROJECTION是对投影矩阵操作;
GL_MODELVIEW是对模型视景矩阵操作;
GL_TEXTURE是对纹理矩阵进行随后的操作;
3.2 画图之前先构图
Android 的 OpenGL 作图,不同于一般的作图,这点我们不得不感慨。它将数据和画完全分开来。例如,我们要画一个三角形。很显然,三角形有三个点。我们在画图之前首先要构图,比如每个点在哪个地方。我们将这些数据放在一个一个数组缓冲区中,放好这些数据之后,再统一一起画出来。
下面,主要讲下,如何将顶点数据和颜色数据放入符合 Android OpenGL
的数组缓冲区中。
首先我们要明白的是,OpenGL 是一个非常底层的画图接口,它所使用的缓冲区存储结构是和我们的
java 程序中不相同的。Java 是大端字节序(BigEdian),而 OpenGL 所需要的数据是小端字节序(LittleEdian)。所以,我们在将
Java 的缓冲区转化为 OpenGL 可用的缓冲区时需要作一些工作。
byte 数据缓冲区
不管我们的数据是整型的还是浮点型的,为了完成 BigEdian 到 LittleEdian
的转换,我们都首先需要一个 ByteBuffer。我们通过它来得到一个可以改变字节序的缓冲区。
ByteBuffer mBuffer = ByteBuffer.allocateDirect(pointCount*dimension*4);
mBuffer.order(ByteOrder.nativeOrder());
注意,我们应该用“allocateDirect”来分配内存空间,因为这样才可以
order 排序。最后我们就可以通过:
resultBuffer = mBuffer.asFloatBuffer();
resultBuffer = mBuffer.asIntBuffer();
将字节缓冲区转化为整型或者浮点型缓冲区了。
3.3 终于画图了!
有了前面所有的准备工作之后,有一个好消息可以告诉你,我们终于可以画图了!而且,有了前面这么多工作,真正画图的工作其实比较简单。
3.3.1、清理好你的纸
前面我们说过了,在画图之前,一定要把纸给清理干净喽:
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
另外,之前我们在映射坐标系的时候,用了glMatrixMode(GL10.GL_PROJECTION);来指定改变的是投影矩阵。那么现在要画图了,所以我们需要指定改变的是“视图矩阵”:
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
3.3.2、启用数组
我们的前面说过,画图的数据都放在数组缓冲区里,最后再一起传过来作画。那么我们首先要告诉
OpenGL,我们需要用到哪些数组。例如我们需要顶点数组和颜色数组:
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
3.3.3、指定数组数据
我们前面已经构造好了我们的数据缓冲区,floatBuffer(或 IntBuffer)。现在我们只需要将这个数据缓冲区和对应的功能绑定起来就好了:
gl.glVertexPointer(3, GL10.GL_FLOAT,
0, VertexBuffer);
gl.glColorPointer(4, GL10.GL_FLOAT,
0, colorBuffer);
这两句话分别绑定了顶点数据数组和颜色数据数组。其中第一个参数表示的是每个点有几个坐标。例如顶点,有
x、y、z值,所以是 3;而颜色是 r、g、b、a 值,所以是 4。
3.3.4、画图!
gl.glDrawArrays(GL10.GL_TRIANGLES, 0,
第一个参数指明了画图的类型——三角形(android 似乎只支持画三角形、点、线,不支持画多边形)。后面两个参数指明,从哪个顶点开始画,画多少个顶点。
OK!至此,我们的第一个三角形就画出来了,来看看效果吧。
更多课程...&&&
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
|&京ICP备号&京公海网安备号Surface 3评测:仅适合轻办公价格有优势
[摘要]总的来说Surface 3虽然性能较差,但其他方面都能令人满意,只适合预算不多办公需求较轻的用户。
腾讯数码讯(周硕)就在Surface Pro 3连创销售佳绩,人们甚至开始期待下代Pro 4长什么样子何时会到来的时候,Surface 3却不经意到来。于是人们迅速转移视线,将目光投向这款全新的Surface产品上来。虽然同样定位入门级的Surface,但Surface 3相比之前的二代最突出的变化就是采用了新的英特尔处理器,从而使得新的Surface 3能够运行完整的Win8.1和即将到来的Win10系统,这个关键性的切实的提高了生产力,也从侧面印证了微软对于RT系统失败的认识。那么究竟新的Surface 3体验如何,相比较目前在售的Surface Pro 3是否值得购买,不妨与我一同来探。外观:与Surface Pro 3一脉相承 做工精湛之前在评测Surface Pro 3的时候,我就曾经对其做工的改变赞不绝口,我认为那是微软对Surface系列产品设计认识一个质的改变,微软学会了如何像一样将质量好性能优异的产品兼顾时尚元素能够更多的符合大众审美。其实这种情况被完整的沿袭到了新的Surface 3上面。甚至当我打开包装的一刹那,有那么一秒钟觉得自己是在开一台Surface Pro 3。机身的做工精湛,这个评价绝不是空谈,相比较之前两代Surface傻大黑粗的感觉,新的Surface Pro 3和Surface 3改变了机身的材质,使用了全新的美铝合金材质,并加之以独特的阳极氧化工艺,使整个三代Surface的机身表面摸上去非常有“塑料感”,这样金属良好的韧性与非金属的触感得以完美结合。视觉上新的材质接近于灰白色,给人更加干净大气的印象。不管是走在哪带着它,只会让你更加品味气质,而之前我使用Surface Pro 2的时候,将又黑又又厚带出门展示在众人面前的时候有一种说不出来的羞耻感,长期使用之后机身的边角还会有明显的掉漆情况。从实用意义角度来说,新的材质让用户冬天带着Surface 3你不会在拿上手的瞬间觉得冰凉,夏天携带Surface 3则会更好的感到机身传导热量,这也可以说是新的材质所带来的根本性的改变。与前代Surface 2 10.6英寸设计不同,新的Surface 3机身更加方正屏幕的尺寸达到了10.8英寸,而并没有采用Surface Pro 3的12英寸设计。由于搭载了全新的英特尔Atom x7处理器,其机身的厚度和重量得以进一步缩减。重量仅为622g,相比Surface 2的680g有58g缩减,缩减比例达到8.5%。因为Surface Pro 3的机身尺寸更大,所以其实就更没有可比性了,重量800g已经超出了Surface 3近180g。在厚度方面,Surface 3可以直接被定义为史上最薄的Surface,其厚度仅为8.7mm,而上一代Surface 2的厚度则为8.9mm,Surface Pro 3则达到9.1mm。所以如果你对以往的Surface 2或者是Surface Pro 3的便携性并不满意,那么Surface 3一定会是不错的选择。另外很多人会喜欢拿Surface系列与苹果的MacBook作比较,那么咱们就以苹果最新发布的12英寸新MacBook来说,其重量为920g,厚度达到13.1mm,如果算裸机(不带键盘Cover)那么Surface 3的622g拥有绝对优势。即使是以苹果的iPad Air与Surface 3裸机做对比,二者其实也相差无几。所以从便携性方面去考量,我们其实就会发现Surface 3诞生的意义:其拥有媲美苹果iPad的便携性以及可以成为替代笔记本的轻办公需求,同时价格又比Surface Pro 3便宜,想必这也是很多人对新的Surface 3异常关注的最核心原因。细节:支架可三级变换 锁屏键和音量键易混淆因为采用了英特尔的Atom x7处理器,所以该机整体的功耗水平是十分低的,性能的定位也比目前英特尔的Core-M处理器更低一个级别。所以搭载Atom x7处理器的产品并不需要内置风扇去散热。所以如果你正在考虑入手Surface 3,那么就无需担心它是否有风扇噪音或是长时间使用的灰尘问题。在接口的设计上Surface 3在机身上集成了1个USB3.0接口、1个miniDP接口、1个microUSB充电口、1个microSD卡槽,它们大部分集中在机身的右侧,也就是竖屏之后的底部,只有microSD卡槽被安排在翻盖的支架当中。值得一提的是miniDP接口是能够方便用户外接显示器使用的,相比单一USB3.0接口的设计更具扩展性,对用户有非常重要的意义。总体来讲,接口方面Surface 3基本上与Surface Pro 3保持了相同的扩展性并没有定位更低或者售价更便宜而在这方面减配。比较细心的朋友或许发现了Surface 3充电接口采用microUSB设计,而不是Surface系列惯用的磁吸式,之所以简化为这样是因为Atom x7处理器的确功耗很低,搭载了它的Surface 3在充电方面我们完全可以像对待普通平板一样对待。不过我的确很难理解,为什么采用microUSB接口还要把接口做的那么大,较大的插头给受到外界挤压提供了更多的机会,完全可以采用更小尺寸的弯插去进行连接。目前在售的Surface Pro 3支架存在单手开启扭曲变形的问题进入到三代,不管是Surface Pro 3还是Surface 3都将苹果锁屏键和音量键直接放在了机身的顶端(竖屏时候的右侧),这与之前的一代和二代产品都放在产品的右上部位方便右手操作完全不同。而相比较Surface Pro 3锁屏键在左上角,而音量键在机身左侧(竖屏时候的顶端)的设计,锁屏键与音量键的位置十分接近,且形状材质触感都非常接近,所以在刚刚上手的横屏模式使用过程中会导致误触。我在刚刚开始Surface 3使用的这段时间,对两个按键的位置不太熟悉,所以经常在希望调整音量的时候按成了锁屏键,虽然这不会造成什么严重的问题,但是的确影响了使用的效率。或许经过长时间的使用,混淆误触的情况会有所改善。对于支架的设计,似乎微软一直在改变。从一开始Surface支架只支持一级调节、后来升级为二级角度调节、再后来Surface Pro 3上面甚至改成了无级自由调节,而新的Surface 3却改为三级角度调节。看来支架的角度调节问题一直在困扰微软的设计师,他们还是在探索如何是一个最好的设计。表面上看,从Surface Pro 3的无级平滑调节转变为Surface 3的三级角度调节是档次降低了的,相比较无级调节三级调节肯定是在使用的自由度上会受到一定限制。但其实用过Surface Pro 3朋友会发现,无级调节支架在使用的时候会有一定的扭曲,和左右转轴受力的不平衡,从这个角度上来说,或许Surface 3的三级支架调节也可以被看作是保持较好使用体验的同时完全避免了支架扭曲的问题。究竟微软的设计师是从成本方面去考虑降低翻转级数,还是的确从支架的实际表现上去做了改变,我们不得而知,唯一能确定的事实就是Surface 3相比Surface Pro 3支架只支持三级调节,使用的自由度低了一些,但是支架扭曲的问题消失了。相比之前的几代Surface,新的Surface 3在机身上的改变还包括背部的Logo。之前的几代产品通常是采用较为低调的激光刻印工艺将“视窗”Logo或是Surface标志打在上面,而新的Surface 3则采用了模具抠槽,镶嵌光亮金属贴的设计来体现,应急的时候还可以用来照“镜子”。正方形的“视窗”Logo也是首次现身在Surface系列产品中。作为史上最轻薄的Surface,Surface 3在摄像头方面的改变也是有目共睹,前置350万像素摄像头和后置800万像素摄像头很好的区别了用户拍摄行为的区别。而定位更高级的Surface Pro 3则前后摄像头均是500万像素。相比之下似乎新的Surface 3设计更为科学。就实用的感受上来讲,Surface 3摄像头的表现算是中规中矩并没有令人惊艳的感觉,弱光依然是噪点明显。考虑到日常使用中我们很少会举着个10英寸的平板玩艺术创作,我觉得对摄像头的追求没必要过于认真。屏幕:显示效果好 长宽比变为3:2从第一代Surface开始,屏幕都是其非常重视的重要部件,微软从未考虑过给任何一款Surface配备1080p分辨率以下的烂屏幕。所以即便定位更加低端的Surface 3也同样不可能,甚至Surface 3的屏幕分辨率还有一个小幅的提升,从标准的1080p分辨率升级为分辨率。或许有的朋友又要感叹了“微软真不够意思,就只有这么一点点升级。”其实这部分朋友我想你们理解错了,升级分辨率不是目的,仅仅是为了填补更改的屏幕长宽比服务的而已。之前的Surface都基本采用较为常见的16:10设计,而从第三***始,微软似乎有意将Surface这个系列产的屏幕长宽比做的更“方正”,从而获得一种“小而见大”的办公体验。所以之前问世的Surface Pro 3屏幕分辨率为,长宽比同为3:2。其实一直以来Surface系列的屏幕选用都是令人放心的,不仅屏幕的细腻程度能够令人满意,而且颜色的艳丽程度也比较饱满,没有IPS屏幕常见的发白的感觉。可以说除了因为机身较小而损失的分辨率之外,在屏幕整体的表现上相比较Surface Pro 3完全不差。当然只要是触屏的Windows产品一定无法回避的问题便是屏幕显示与缩放的种种不足,搭载Windows 8.1的Surface 3也不能例外,在使用PS这种常用软件的时候,软件当中的按钮会被缩放到十分小的状态,令人苦不堪言。不过据微软描述,在夏天即将推出的Win10上面,这个问题有望得到彻底的改善,或许我们可以寄希望于Surface 3在更新了Windows 10之后拥有更良好的屏幕缩放表现。性能:满足日常办公不成问题 使用中存在系统Bug在核心性能硬件配置方面,Surface 3搭载了Atom x7-z8700四核四线程处理器,该处理器是一款定位于大尺寸平板和二合一设备的处理器产品,虽然Core-M也同样可以用在二合一和大尺寸平板上面,但是在性能层级上面,x7是低于Core-M一级的,所以我们应该对Surface 3的实际性能有个心理预期。作为一款定位轻办公的产品,我们不能对Surface 3有更多要求,尤其是它还仅仅搭载Atom x7处理器,该处理器的性能定位于Core-M之下,所以使用Surface 3来做一些大型的办公项目,或是玩大型的游戏是非常不理智的。在日常的使用当中,我使用Surface 3最常用的功能是用txt写文字、PS修图、上网,就这种使用程度来说Surface 3是十分流畅的。不过为了给更多没有上手过Surface 3的观望着以参考,我们还是对它来一番简单的测试,以帮助您判断它的性能表现在什么层级。在测试中,我会以定位更高级的Surface Pro 3作为参照。首先我们来看下处理器的表现,在这里我们使用权威的测试软件CINEBENCH R15对Surface 3进行实测。CINEBENCH是业内公认的一款基准测试软件,在国内外的主流媒体的多数系统性能测试中都能看到它的身影。它使用该公司针对电影电视行业开发的Cinema 4D特效软件引擎,可以测试CPU和显卡的性能。其中单颗核心和多颗核心的测试是单独计算得分的,除此之外其还提供了OpenGL的测试。在这次测试中,Atom x7-z8700处理器得到了83cb的多核处理分数,和30的单核处理分数。相比较Surface Pro 3所搭配的i5-4300U,性能差不多是i5-4300U的40%左右。这样较大的性能差距在平时的浏览网页、看电影操作的时候可能并不是很明显,但是如果常用PS、3Ds Max、压缩解压缩这种耗费CPU资源较高的处理的时候,你就会感受到明显的等待时间上的差距。存储方面,Surface 3采用采用了64GB/128GB两种容量的eMMC存储,相比较Surface Pro 3的64GB/128GB/256GB/512GB四种容量SSD设定还是显得简化了,这肯定是有为了控制成本的一些考量。采用eMMC存储方式,虽然相比机械键盘会有一定优势,但是距离SSD还是差了很多。我们通过AS SSD测试软件对这台送测的128GB版本工程样机进行了实际的读写速度测试。测试结果也支持了以上的判断,写入速度仅仅有33MB/s,而读取速率则为143MB/s。根本没法和Surface Pro 3的155MB/s写入、461MB/s读取的速率相比。这也体现在后面测试的《英雄联盟》***和载入当中,光是***游戏就花掉了15分钟,我也是醉了。低画质下最高31帧平均15-25帧显示核心是集成在CPU当中的核显,由于整个处理器的热设计功耗仅为2W,核显的实际性能其实我是打了一个大大的问号的。不过当我真正载入到《英雄联盟》的时候,我惊呆了!中等画质下,游戏居然还可以有15-20帧左右的帧数表现。将画面效果调整到极低的程度之后,画面的帧提升为25帧左右,要求不高的话勉强可以凑合凑合。所有显示内容变成“负片效果”屏幕显示和触控出现明显偏移值得一说的是,在使用过程中,这台送测的工程样机实际上是出现了几次不同程度的罢工的,或许是与系统匹配兼容的问题。虽然工程样机不代表正式上市机型,但是值得购买了上市机型的用户去着重观察,是否会有同样的问题。续航:能够满足长时间办公需要因为整机的功耗非常低,官方给出了10小时续航的标准值。此前对Surface Pro 3评测当中,其达到了7-8小时的续航水平。所以我们有理由相信,Surface 3能够拥有比Surface Pro 3更优秀的续航能力。实际上手验证过程中,整机从上午10点开始计时,我开始断断续续的使用它运行本文当中的测试、浏览网页、***软件等操作,一直持续到下午的15点。这段时间内电池的电量从40%下降到32%,电量仅仅耗费了8%。所以如果你也像我的使用频率一样去做日常的普通办公操作,电池的续航表现是一定会令你满意的。配件:扩展Dock功能强大 键盘Cover手感不错此次除了拿到还未上市的工程样机Surface 3之外,新的键盘Cover和扩展Dock也颇具亮点。Surface系列产品之所以称之为Surface,我想很大的一个因素要归功于它的键盘Cover分体设计,所以当你购买一款Surface的时候,我想很少有人会只选购机身而不要键盘Cover。新的键盘Cover实际上只是在Surface Pro 3配套Cover基础上进行了尺寸上的调整,而在键盘手感和实体触控板的设计上实际上并没有特别多的出入。相比较二代Cover,键帽的键程进一步增加,弹性更加突出是新的Cover留给我的印象,我想使用它来进行文字操作应该算是一种比较愉快的体验。随着新版Surface一同发布的还有新的扩展Dock,扩展底座作为接口较少的Surface的强大的扩展,提供了2个USB3.0接口、2个USB2.0接口、1个网口、1个miniDP接口、可以说如果配备了Dock使用,那么基本上就无需担心外接扩展设备接口紧张的问题了。但是桌面Dock是需要电源支持的,而且本身非常厚重,所以几乎只能用来桌面使用。值得一说的是,Dock不仅支持Surface 3而且也支持目前在售的Surface Pro 3,使用时需要首先连接机身右侧的miniDP接口和USB接口,再将机身从左侧插入。而且在使用Dock的情况下,键盘的使用也是完全不耽误的,而且Dock的左侧还设计有磁力区域方便用户将手写笔磁吸在机身左侧。顺便教你个小技巧,如果未来你看到Surface Pro 4如果在机身右侧的同样位置设计了miniDP和USB3.0接口,那么基本可以断定其同样支持Dock连接。总结:值得需求不高预算有限的用户选购回顾整个评测的过程,我对新的Surface 3印象还是比较不错的。体现在与Surface Pro 3一样精湛的机身做工,清晰的屏幕显示、使用流畅的键盘Cover这些方面,相信和我一样将Surface 3用来当做移动轻办公的终端一定会有不错的体验。不过搭载Atom x7-z8700处理器,注定Surface 3只是一款低端的入门的轻办公设备。如果你的办公需求较重,那么请考虑更高端的Surface Pro 3。另外价格上,Surface 3定价3888元,配键盘Cover也仅仅才4K多元,相比较Surface Pro 3机身就是5688元起,这也是Surface 3巨大的优势。总的来说,Surface 3只适合预算不多办公需求较轻的用户,而不适合做重度办公和游戏玩家考虑。
[责任编辑:shuozhou]
还能输入140字
Copyright & 1998 - 2016 Tencent. All Rights Reserved

参考资料

 

随机推荐