着色器¶
:类 Shader 负责处理顶点着色器和片段着色器的编译,以及在 OpenGL 中创建程序。
待处理
添加更多关于着色器的完整文档。
头文件包含¶
在 1.0.7 版本加入.
在创建Shader时,Kivy总会包含默认参数。如果你不想在每次自定义或编写新着色器时重写这些参数,可以添加“$HEADER$”标记,它将被替换为相应的着色器头部。
这里是片段着色器的头部:
#ifdef GL_ES
precision highp float;
#endif
/* Outputs from the vertex shader */
varying vec4 frag_color;
varying vec2 tex_coord0;
/* uniform texture samplers */
uniform sampler2D texture0;
uniform mat4 frag_modelview_mat;
顶点着色器的头部:
#ifdef GL_ES
precision highp float;
#endif
/* Outputs to the fragment shader */
varying vec4 frag_color;
varying vec2 tex_coord0;
/* vertex attributes */
attribute vec2 vPosition;
attribute vec2 vTexCoords0;
/* uniform variables */
uniform mat4 modelview_mat;
uniform mat4 projection_mat;
uniform vec4 color;
uniform float opacity;
单文件GLSL着色器程序¶
在 1.6.0 版本加入.
为了简化着色器管理,顶点着色器和片段着色器可以从单个GLSL源文件(纯文本)中自动加载。该文件应包含分别以“---vertex”和“---fragment”开头的行标识的部分(不区分大小写),例如:
// anything before a meaningful section such as this comment are ignored
---VERTEX SHADER--- // vertex shader starts here
void main(){
...
}
---FRAGMENT SHADER--- // fragment shader starts here
void main(){
...
}
Shader 的 source 属性应设置为 glsl 着色器文件(格式如上所述)的文件名,例如 phong.glsl。
- class kivy.graphics.shader.Shader(unicode vs=None, unicode fs=None, unicode source=None)¶
基类:
object- 参数:
- vs:字符串,默认为 None
顶点着色器的源代码
- fs:字符串,默认为 None
片段着色器的源代码
- fs¶
片段着色器源代码。
若您设置了新的片段着色器代码源,它将自动编译并替换当前的片段着色器。
- source¶
GLSL 源代码。
source 应为包含顶点和片段着色器源代码的 glsl 着色器文件名,其中每个部分由一行以“--VERTEX”或“--FRAGMENT”(不区分大小写)开头的节标题标识。
在 1.6.0 版本加入.
- success¶
指示着色器是否成功加载并可供使用。
- vs¶
顶点着色器源代码。
若您设置了新的顶点着色器代码源,它将自动编译并替换当前的顶点着色器。