着色器

:类 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

顶点着色器源代码。

若您设置了新的顶点着色器代码源,它将自动编译并替换当前的顶点着色器。