OpenGL 编程指南 (4)
1、OpenGL用户裁剪需要使用一个vertex shader的内置变量gl_ClipDistance,它是一个声明的时没有指定大小的数组,因此需要重新声明它的大小或者将它作为一个编译时的常量使用(啥意思???)。 gl_ClipDistance每一个元素对应一个平面,平面数目有限通常为8个,可以通过gl_MaxClipDistances获取平台支持的最大值。这个数组大小包括了已经启用的其它裁剪面,vertex shader必须写入所有已经启用裁剪面的距离,否则表现不可预测,通过裁剪的片元可以读取裁剪面插值后的结果。 2、transform feedback 是顶点处理结束之后,图元装配和光栅化之前的步骤,它能够重获获取顶点数据后选择性地部分或全部传递到缓冲对象中。 void glGenTransformFeedbacks(GLsizei n, GLuint* ids) void glBindTransformFeedback(GLenum target, GLuint id)//target 必须是 GL_TRANSFORM_FEEDBACK 系统有一个默认的transform feedback对象,id为0。可以同时给transform feedback对象绑定多个缓冲,也可以绑定缓冲对象的多个子块,甚至可以将统一个缓冲对象的不同子块同时绑定到不用的transform