• openGL ES 2.0 fragment shader and framebuffer


     

    openGL ES 2.0 fragment shader and framebuffer

    分类: open GL 1516人阅读 评论(2) 收藏 举报

    chapter 10

    1. 内建变量:

    gl_FragColor 用于输出,可以不写入该变量,比如你只想修改depth buffer

    gl_FragCoord 只读变量,值 (x, y, z, 1/w)

    gl_FrontFacing 内建只读变量,如果该fragment为三角形正面的一部分,该值 为真

    gl_PointCoord:只读变量,值 为point sprite的纹理坐标

    2. 内建常量:

    const mediump int gl_MaxTextureImageUnits = 8;

    系统支持的最大纹理单元个数

    const mediump int gl_MaxFragmentUniformVectors = 16;

    最大vec4 为单位的uniform变量存储大小

    const mediump int gl_MaxDrawBuffers = 1;

    最大可写入buffers,目前只支持1个

    ==========================

    chapter 11

    1.framebuffer and renderbuffer区别

    render buffer 是一个实实在在的buffer,申请后,可以用来作为color buffer, depth buffer, stencil buffer.

    framebuffer 是clolor buffer, depth buffer, stencial buffer 指针的集合,The only 2D image that can be attached to the

    stencil attachment point of an FBO is a renderbuffer object that stores

    stencil values.

    2. framebuffer中的color buffer到底是用texture还是用render buffer?

    推荐使用render buffer, 理由如下:1.某些格式不能保存为纹理对象,只能保存为render buffer。2.如果照片不是用作纹理, 保存为render buffer可以加快处理速度

    3. Framebuffer Objects 和 EGL surface的区别:1. 像素所有者测试,frame buffer永远返回真2,系统支持双buffer的 suface,不过只支持单buffer的 frame buffer 3.stencil 和 depth buffer可以在多个frame buffer中共享,而 EGL surface不行。 4 系统提供的EGL surface支持multisample buffers(?)

    4. 产生一个render buffer, frame buffer

    void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers)

    void glGenFramebuffers(GLsizei n, GLuint *ids)

    0 号 frame buffer由系统保留作系统frame buffer,即上面说的EGL surface

    5. 如何使用render buffer

    .先绑定void glBindRenderbuffer(GLenum target, GLuint renderbuffer)

    .glRenderbufferStorage指定格式和大小

    如果render buffer被attache to frame buffer,可以在attach 之后指定render buffer的格式

    6. 如何使用frame buffer

    .先绑定void glBindFramebuffer(GLenum target, GLuint framebuffer),同上,绑定的framebuffer可以没有生成,只要是未使用的frame buffer就可以,绑定成功后,成为渲染上下文的当前framebuffer。下面几个状态关联到一个frame buffer

    Color attachment point

    Depth attachment point

    Stencil attachment point

    Framebuffer completeness status

    .检测framebuffer 是否complete glCheckFramebufferStatus

    7. 删除一个render buffer时,如果该buffer 绑定在一个framebuffer上,并且 该 framebuffer是当前绑定buffer,则系统会自动datach 该render buffer,如果framebuffer 不是当前绑定buffer,则用户负责datach 该framebuffer

  • 相关阅读:
    记一次文件转码与二进制查看学习
    JAVA线程池 之 Executors (二) 原理分析
    JAVA线程池 之 Executors (一) 简介
    问题:部分mysql版本问题
    Java中一个方法字节码的长度会影响程序并发下的性能?
    AccessController.doPrivileged
    Nginx配置WebService、MySQL、SQL Server、ORACLE等代理
    C# 序列化Json时如何忽略JsonProperty(PropertyName =“ someName”)
    C# 文件上传(另一台服务器的共享目录)
    C# 导入Excel读取图片上传
  • 原文地址:https://www.cnblogs.com/monnRedShine/p/3116478.html
Copyright © 2020-2023  润新知