program and Shader (glspec4.3 chapter 7)

  • 要使用shader , sahder 源码必须先装载到shader对象,然后进行编译。对于预先编译好的二进制代码也可以直接装载到shader对象。一个或多个shader对象和一个program对象相联系。program对象然后进行链接,生成可执行代码。同样的,已经链接好的代码可以直接装载到program对象。当program对象被绑定到一个shader,这个program被称为活动program对象。
  • shader stage 有 VS, TCS , TES , GS, FS, and CS.
  • shader 可以引用几种类型的变量,Uniforms 在程序运行期间为常数,
    buffer 变量和uniform类似,只是存储在buffer对象中。还有子程序uniform变量。sampler , images , output .

Shader对象

  • CreateShader(VS/TCS/TES/GS/PS/CS)
  • ShaderSource()  装载源代码
  • Compilehader()  编译  /ReleaseShaderCompiler ,释放编译器
  • DeleteShader()  删除shader对象,如果一个Shader没有program。
  • ShaderBinary 可以直接装载编译后的代码

Program 对象

  • CreateProgram
  • AttachShader(program , shader)  /DetachSader
  • LinkProgram(uint program)
  • UseProgram(uint program)
  • ProgramParameteri(program, pname , value)
  • program 接口
    • UNIFORM
    • UNIFORM_BLOCK
    • ATOMIC_COUNTER_BUFFER
    • PROGRAM_INPUT
    • PROGRAM_OUTPUT
    • VERTEX_SUBROUTINE, /TCS/TES/GS/FS/CS_SUBROUTINE
    • TRANSFORM_FEEDBACK_VARYING
    • BUFFER_VARIABLE
    • SHADER_STORAGE_BLOCK
    可以利用GetProgramResourceIndex(program , interface, *name) 来获取resource的index。
    GetProgramResourceName() 可以用来获取给定index的resource的名字。
    GetProgramResourceLocation() 可以可以用来获取程序中资源的位置。 (??)
  • program pipeline object :
  • program binary
  • uniform variables
    uniform variables can be grouped into unifomrm blocks.


本文地址: http://www.bagualu.net/wordpress/archives/2532 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注