Skip to content

Commit d145797

Browse files
committed
working textures
1 parent a230355 commit d145797

5 files changed

Lines changed: 45 additions & 8 deletions

File tree

src/main/java/org/opengame/engine/TestClient.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import lombok.extern.java.Log;
44
import org.joml.Vector3f;
55
import org.opengame.engine.app.AppConfig;
6+
import org.opengame.engine.camera.FlyingCamera;
67
import org.opengame.engine.scene.MeshLoader;
78
import org.opengame.engine.render.TestCube;
89
import org.opengame.engine.scene.Scene;
@@ -23,14 +24,28 @@ public static void main(String[] args) throws IOException, InterruptedException,
2324
engine.Init(config);
2425

2526
var scene = new Scene();
27+
var camera = (FlyingCamera) scene.getCamera();
28+
camera.setFlySpeed(0.5f);
2629
// for (int i = 0; i < 1; i++) {
2730
// scene.add(new TestCube());
2831
// }
2932

33+
var model2 = MeshLoader.loadModel( Engine.getWorkingDirectory() + "models/cube.obj");
34+
model2.setTexture("flowers_cloth.dds");
35+
model2.setRotation(new Vector3f(5, 11.4f, 0));
36+
model2.setPosition(new Vector3f(0, 4, 20));
37+
scene.add(model2);
38+
39+
var model3 = MeshLoader.loadModel( Engine.getWorkingDirectory() + "models/cube.obj");
40+
model3.setTexture("cat.dds");
41+
model3.setRotation(new Vector3f(5, 21.4f, 0));
42+
model3.setPosition(new Vector3f(11, 4, 20));
43+
scene.add(model3);
44+
3045
var model = MeshLoader.loadModel( Engine.getWorkingDirectory() + "models/cube.obj");
31-
scene.add(model);
3246
model.setRotation(new Vector3f(0, 1.4f, 0));
3347
model.setPosition(new Vector3f(0, 1, 20));
48+
scene.add(model);
3449

3550
engine.setCurrentScene(scene);
3651

src/main/java/org/opengame/engine/camera/FlyingCamera.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.opengame.engine.camera;
22

3+
import lombok.Getter;
4+
import lombok.Setter;
35
import lombok.extern.java.Log;
46
import org.joml.*;
57
import org.opengame.engine.Engine;
@@ -20,6 +22,8 @@ public class FlyingCamera extends Camera {
2022
private final Vector2f windowCenterPos;
2123

2224
private Vector2f viewportSize;
25+
@Setter
26+
@Getter
2327
private float flySpeed;
2428
private boolean isChangingDirection;
2529
private double lastMouseX = -1;

src/main/java/org/opengame/engine/scene/Mesh.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ public class Mesh extends SceneObject {
4646
private final short indexBuffer;
4747
private final BGFXVertexLayout layout;
4848
private final short program;
49-
private final short texture;
50-
private final short textureUniform;
49+
private short texture;
50+
private short textureUniform;
5151

5252
private final Matrix4x3f model = new Matrix4x3f();
5353
private final FloatBuffer modelBuffer;
@@ -212,14 +212,23 @@ private ByteBuffer loadResource(String resourcePath) throws IOException {
212212
return resource;
213213
}
214214

215+
public void setTexture(String textureName) throws IOException {
216+
bgfx_destroy_texture(texture);
217+
bgfx_destroy_uniform(textureUniform);
218+
219+
texture = loadTexture(textureName);
220+
textureUniform = bgfx_create_uniform("s_texColor", BGFX_UNIFORM_TYPE_VEC4, 1);
221+
}
222+
215223
@Override
216224
public void frame(float time, float frameTime) {
217-
//bgfx_dbg_text_printf(0, 15, 0x4f, "testClient - OpenGameEngine");
225+
bgfx_dbg_text_printf(0, 2, 0x6f, "OpenGameEngine 0.0.1-SNAPSHOT");
226+
bgfx_dbg_text_printf(0, 3, 0x0f, String.format("Frame: %7.3f[ms]", frameTime));
218227

219228
long encoder = bgfx_encoder_begin(false);
220229
bgfx_encoder_set_transform(encoder,
221-
model.translation(position.x, position.y, position.z)
222-
.rotateXYZ(rotation.x, rotation.y, rotation.z)
230+
model.translation(position)
231+
.rotateXYZ(rotation)
223232
.get4x4(modelBuffer));
224233

225234
bgfx_encoder_set_vertex_buffer(encoder, 0, vertexBuffer, 0, vertexCount);
@@ -234,7 +243,6 @@ public void frame(float time, float frameTime) {
234243
| BGFX_STATE_MSAA, 0);
235244

236245
bgfx_encoder_submit(encoder, 0, program, 0, 0);
237-
238246
bgfx_encoder_end(encoder);
239247
}
240248

src/main/java/org/opengame/engine/scene/MeshLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,6 @@ private static Mesh createMesh(AIMesh aiMesh) throws IOException {
5757
}
5858

5959
return new Mesh(meshVertices, meshIndices,
60-
"vs_cubes", "fs_cubes", null);
60+
"vs_simple_textured", "fs_simple_textured", null);
6161
}
6262
}

src/main/java/org/opengame/engine/scene/Model.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.joml.Vector3f;
55
import org.opengame.engine.object.Renderable;
66

7+
import java.io.IOException;
78
import java.util.List;
89

910
public class Model implements Renderable {
@@ -22,6 +23,15 @@ public void setPosition(Vector3f position) {
2223
meshes.forEach((mesh) -> mesh.setPosition(position));
2324
}
2425

26+
public void setTexture(String textureName) {
27+
meshes.forEach(mesh -> {
28+
try {
29+
mesh.setTexture(textureName);
30+
} catch (IOException e) {
31+
throw new RuntimeException(e);
32+
}
33+
});
34+
}
2535
@Override
2636
public void frame(float time, float frameTimeMs) {
2737
meshes.forEach((mesh) -> mesh.frame(time, frameTimeMs));

0 commit comments

Comments
 (0)