ldpzgz

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年12月13日

摘要: pbuffer跟framebuffer功能是一样的,都是用来做渲染到一个off-screen surface上的,但是如果要做的是渲染到一个纹理上,还是使用framebuffer,效率高些。pbuffer的用途是:渲染到纹理上,随后这个纹理可以给其他API用的,比如openVG。创建pbuffer的过程跟创建窗口surface差不多的: EGLSurface eglCreatePbufferSurface(EGLDisplay display, EGLConfig config, const EGLint *attribList); 需要在attribList指定一些pbuffer的属性。 选 阅读全文
posted @ 2013-12-13 16:47 ldpzgz 阅读(1075) 评论(0) 推荐(0) 编辑

摘要: 帧缓存对象(fbo)主要是用于做渲染到纹理。opengles2.0渲染到纹理的方法有三种: 第一,使用glCopyTexImage2D或者glCopyTexSubImage2D,这两个函数,复制framebuffer中的 像素到纹理缓存里面,但这两个函数性能比较低下,并且要求纹理的尺寸必须小于等于 framebuffer的尺寸。 第二,使用一个附加到纹理的pbuffer,来执行渲染到纹理的操作。我们知道,窗口系统为我们提供 的surface必须添加到一个渲染环境里面,但是,在某些平台上要求每个pbuffer和窗口系统提供 的surface都需要一个单独的context,所以如果要渲染到pbuf 阅读全文
posted @ 2013-12-13 16:29 ldpzgz 阅读(1817) 评论(0) 推荐(0) 编辑

摘要: opengles 支持二进制shader,是为了节省在线编译的时间,但是二进制shader的移植性不好,各个厂商有自己的二进制格式。有的显卡支持在线编译,可能有的显卡只支持二进制格式的shader,检测显卡是否支持在线编译调用函数glGetBooleanv(GL_SHADER_COMPILER),如果支持在线编译shader就可以使用函数glShaderSource来指定shader在编译完shader之后,你可以调用glReleaseShaderCompiler(void)函数暗示编译器可以释放shader编译器占的资源。如果你的gpu只支持二进制格式的shader,根据opengles标准 阅读全文
posted @ 2013-12-13 16:20 ldpzgz 阅读(1329) 评论(0) 推荐(0) 编辑

2013年12月12日

摘要: opengl es 2.0只支持三种绘画单元: 三角形,直线和点精灵。 GL_TRIANGLES GL_TRIANGLES_STRIP (指定n个顶点,绘制n-2个三角形) GL_TRIANGLES_FAN (指定n个顶点,绘制n-2个三角形) GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_POINTS(这个是点精灵)设置和获得可以设置的直线的宽度: void glLineWidth(GLfloat width); GLfloat lw[2]; glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE,lw); 指定正面和背面: void. 阅读全文
posted @ 2013-12-12 17:58 ldpzgz 阅读(1263) 评论(0) 推荐(0) 编辑