zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决
    Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作
    Android OTA升级(2):开启升级过程
    Android OTA升级(1):编译升级全包
    XMind
    How To Build CyanogenMod For Huawei Honor 5X ("kiwi")
    想把cm移植到自己的手机上,有没有大神可以教教 谢谢
    SEEM: simulation experimental environments for mobile applications in MANETs: poster
    【Henu ACM Round#16 B】 Bear and Colors
    【Henu ACM Round#16 C】Graph and String
  • 原文地址:https://www.cnblogs.com/monnRedShine/p/3116478.html
Copyright © 2011-2022 走看看