Skip to content

Commit 38f7166

Browse files
committed
update Shader, take now Option<~str>, pass None if you don't use vertex or fragment shader
1 parent 03224d5 commit 38f7166

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/rsfml/graphics/shader.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -86,24 +86,24 @@ impl<'self> Shader<'self> {
8686
* Load both the vertex and fragment shaders from files
8787
*
8888
* This function can load both the vertex and the fragment
89-
* shaders, or only one of them: pass NULL if you don't want to load
89+
* shaders, or only one of them: pass None if you don't want to load
9090
* either the vertex shader or the fragment shader.
9191
* The sources must be text files containing valid shaders
9292
* in GLSL language. GLSL is a C-like language dedicated to
9393
* OpenGL shaders; you'll probably need to read a good documentation
9494
* for it before writing your own shaders.
9595
*
9696
* # Arguments
97-
* * vertexShaderFilename - Path of the vertex shader file to load, or NULL to skip this shader
98-
* * fragmentShaderFilename - Path of the fragment shader file to load, or NULL to skip this shader
97+
* * vertexShaderFilename - Some(Path) of the vertex shader file to load, or None to skip this shader
98+
* * fragmentShaderFilename - Some(Path) of the fragment shader file to load, or None to skip this shader
9999
*
100100
* Return a new Shader object
101101
*/
102102
#[fixed_stack_segment] #[inline(never)]
103-
pub fn new_from_file(vertex_shader_filename : ~str, fragment_shader_filename : ~str) -> Option<Shader<'self>> {
103+
pub fn new_from_file(vertex_shader_filename : Option<~str>, fragment_shader_filename : Option<~str>) -> Option<Shader<'self>> {
104104
let shader = unsafe {
105-
let c_vertex_shader_filename = vertex_shader_filename.to_c_str().unwrap();
106-
let c_fragment_shader_filename = fragment_shader_filename.to_c_str().unwrap();
105+
let c_vertex_shader_filename = if vertex_shader_filename.is_none() { ptr::null() } else { vertex_shader_filename.unwrap().to_c_str().unwrap() };
106+
let c_fragment_shader_filename = if fragment_shader_filename.is_none() { ptr::null() } else { fragment_shader_filename.unwrap().to_c_str().unwrap() };
107107
ffi::sfShader_createFromFile(c_vertex_shader_filename, c_fragment_shader_filename)
108108
};
109109
if ptr::is_null(shader) {
@@ -129,16 +129,16 @@ impl<'self> Shader<'self> {
129129
* writing your own shaders.
130130
*
131131
* # Arguments
132-
* * vertexShader - String containing the source code of the vertex shader, or NULL to skip this shader
133-
* * fragmentShader - String containing the source code of the fragment shader, or NULL to skip this shader
132+
* * vertexShader - Some(String) containing the source code of the vertex shader, or None to skip this shader
133+
* * fragmentShader - Some(String) containing the source code of the fragment shader, or None to skip this shader
134134
*
135135
* Return a new Shader object
136136
*/
137137
#[fixed_stack_segment] #[inline(never)]
138-
pub fn new_from_memory(vertex_shader : ~str, fragment_shader : ~str) -> Option<Shader<'self>> {
138+
pub fn new_from_memory(vertex_shader : Option<~str>, fragment_shader : Option<~str>) -> Option<Shader<'self>> {
139139
let shader = unsafe {
140-
let c_vertex_shader = vertex_shader.to_c_str().unwrap();
141-
let c_fragment_shader = fragment_shader.to_c_str().unwrap();
140+
let c_vertex_shader = if vertex_shader.is_none() { ptr::null() } else { vertex_shader.unwrap().to_c_str().unwrap() };
141+
let c_fragment_shader = if fragment_shader.is_none() { ptr::null() } else { fragment_shader.unwrap().to_c_str().unwrap() };
142142
ffi::sfShader_createFromFile(c_vertex_shader, c_fragment_shader)
143143
};
144144
if ptr::is_null(shader) {

0 commit comments

Comments
 (0)