diff --git a/bin/Scene/Objects/BunnyTestObject.class b/bin/Scene/Objects/BunnyTestObject.class index 2b03de7..d0caab5 100644 Binary files a/bin/Scene/Objects/BunnyTestObject.class and b/bin/Scene/Objects/BunnyTestObject.class differ diff --git a/bin/Scene/Objects/Cube.class b/bin/Scene/Objects/Cube.class index 44d5895..cd8d1da 100644 Binary files a/bin/Scene/Objects/Cube.class and b/bin/Scene/Objects/Cube.class differ diff --git a/bin/Scene/Objects/Ground.class b/bin/Scene/Objects/Ground.class index 59bc74c..18186ca 100644 Binary files a/bin/Scene/Objects/Ground.class and b/bin/Scene/Objects/Ground.class differ diff --git a/bin/Scene/Objects/Human.class b/bin/Scene/Objects/Human.class index 6ceb48c..97a55ab 100644 Binary files a/bin/Scene/Objects/Human.class and b/bin/Scene/Objects/Human.class differ diff --git a/bin/Scene/Objects/LAVA_Door.class b/bin/Scene/Objects/LAVA_Door.class index ba769f5..b2c71f0 100644 Binary files a/bin/Scene/Objects/LAVA_Door.class and b/bin/Scene/Objects/LAVA_Door.class differ diff --git a/bin/Scene/Objects/TNT_Door.class b/bin/Scene/Objects/TNT_Door.class index c5e66e5..4d5d7b1 100644 Binary files a/bin/Scene/Objects/TNT_Door.class and b/bin/Scene/Objects/TNT_Door.class differ diff --git a/bin/Scene/Objects/Wall.class b/bin/Scene/Objects/Wall.class index f17b44a..bb6e6ca 100644 Binary files a/bin/Scene/Objects/Wall.class and b/bin/Scene/Objects/Wall.class differ diff --git a/bin/Scene/Scene$1.class b/bin/Scene/Scene$1.class index 3016b60..1780ab0 100644 Binary files a/bin/Scene/Scene$1.class and b/bin/Scene/Scene$1.class differ diff --git a/bin/Scene/Scene$2.class b/bin/Scene/Scene$2.class index 95cfecc..fb3f29b 100644 Binary files a/bin/Scene/Scene$2.class and b/bin/Scene/Scene$2.class differ diff --git a/bin/Scene/Scene.class b/bin/Scene/Scene.class index b441c44..dca43fc 100644 Binary files a/bin/Scene/Scene.class and b/bin/Scene/Scene.class differ diff --git a/bin/Scene/base/SceneObject.class b/bin/Scene/base/SceneObject.class index d8519fb..ee79ae2 100644 Binary files a/bin/Scene/base/SceneObject.class and b/bin/Scene/base/SceneObject.class differ diff --git a/bin/Scene/skybox/Skybox.class b/bin/Scene/skybox/Skybox.class index 6a6a077..91b72d7 100644 Binary files a/bin/Scene/skybox/Skybox.class and b/bin/Scene/skybox/Skybox.class differ diff --git a/bin/main/Engine.class b/bin/main/Engine.class index 1181258..ad41d29 100644 Binary files a/bin/main/Engine.class and b/bin/main/Engine.class differ diff --git a/src/Scene/Objects/BunnyTestObject.java b/src/Scene/Objects/BunnyTestObject.java index b5cbbe2..1b41205 100644 --- a/src/Scene/Objects/BunnyTestObject.java +++ b/src/Scene/Objects/BunnyTestObject.java @@ -4,6 +4,7 @@ import Scene.base.SceneObject; import base.GraphicsObjects.Point4f; import base.GraphicsObjects.Vector4f; import base.objects3D.BunnyObjTest; +import org.newdawn.slick.Color; import org.newdawn.slick.opengl.Texture; import java.util.HashMap; @@ -35,6 +36,7 @@ public class BunnyTestObject extends SceneObject { @Override public void draw() { // glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + Color.red.bind(); glCallList(bunnyObjTest.getBunnyDisplayList()); } } diff --git a/src/Scene/Objects/Cube.java b/src/Scene/Objects/Cube.java index 3cd84b1..5af9433 100644 --- a/src/Scene/Objects/Cube.java +++ b/src/Scene/Objects/Cube.java @@ -43,10 +43,10 @@ public class Cube extends SceneObject { Color.white.bind(); //bind texture getTextures().get("default_dirt").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); cube.DrawTexCube(1f); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; } } diff --git a/src/Scene/Objects/Ground.java b/src/Scene/Objects/Ground.java index e816b2a..f403331 100644 --- a/src/Scene/Objects/Ground.java +++ b/src/Scene/Objects/Ground.java @@ -1,5 +1,6 @@ package Scene.Objects; +import Scene.base.IDrawListener; import base.GraphicsObjects.Point4f; import base.GraphicsObjects.Vector4f; import Scene.base.SceneObject; @@ -10,6 +11,8 @@ import org.newdawn.slick.opengl.Texture; import java.util.HashMap; +import static org.lwjgl.opengl.GL11.glColor3f; + /** * @Author: WangYuyang * @Date: 2021/11/2-16:01 @@ -35,19 +38,21 @@ public class Ground extends SceneObject { @Override public void draw() { - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri( GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); GL11.glTexParameteri( GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT); - Color.white.bind(); //bind texture + Color.white.bind(); getTextures().get("default_dirt").bind(); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); + cube.DrawTexCube(10f); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; } } diff --git a/src/Scene/Objects/Human.java b/src/Scene/Objects/Human.java index 4588c43..7e5b759 100644 --- a/src/Scene/Objects/Human.java +++ b/src/Scene/Objects/Human.java @@ -193,12 +193,12 @@ public class Human extends SceneObject { getTextures().get("wool_pink").bind(); //Enable TEXTURE - GL11.glEnable(GL11.GL_TEXTURE_2D); + //set texture Parameters GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.5f, 32, 32, getTextures().get("wool_pink")); //Draw finish Disable TEXTURE - GL11.glDisable(GL11.GL_TEXTURE_2D); + // sphere.DrawSphere(0.5f, 32, 32); // pelvis sphere @@ -216,10 +216,10 @@ public class Human extends SceneObject { //bind texture getTextures().get("tnt_side").bind(); //set texture //Enable TEXTURE - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.5f, 32, 32, getTextures().get("tnt_side")); - GL11.glDisable(GL11.GL_TEXTURE_2D); //disable texture + ; //disable texture // sphere.DrawSphere(0.5f, 32, 32);// chest sphere @@ -249,10 +249,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("awesomeface").bind(); //set texture - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.5f, 32, 32, getTextures().get("awesomeface")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.5f, 32, 32); @@ -275,10 +275,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_stone").bind(); //set texture - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_stone")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.25f, 32, 32); @@ -309,10 +309,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_stone").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.2f, 32, 32, getTextures().get("default_stone")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.2f, 32, 32); //left forearm @@ -336,10 +336,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_stone").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.2f, 32, 32, getTextures().get("default_stone")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.2f, 32, 32); @@ -368,10 +368,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_stone").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_stone")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.25f, 32, 32); @@ -402,10 +402,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_stone").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.2f, 32, 32, getTextures().get("default_stone")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.2f, 32, 32); //right forearm @@ -429,10 +429,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_stone").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.2f, 32, 32, getTextures().get("default_stone")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.2f, 32, 32); @@ -468,10 +468,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_cobble").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_cobble")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.25f, 32, 32); @@ -501,10 +501,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_cobble").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_cobble")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.25f, 32, 32); //left low leg @@ -528,10 +528,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_cobble").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.3f, 32, 32, getTextures().get("default_cobble")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.3f, 32, 32); @@ -558,10 +558,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_cobble").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_cobble")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.25f, 32, 32); @@ -592,10 +592,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_cobble").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.25f, 32, 32, getTextures().get("default_cobble")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.25f, 32, 32); //right low leg @@ -619,10 +619,10 @@ public class Human extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); getTextures().get("default_cobble").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); texSphere.DrawTexSphere(0.3f, 32, 32, getTextures().get("default_cobble")); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; // sphere.DrawSphere(0.3f, 32, 32); } diff --git a/src/Scene/Objects/LAVA_Door.java b/src/Scene/Objects/LAVA_Door.java index 66849bf..84b14da 100644 --- a/src/Scene/Objects/LAVA_Door.java +++ b/src/Scene/Objects/LAVA_Door.java @@ -32,7 +32,7 @@ public class LAVA_Door extends SceneObject { Color.white.bind(); getTextures().get("default_lava").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); GL11.glTranslatef(-2f, 0f, 0); cube.DrawTexCube(); @@ -108,6 +108,6 @@ public class LAVA_Door extends SceneObject { } GL11.glPopMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; } } diff --git a/src/Scene/Objects/TNT_Door.java b/src/Scene/Objects/TNT_Door.java index 3be11c3..c4f2111 100644 --- a/src/Scene/Objects/TNT_Door.java +++ b/src/Scene/Objects/TNT_Door.java @@ -31,7 +31,7 @@ public class TNT_Door extends SceneObject { @Override public void draw() { - GL11.glEnable(GL11.GL_TEXTURE_2D); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); Color.white.bind(); getTextures().get("tnt_side").bind(); @@ -112,7 +112,7 @@ public class TNT_Door extends SceneObject { } GL11.glPopMatrix(); GL11.glPopMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; } } diff --git a/src/Scene/Objects/Wall.java b/src/Scene/Objects/Wall.java index 2c56f68..ed0e91f 100644 --- a/src/Scene/Objects/Wall.java +++ b/src/Scene/Objects/Wall.java @@ -44,11 +44,11 @@ public class Wall extends SceneObject { GL11.GL_REPEAT); Color.white.bind(); //bind texture - getTextures().get("default_dirt").bind(); - GL11.glEnable(GL11.GL_TEXTURE_2D); +// getTextures().get("default_dirt").bind(); + ; GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); MyGrid.DrawTexCube(10f); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; } } diff --git a/src/Scene/Scene.java b/src/Scene/Scene.java index a77085e..80395a1 100644 --- a/src/Scene/Scene.java +++ b/src/Scene/Scene.java @@ -50,13 +50,14 @@ public class Scene { // textures // )); + + sceneManager.addSceneObject(new TNT_Door( new Point4f(0, 50f, 200, 0), new Point4f(0, 0, 0, 0), new Vector4f(50f, 50f, 50f, 0), textures )); - sceneManager.addSceneObject(new LAVA_Door( new Point4f(0, 50f, 200, 0), new Point4f(0, 0, 0, 0), @@ -64,9 +65,8 @@ public class Scene { textures )); - -// sceneManager.addSceneObject(new Cube( -// new Point4f(300, 200, 600, 0), +// sceneManager.addSceneObject(new TestObj( +// new Point4f(300, 200, -600, 0), // new Point4f(0, 0, 0, 0), // new Vector4f(50, 50, 50, 0), // textures diff --git a/src/Scene/base/SceneObject.java b/src/Scene/base/SceneObject.java index 502aba1..4de14ee 100644 --- a/src/Scene/base/SceneObject.java +++ b/src/Scene/base/SceneObject.java @@ -69,10 +69,10 @@ public abstract class SceneObject implements IDrawable, IMovable, IScalable { public void draw(IDrawListener listener) { //move object to correct position listener.beforeEachDraw(this); -// glDisable(GL_TEXTURE_GEN_S); -// glDisable(GL_TEXTURE_GEN_T); -// glDisable(GL_TEXTURE_GEN_R); -// glDisable(GL_TEXTURE_GEN_Q); + glDisable(GL_TEXTURE_GEN_S); + glDisable(GL_TEXTURE_GEN_T); + glDisable(GL_TEXTURE_GEN_R); + glDisable(GL_TEXTURE_GEN_Q); GL11.glTranslatef(origin.x, origin.y, origin.z); GL11.glRotatef(rotation.a, rotation.x, rotation.y, rotation.z); @@ -81,10 +81,10 @@ public abstract class SceneObject implements IDrawable, IMovable, IScalable { this.draw(); listener.afterEachDraw(this); -// glEnable(GL_TEXTURE_GEN_S); -// glEnable(GL_TEXTURE_GEN_T); -// glEnable(GL_TEXTURE_GEN_R); -// glEnable(GL_TEXTURE_GEN_Q); + glEnable(GL_TEXTURE_GEN_S); + glEnable(GL_TEXTURE_GEN_T); + glEnable(GL_TEXTURE_GEN_R); + glEnable(GL_TEXTURE_GEN_Q); } @@ -133,4 +133,8 @@ public abstract class SceneObject implements IDrawable, IMovable, IScalable { public Vector4f getScale() { return scale; } + + public Vector4f getRotation() { + return rotation; + } } diff --git a/src/Scene/skybox/Skybox.java b/src/Scene/skybox/Skybox.java index 740a424..9f92791 100644 --- a/src/Scene/skybox/Skybox.java +++ b/src/Scene/skybox/Skybox.java @@ -44,7 +44,7 @@ public class Skybox extends SceneObject { @Override public void draw() { - GL11.glEnable(GL11.GL_TEXTURE_2D); +// ; GL11.glTexParameteri( GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); @@ -128,6 +128,6 @@ public class Skybox extends SceneObject { GL11.glEnd(); - GL11.glDisable(GL11.GL_TEXTURE_2D); + ; } } diff --git a/src/main/Engine.java b/src/main/Engine.java index d7695b9..a709ab3 100644 --- a/src/main/Engine.java +++ b/src/main/Engine.java @@ -229,7 +229,7 @@ public class Engine { * be no object farther away than 50 units from [0, 0, 0] in any direction. * If an object exceeds the radius, the object may cast shadows wrongly. */ - float sceneBoundingRadius = 800; + float sceneBoundingRadius = 1500; /** * The distance from the light to the scene, assuming that the scene is located * at [0, 0, 0]. Using the Pythagorean theorem, the distance is calculated by taking the square-root of the @@ -304,6 +304,7 @@ public class Engine { * int border -> 0 */ glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 0, 0, shadowMapWidth, shadowMapHeight, 0); + // Restore the previous model-view matrix. glPopMatrix(); glMatrixMode(GL_PROJECTION); @@ -439,15 +440,17 @@ public class Engine { updateFPS(); checkInput(); - glPushAttrib(GL_ALL_ATTRIB_BITS); - { - generateTextureCoordinates(); - renderProgram.renderBackground(delta); - renderProgram.renderScene(delta); - drawShadowMap(renderProgram); + renderProgram.renderScene(delta); + renderProgram.renderBackground(delta); + +// glPushAttrib(GL_ALL_ATTRIB_BITS); +// { +// generateTextureCoordinates(); +// drawShadowMap(renderProgram); +// +// } +// glPopAttrib(); - } - glPopAttrib(); Display.update(); Display.sync(FPS); diff --git a/src/main/MainWindow.java b/src/main/MainWindow.java index 977b08f..63832df 100644 --- a/src/main/MainWindow.java +++ b/src/main/MainWindow.java @@ -512,7 +512,7 @@ public class MainWindow { // // Color.white.bind(); // texture.bind(); -// GL11.glEnable(GL11.GL_TEXTURE_2D); +// ; // GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); // GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //