From 29685f8e40a8f9bdad8670df9a66dcf440a23a43 Mon Sep 17 00:00:00 2001 From: Antoine Date: Thu, 20 May 2021 20:04:16 +0200 Subject: [PATCH] swapTexWrap from pixels coordinates of the source image --- shaders/ObjectGlTexColor/frag.glsl | 2 +- src/engine/Engine.java | 16 ++++++++++------ src/engine/object/ObjectGl.java | 4 ++++ src/engine/object/ObjectGlColor.java | 2 ++ src/engine/object/ObjectGlTex.java | 14 ++++++++++---- src/engine/object/ObjectGlTexColor.java | 2 ++ 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/shaders/ObjectGlTexColor/frag.glsl b/shaders/ObjectGlTexColor/frag.glsl index 9b044ff..554ab5f 100644 --- a/shaders/ObjectGlTexColor/frag.glsl +++ b/shaders/ObjectGlTexColor/frag.glsl @@ -9,5 +9,5 @@ uniform sampler2D texture1; void main() { - FragColor = texture(texture1, vec2(-texCoord.y, -texCoord.x)) * color; + FragColor = texture(texture1, texCoord) * color; } \ No newline at end of file diff --git a/src/engine/Engine.java b/src/engine/Engine.java index 2923794..81d10de 100644 --- a/src/engine/Engine.java +++ b/src/engine/Engine.java @@ -159,9 +159,10 @@ public class Engine { List path2 = new ArrayList<>(); path2.add("textures/awesomeface.png"); - ObjectGlTex smiley = new ObjectGlTex(-200.5f,200.5f,0.0f,320.0f*6,578.0f*6, path, Primitive.stdTexWrap); - engine.add_objectGl(smiley); - smiley.translate(new Vector3f(-600.0f,0.0f,9.0f)); + ObjectGlTex zangief = new ObjectGlTex(0f,0f,0f,400f,900f, path, Primitive.stdTexWrap); + engine.add_objectGl(zangief); + zangief.translate(new Vector3f(-600.0f,-100.0f,10.0f)); + zangief.setTextureWrap(52,2,70,83); ObjectGlTex smiley2 = new ObjectGlTex(-0.5f,0.5f,0.0f,500.0f,500.0f, path2, Primitive.stdTexWrap); engine.add_objectGl(smiley2); @@ -178,11 +179,14 @@ public class Engine { lastFrame = System.currentTimeMillis(); // Game logic should fit here - input(smiley, speed); + input(zangief, speed); // input(smiley2, speed); - smiley.setTextureWrap(0,0,200,200); - //essential part v + /* + ******************** + * essential part v * + ******************** + */ engine.update(); engine.render(); diff --git a/src/engine/object/ObjectGl.java b/src/engine/object/ObjectGl.java index 4ab9484..513c13d 100644 --- a/src/engine/object/ObjectGl.java +++ b/src/engine/object/ObjectGl.java @@ -21,6 +21,8 @@ public class ObjectGl { public static Matrix4f view; public float zPos; + public float width; + public float height; public ObjectGl(){ @@ -31,6 +33,8 @@ public class ObjectGl { this.transform = Matrix4f.identity(); this.shader = new Shader("shaders/ObjectGl/vert.glsl","shaders/ObjectGl/frag.glsl"); this.zPos = z; + this.width = w; + this.height = h; } public void resetTransform(){ diff --git a/src/engine/object/ObjectGlColor.java b/src/engine/object/ObjectGlColor.java index 952105d..ef93be9 100644 --- a/src/engine/object/ObjectGlColor.java +++ b/src/engine/object/ObjectGlColor.java @@ -12,5 +12,7 @@ public class ObjectGlColor extends ObjectGl{ this.transform = Matrix4f.identity(); this.shader = new Shader("shaders/ObjectGlColor/vert.glsl","shaders/ObjectGlColor/frag.glsl"); this.zPos = z; + this.width = w; + this.height = h; } } diff --git a/src/engine/object/ObjectGlTex.java b/src/engine/object/ObjectGlTex.java index 179fa73..5423658 100644 --- a/src/engine/object/ObjectGlTex.java +++ b/src/engine/object/ObjectGlTex.java @@ -24,6 +24,8 @@ public class ObjectGlTex extends ObjectGl{ this.transform = Matrix4f.identity(); this.shader = new Shader("shaders/ObjectGlTex/vert.glsl","shaders/ObjectGlTex/frag.glsl"); this.zPos = z; + this.width = w; + this.height = h; this.setTexture(texPath); } @@ -39,11 +41,15 @@ public class ObjectGlTex extends ObjectGl{ public void setTextureWrap(float x, float y, float w, float h){ int texWidth = this.textures.get(0).getWidth(); int texHeight = this.textures.get(0).getHeight(); + x /= texWidth; + w /= texWidth; + y /= texHeight; + h /= texHeight; float[] result = { - x / texWidth, y / texHeight, - x + w / texWidth, y / texHeight, - x + w / texWidth, y + h / texHeight, - x / texWidth, y + h / texHeight, + x , y , + x + w , y , + x + w , y + h , + x , y + h , }; // TODO scaling object this.setTextureWrap(result); diff --git a/src/engine/object/ObjectGlTexColor.java b/src/engine/object/ObjectGlTexColor.java index a221772..ec5090e 100644 --- a/src/engine/object/ObjectGlTexColor.java +++ b/src/engine/object/ObjectGlTexColor.java @@ -17,6 +17,8 @@ public class ObjectGlTexColor extends ObjectGlTex{ this.transform = Matrix4f.identity(); this.shader = new Shader("shaders/ObjectGlTexColor/vert.glsl","shaders/ObjectGlTexColor/frag.glsl"); this.zPos = z; + this.width = w; + this.height = h; this.setTexture(texPath); } }