fixed: 修复着色器编译问题
This commit is contained in:
12
src/main.rs
12
src/main.rs
@@ -33,28 +33,30 @@ fn main() {
|
|||||||
let mut render_timer = RenderTimer::new();
|
let mut render_timer = RenderTimer::new();
|
||||||
|
|
||||||
// 编译着色器
|
// 编译着色器
|
||||||
let vs_src = include_bytes!(".\\shaders\\vs.glsl");
|
let vs_src = std::ffi::CString::new(include_str!(".\\shaders\\vs.glsl")).unwrap_or_default();
|
||||||
|
println!("Vs Shader:\n{}", vs_src.to_str().unwrap_or_default());
|
||||||
let vs_ptr = vs_src.as_ptr() as *const i8;
|
let vs_ptr = vs_src.as_ptr() as *const i8;
|
||||||
let vs = unsafe { gl::CreateShader(gl::VERTEX_SHADER) };
|
let vs = unsafe { gl::CreateShader(gl::VERTEX_SHADER) };
|
||||||
unsafe { gl::ShaderSource(vs, 1, &vs_ptr as _, null()) };
|
unsafe { gl::ShaderSource(vs, 1, &vs_ptr as _, null()) };
|
||||||
unsafe { gl::CompileShader(vs) };
|
unsafe { gl::CompileShader(vs) };
|
||||||
let mut success = 0;
|
let mut success = 0;
|
||||||
unsafe { gl::GetShaderiv(vs, gl::COMPILE_STATUS, &mut success) };
|
unsafe { gl::GetShaderiv(vs, gl::COMPILE_STATUS, &mut success) };
|
||||||
if success != 0 {
|
if success == 0 {
|
||||||
let mut log = [0; 512];
|
let mut log = [0; 512];
|
||||||
unsafe { gl::GetShaderInfoLog(vs, 512, core::ptr::null_mut(), log.as_mut_ptr()) };
|
unsafe { gl::GetShaderInfoLog(vs, 512, core::ptr::null_mut(), log.as_mut_ptr()) };
|
||||||
let log_u8: [u8; 512] = unsafe { std::mem::transmute(log) };
|
let log_u8: [u8; 512] = unsafe { std::mem::transmute(log) };
|
||||||
println!("{}", from_utf8(&log_u8).unwrap());
|
println!("{}", from_utf8(&log_u8).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
let fs_src = include_bytes!(".\\shaders\\fs.glsl");
|
let fs_src = std::ffi::CString::new(include_str!(".\\shaders\\fs.glsl")).unwrap_or_default();
|
||||||
|
println!("Fs Shader:\n{}", fs_src.to_str().unwrap_or_default());
|
||||||
let fs_ptr = fs_src.as_ptr() as *const i8;
|
let fs_ptr = fs_src.as_ptr() as *const i8;
|
||||||
let fs = unsafe { gl::CreateShader(gl::FRAGMENT_SHADER) };
|
let fs = unsafe { gl::CreateShader(gl::FRAGMENT_SHADER) };
|
||||||
unsafe { gl::ShaderSource(fs, 1, &fs_ptr as _, null()) };
|
unsafe { gl::ShaderSource(fs, 1, &fs_ptr as _, null()) };
|
||||||
unsafe { gl::CompileShader(fs) };
|
unsafe { gl::CompileShader(fs) };
|
||||||
let mut success = 0;
|
let mut success = 0;
|
||||||
unsafe { gl::GetShaderiv(fs, gl::COMPILE_STATUS, &mut success) };
|
unsafe { gl::GetShaderiv(fs, gl::COMPILE_STATUS, &mut success) };
|
||||||
if success != 0 {
|
if success == 0 {
|
||||||
let mut log = [0; 512];
|
let mut log = [0; 512];
|
||||||
unsafe { gl::GetShaderInfoLog(fs, 512, core::ptr::null_mut(), log.as_mut_ptr()) };
|
unsafe { gl::GetShaderInfoLog(fs, 512, core::ptr::null_mut(), log.as_mut_ptr()) };
|
||||||
let log_u8: [u8; 512] = unsafe { std::mem::transmute(log) };
|
let log_u8: [u8; 512] = unsafe { std::mem::transmute(log) };
|
||||||
@@ -68,7 +70,7 @@ fn main() {
|
|||||||
unsafe { gl::LinkProgram(sp) };
|
unsafe { gl::LinkProgram(sp) };
|
||||||
let mut success = 0;
|
let mut success = 0;
|
||||||
unsafe { gl::GetProgramiv(sp, gl::LINK_STATUS, &mut success) };
|
unsafe { gl::GetProgramiv(sp, gl::LINK_STATUS, &mut success) };
|
||||||
if success != 0 {
|
if success == 0 {
|
||||||
let mut log = [0; 512];
|
let mut log = [0; 512];
|
||||||
unsafe { gl::GetProgramInfoLog(sp, 512, null_mut(), log.as_mut_ptr()) };
|
unsafe { gl::GetProgramInfoLog(sp, 512, null_mut(), log.as_mut_ptr()) };
|
||||||
let log_u8: [u8; 512] = unsafe { std::mem::transmute(log) };
|
let log_u8: [u8; 512] = unsafe { std::mem::transmute(log) };
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ out vec4 FragColor;
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
FragColor = vec4(0.0f, 0.0f, 0.0f, 1.0f);
|
FragColor = vec4(1.0, 0.2, 0.2, 1.0);
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user