summaryrefslogtreecommitdiffstats
path: root/glow/src/quad
diff options
context:
space:
mode:
authorLibravatar Richard <richardsoncusto@gmail.com>2022-01-19 22:04:53 -0300
committerLibravatar Richard <richardsoncusto@gmail.com>2022-01-19 22:08:41 -0300
commit424e1d3fda3c9e1764b567a3b05d33a9ed589fda (patch)
tree6677a55a918e75a6982e2a81e36051d704d87300 /glow/src/quad
parent230db88fb2d9454eb13bc4e260723f57f6c4dabe (diff)
downloadiced-424e1d3fda3c9e1764b567a3b05d33a9ed589fda.tar.gz
iced-424e1d3fda3c9e1764b567a3b05d33a9ed589fda.tar.bz2
iced-424e1d3fda3c9e1764b567a3b05d33a9ed589fda.zip
Add `Shader` and `Version`
to simplify and constrain `program::create`
Diffstat (limited to '')
-rw-r--r--glow/src/quad.rs7
-rw-r--r--glow/src/quad/compatibility.rs34
-rw-r--r--glow/src/quad/core.rs34
3 files changed, 32 insertions, 43 deletions
diff --git a/glow/src/quad.rs b/glow/src/quad.rs
index e965f3c9..d9f1c6ae 100644
--- a/glow/src/quad.rs
+++ b/glow/src/quad.rs
@@ -1,6 +1,7 @@
mod compatibility;
mod core;
+use crate::program;
use crate::Transformation;
use glow::HasContext;
use iced_graphics::layer;
@@ -15,12 +16,12 @@ pub enum Pipeline {
impl Pipeline {
pub fn new(
gl: &glow::Context,
- shader_version: &(String, String),
+ shader_version: &program::Version,
) -> Pipeline {
- let version = gl.version();
+ let gl_version = gl.version();
// OpenGL 3.0+ and OpenGL ES 3.0+ have instancing (which is what separates `core` from `compatibility`)
- if version.major >= 3 {
+ if gl_version.major >= 3 {
log::info!("Mode: core");
Pipeline::Core(core::Pipeline::new(gl, shader_version))
} else {
diff --git a/glow/src/quad/compatibility.rs b/glow/src/quad/compatibility.rs
index 28ad214d..76f98ab7 100644
--- a/glow/src/quad/compatibility.rs
+++ b/glow/src/quad/compatibility.rs
@@ -1,4 +1,4 @@
-use crate::program;
+use crate::program::{self, Shader};
use crate::Transformation;
use glow::HasContext;
use iced_graphics::layer;
@@ -27,29 +27,23 @@ pub struct Pipeline {
impl Pipeline {
pub fn new(
gl: &glow::Context,
- (vertex_version, fragment_version): &(String, String),
+ shader_version: &program::Version,
) -> Pipeline {
let program = unsafe {
+ let vertex_shader = Shader::vertex(
+ gl,
+ shader_version,
+ include_str!("../shader/compatibility/quad.vert"),
+ );
+ let fragment_shader = Shader::fragment(
+ gl,
+ shader_version,
+ include_str!("../shader/compatibility/quad.frag"),
+ );
+
program::create(
gl,
- &[
- (
- glow::VERTEX_SHADER,
- &format!(
- "{}\n{}",
- vertex_version,
- include_str!("../shader/compatibility/quad.vert")
- ),
- ),
- (
- glow::FRAGMENT_SHADER,
- &format!(
- "{}\n{}",
- fragment_version,
- include_str!("../shader/compatibility/quad.frag")
- ),
- ),
- ],
+ &[vertex_shader, fragment_shader],
&[
(0, "i_Pos"),
(1, "i_Scale"),
diff --git a/glow/src/quad/core.rs b/glow/src/quad/core.rs
index 274ade67..f37300f6 100644
--- a/glow/src/quad/core.rs
+++ b/glow/src/quad/core.rs
@@ -1,4 +1,4 @@
-use crate::program;
+use crate::program::{self, Shader};
use crate::Transformation;
use glow::HasContext;
use iced_graphics::layer;
@@ -22,29 +22,23 @@ pub struct Pipeline {
impl Pipeline {
pub fn new(
gl: &glow::Context,
- (vertex_version, fragment_version): &(String, String),
+ shader_version: &program::Version,
) -> Pipeline {
let program = unsafe {
+ let vertex_shader = Shader::vertex(
+ gl,
+ shader_version,
+ include_str!("../shader/core/quad.vert"),
+ );
+ let fragment_shader = Shader::fragment(
+ gl,
+ shader_version,
+ include_str!("../shader/core/quad.frag"),
+ );
+
program::create(
gl,
- &[
- (
- glow::VERTEX_SHADER,
- &format!(
- "{}\n{}",
- vertex_version,
- include_str!("../shader/core/quad.vert")
- ),
- ),
- (
- glow::FRAGMENT_SHADER,
- &format!(
- "{}\n{}",
- fragment_version,
- include_str!("../shader/core/quad.frag")
- ),
- ),
- ],
+ &[vertex_shader, fragment_shader],
&[
(0, "i_Pos"),
(1, "i_Scale"),