Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions src/main/java/g3dtest/G3d.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import g3dtest.game.GamePanel;
import g3dtest.simple.SimplePanel;
import org.mini.gui.*;
import org.mini.apploader.GApplication;
import org.mini.gui.event.GSizeChangeListener;
import org.mini.layout.UITemplate;
import org.mini.layout.XContainer;
import org.mini.layout.XForm;

import org.mini.layout.XmlExtAssist;

/**
* @author gust
Expand All @@ -28,15 +29,16 @@ public GForm getForm() {
GLanguage.setCurLang(GLanguage.ID_CHN);

eventHandle = new GameUIEventHandle(this);
XmlExtAssist assist = new XmlExtAssist();

XContainer.registerGUI("g3dtest.simple.XSimplePanel");
XContainer.registerGUI("g3dtest.game.XGamePanel");
assist.registerGUI("g3dtest.simple.XSimplePanel");
assist.registerGUI("g3dtest.game.XGamePanel");
String xmlStr = GToolkit.readFileFromJarAsString("/res/ui/G3dForm.xml", "utf-8");
UITemplate uit = new UITemplate(xmlStr);
for (String key : uit.getVariable()) {
uit.setVar(key, GLanguage.getString(key));
}
XForm xform = (XForm) XContainer.parseXml(uit.parse());
XForm xform = (XForm) XContainer.parseXml(uit.parse(), assist);
xform.build(GCallBack.getInstance().getDeviceWidth(), GCallBack.getInstance().getDeviceHeight(), eventHandle);
form = (GForm) xform.getGui();
eventHandle.setForm(form);
Expand Down
32 changes: 16 additions & 16 deletions src/main/java/g3dtest/game/GamePanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,31 +95,31 @@ public void gl_init() {
EngineManager.createDisplay((int) getW(), (int) getH());

loader = new Loader();
//Gutil.checkGlError("Game glinit 0.1");
//GLUtil.checkGlError("Game glinit 0.1");
Random random = new Random();

int smSize = 1024;
shadowMappingPass = new ShadowMappingPass(smSize, smSize);
shadowMappingPass.gl_init();
//Gutil.checkGlError("Game glinit 0.3");
//GLUtil.checkGlError("Game glinit 0.3");
shadowMappingRenderer = new ShadowMappingRenderer(shadowMappingPass);

masterPass = new MasterPass((int) getW(), (int) getH());
masterPass.gl_init();
setGlRendereredImg(masterPass.getFboimg());
//Gutil.checkGlError("Game glinit 0.5");
//GLUtil.checkGlError("Game glinit 0.5");

camera = new WorldCamera(EngineManager.getWidth(), EngineManager.getHeight(), MasterRenderer.FOV, MasterRenderer.NEAR_PLANE, MasterRenderer.FAR_PLANE);
masterRenderer = new MasterRenderer(camera);

//Gutil.checkGlError("Game glinit 0.8");
//GLUtil.checkGlError("Game glinit 0.8");
guiRenderer = new GuiRenderer(loader);
//Gutil.checkGlError("Game glinit 1");
//GLUtil.checkGlError("Game glinit 1");
// the sun
sun = new Light(new Vector3f(-200, 500, 0), new Vector3f(1.0f, 1.0f, 1.0f));
lights.add(sun);

//Gutil.checkGlError("Game glinit 2");
//GLUtil.checkGlError("Game glinit 2");
// Terrain
//textures to paint the terrain with
TerrainTexture backgroundTexture = new TerrainTexture(loader.loadTexture("textures/terrain/grassy"));
Expand All @@ -136,7 +136,7 @@ public void gl_init() {
// terrains.add(new Terrain(-1, 0, loader, texturePack, blendMap, "textures/terrain/heightmap"));
terrain = new Terrain(0, 0, loader, texturePack, blendMap, "textures/terrain/heightmap", shadowMappingRenderer);
terrains.add(terrain);
//Gutil.checkGlError("Game glinit 3");
//GLUtil.checkGlError("Game glinit 3");
// Terrain end
// Models
// Environment Models
Expand Down Expand Up @@ -176,7 +176,7 @@ public void gl_init() {
ball = new Entity(ballmode, random.nextInt(4), new Vector3f(0, terrains.get(0).getHeightOfTerrain(0, 0), 0), 0f, 0f, 0f, 1.0f);
entities.add(ball);

//Gutil.checkGlError("Game glinit 4");
//GLUtil.checkGlError("Game glinit 4");
// Environment Models end
// GUI
// Health Bar
Expand All @@ -190,7 +190,7 @@ public void gl_init() {
modelWithLight(entities, lights, lamp, 1, terrains.get(0), tx, ty, tz, "Green", 0);
}

//Gutil.checkGlError("Game glinit 5");
//GLUtil.checkGlError("Game glinit 5");
// Models end
// Animation

Expand All @@ -213,21 +213,21 @@ public void gl_init() {
players.add(player2);
}

//Gutil.checkGlError("Game glinit 8");
//GLUtil.checkGlError("Game glinit 8");
waterShader = new WaterShader();
waterRenderer = new WaterRenderer(loader, waterShader, camera);

waters.add(new WaterTile(75, 75, -7));

//Gutil.checkGlError("Game glinit 9");
//GLUtil.checkGlError("Game glinit 9");
skybox = new Skybox(loader);

picker = new MousePicker(camera, terrain);

particles = new ArrayList();
createParticleSystems(particles);
ParticleManager.init(loader, camera);
//Gutil.checkGlError("Game glinit 10");
//GLUtil.checkGlError("Game glinit 10");

widgets = new WidgetContainer(this, 0, 0, getW(), getH());
viewMover = new ViewMover("/res/textures/view.png", getW() * .5f, 0, getW() * .5f, getH());
Expand Down Expand Up @@ -331,7 +331,7 @@ public void gl_paint() {
glPolygonOffset(1.f, 1.f);
// MainLoop

//Gutil.checkGlError(this.getClass().getName() + " gl_paint 0");
//GLUtil.checkGlError(this.getClass().getName() + " gl_paint 0");
shadowMappingPass.begin();
shadowMappingRenderer.processTerrain(terrain);
for (int i = 0, imax = entities.size(); i < imax; i++) {
Expand All @@ -341,7 +341,7 @@ public void gl_paint() {
//shadowMappingRenderer.processEntity(player);
shadowMappingRenderer.render(sun);
shadowMappingPass.end();
//Gutil.checkGlError(this.getClass().getName() + " gl_paint 1");
//GLUtil.checkGlError(this.getClass().getName() + " gl_paint 1");


masterPass.begin();
Expand All @@ -354,7 +354,7 @@ public void gl_paint() {
// render without animation
guiRenderer.render(guis);
masterPass.end();
//Gutil.checkGlError(this.getClass().getName() + " gl_paint 2");
//GLUtil.checkGlError(this.getClass().getName() + " gl_paint 2");


//update
Expand Down Expand Up @@ -477,7 +477,7 @@ private static TexturedModel loadTexturedModel(String modelFileName, String text


@Override
public boolean dragEvent(float dx, float dy, float x, float y) {
public boolean dragEvent(int button, float dx, float dy, float x, float y) {
return widgets.dragEvent(dx, dy, x, y);
}

Expand Down
33 changes: 17 additions & 16 deletions src/main/java/g3dtest/simple/SimplePanel.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package g3dtest.simple;

import org.mini.gl.GL;
import org.mini.gl.warp.GLFrameBuffer;
import org.mini.gl.GLMath;
import org.mini.glwrap.GLFrameBuffer;
import org.mini.gui.GOpenGLPanel;
import org.mini.gui.GToolkit;
import org.mini.nanovg.Gutil;
import org.mini.glwrap.GLUtil;

import static org.mini.gl.GL.*;

Expand All @@ -22,7 +23,7 @@ int loadShader(String vss, String fss) {
//编译顶点着色器
int vertexShader;
vertexShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader, 1, new byte[][]{Gutil.toUtf8(vss)}, null, 0);
glShaderSource(vertexShader, 1, new byte[][]{GLUtil.toUtf8(vss)}, null, 0);
glCompileShader(vertexShader);
int success;
GL.glGetShaderiv(vertexShader, GL.GL_COMPILE_STATUS, return_val, 0);
Expand All @@ -37,7 +38,7 @@ int loadShader(String vss, String fss) {

int fragmentShader;
fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragmentShader, 1, new byte[][]{Gutil.toUtf8(fss)}, null, 0);
glShaderSource(fragmentShader, 1, new byte[][]{GLUtil.toUtf8(fss)}, null, 0);
glCompileShader(fragmentShader);
GL.glGetShaderiv(fragmentShader, GL.GL_COMPILE_STATUS, return_val, 0);
if (return_val[0] == GL_FALSE) {
Expand Down Expand Up @@ -213,16 +214,16 @@ public void gl_init() {


int[] whd = {0, 0, 0};
texture1[0] = Gutil.gl_image_load(GToolkit.readFileFromJar("/res/textures/fern.png"), whd);
texture1[0] = GLUtil.gl_image_load(GToolkit.readFileFromJar("/res/textures/fern.png"), whd);
// ===================
// Texture 2
// ===================

texture2[0] = Gutil.gl_image_load(GToolkit.readFileFromJar("/res/textures/pine.png"), whd);
texture2[0] = GLUtil.gl_image_load(GToolkit.readFileFromJar("/res/textures/pine.png"), whd);

glEnable(GL_DEPTH_TEST);

//Gutil.checkGlError("gl_init");
//GLUtil.checkGlError("gl_init");
}

@Override
Expand Down Expand Up @@ -255,11 +256,11 @@ public void gl_paint() {
// Bind Textures using texture units
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture1[0]);
int location = glGetUniformLocation(ourShader, Gutil.toUtf8("ourTexture1"));
int location = glGetUniformLocation(ourShader, GLUtil.toUtf8("ourTexture1"));
glUniform1i(location, 0);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture2[0]);
location = glGetUniformLocation(ourShader, Gutil.toUtf8("ourTexture2"));
location = glGetUniformLocation(ourShader, GLUtil.toUtf8("ourTexture2"));
glUniform1i(location, 1);


Expand All @@ -269,20 +270,20 @@ public void gl_paint() {
time += 1f / 60f;
float camX = (float) Math.sin(time) * radius;
float camZ = (float) Math.cos(time) * radius;
Gutil.mat4x4_look_at(view
GLMath.mat4x4_look_at(view
, new float[]{camX, 0.0f, camZ}
, new float[]{0.0f, 0.0f, 0.0f}
, new float[]{0.0f, 1.0f, 0.0f});
//view = glm::lookAt (glm::vec3 (camX, 0.0f, camZ),glm::vec3 (0.0f, 0.0f, 0.0f),glm::vec3 (0.0f, 1.0f, 0.0f));
// Projection
float[] projection = new float[16];
Gutil.mat4x4_perspective(projection
GLMath.mat4x4_perspective(projection
, 45.0f, getW() / getH(), 0.1f, 100.0f);
//projection = glm::perspective (45.0f, (GLfloat) WIDTH / (GLfloat) HEIGHT, 0.1f, 100.0f);
// Get the uniform locations
int modelLoc = glGetUniformLocation(ourShader, Gutil.toUtf8("model"));
int viewLoc = glGetUniformLocation(ourShader, Gutil.toUtf8("view"));
int projLoc = glGetUniformLocation(ourShader, Gutil.toUtf8("projection"));
int modelLoc = glGetUniformLocation(ourShader, GLUtil.toUtf8("model"));
int viewLoc = glGetUniformLocation(ourShader, GLUtil.toUtf8("view"));
int projLoc = glGetUniformLocation(ourShader, GLUtil.toUtf8("projection"));
// Pass the matrices to the shader
glUniformMatrix4fv(viewLoc, 1, GL_FALSE, view, 0);
glUniformMatrix4fv(projLoc, 1, GL_FALSE, projection, 0);
Expand All @@ -292,9 +293,9 @@ public void gl_paint() {
glBindVertexArray(VAO[0]);
for (int i = 0; i < 10; i++) {
// Calculate the model matrix for each object and pass it to shader before drawing
Gutil.mat4x4_translate(model, cubePositions[i][0], cubePositions[i][1], cubePositions[i][2]);
GLMath.mat4x4_translate(model, cubePositions[i][0], cubePositions[i][1], cubePositions[i][2]);
float angle = 0.f * 1;
Gutil.mat4x4_rotate(modelr, model, 1.0f, 1.0f, 1.0f, angle);
GLMath.mat4x4_rotate(modelr, model, 1.0f, 1.0f, 1.0f, angle);
glUniformMatrix4fv(modelLoc, 1, GL_FALSE, modelr, 0);

glDrawArrays(GL_TRIANGLES, 0, 36);
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/org/mini/g3d/animation/AnimatedModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
import org.mini.g3d.core.toolbox.G3dMath;
import org.mini.g3d.core.vector.Matrix4f;
import org.mini.g3d.entity.Entity;
import org.mini.nanovg.Gutil;
import org.mini.glwrap.GLUtil;
import org.mini.gl.GLMath;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -160,7 +161,7 @@ private void processNodeChildren(GLTFNode node, RenderNode parent) {

@Override
public void swap() {
Gutil.mat4x4_dup(transform.mat, transform_backend.mat);
GLMath.mat4x4_dup(transform.mat, transform_backend.mat);
rootRenderNode.swap();
}
}
6 changes: 3 additions & 3 deletions src/main/java/org/mini/g3d/core/Loader.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import org.mini.g3d.core.textures.TextureData;
import org.mini.gui.GCmd;
import org.mini.gui.GForm;
import org.mini.nanovg.Gutil;
import org.mini.glwrap.GLUtil;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -51,7 +51,7 @@ public RawModel loadAnimatedModelToVAO(float[] positions, float[] textureCoords,

public int loadTexture(String fileName) {
byte[] filecont = loadFileFromJar(EngineManager.RES_LOC + fileName + ".png");
int textureID = Gutil.gl_image_load(filecont, w_h_d);
int textureID = GLUtil.gl_image_load(filecont, w_h_d);
textures.add(textureID);
return textureID;
}
Expand Down Expand Up @@ -80,7 +80,7 @@ public int loadCubeMap(String[] textureFiles) {

private TextureData decodeTextureFile(String fileName) {
byte[] filecont = EngineManager.loadFileFromJar(fileName);
byte[] b = Gutil.image_parse_from_file_content(filecont, w_h_d);
byte[] b = GLUtil.image_parse_from_file_content(filecont, w_h_d);
//System.out.println("load " + fileName + " whn:" + w_h_d[0] + "," + w_h_d[1] + "," + w_h_d[2]);
return new TextureData(b, w_h_d[0], w_h_d[1], w_h_d[2]);
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/mini/g3d/core/MasterPass.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.mini.g3d.core;

import org.mini.gl.warp.GLFrameBuffer;
import org.mini.glwrap.GLFrameBuffer;

public class MasterPass extends GLFrameBuffer {
public static int triangles = 0;
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/org/mini/g3d/core/MasterRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public void render(Camera camera, List<Light> lights, List<AnimatedModel> animat
masterShader.loadViewMatrix(camera);
enitiyRenderer.render(entities);
masterShader.stop();
//Gutil.checkGlError(this.getClass().getCanonicalName() + "render 1");
//GLUtil.checkGlError(this.getClass().getCanonicalName() + "render 1");

for (int i = 0, imax = animatedPlayers.size(); i < imax; i++) {
AnimatedModel p = animatedPlayers.get(i);
Expand All @@ -74,7 +74,7 @@ public void render(Camera camera, List<Light> lights, List<AnimatedModel> animat
// animatedModelShader.loadViewMatrix(camera);
animatedModelRenderer.render(camera, p);
// animatedModelShader.stop();
//Gutil.checkGlError(this.getClass().getCanonicalName() + "render 2");
//GLUtil.checkGlError(this.getClass().getCanonicalName() + "render 2");
}

terrainShader.start();
Expand All @@ -83,7 +83,7 @@ public void render(Camera camera, List<Light> lights, List<AnimatedModel> animat
terrainShader.loadViewMatrix(camera);
terrainRenderer.render(terrains);
terrainShader.stop();
//Gutil.checkGlError(this.getClass().getCanonicalName() + "render 3");
//GLUtil.checkGlError(this.getClass().getCanonicalName() + "render 3");

skyboxRenderer.render(camera, box, FOG_RED, FOG_GREEN, FOG_BLUE);

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/mini/g3d/core/MasterShader.java
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public void loadProjectionMatrix(Matrix4f matrix) {
public void loadViewMatrix(Camera camera) {
// Matrix4f viewMatrix = new Matrix4f();
// float[] eye = new float[]{GamePanel.sun.getPosition().left, GamePanel.sun.getPosition().top, GamePanel.sun.getPosition().z};
// Gutil.mat4x4_look_at(viewMatrix.mat, eye, new float[]{-GamePanel.sun.getPosition().left, -GamePanel.sun.getPosition().top, -GamePanel.sun.getPosition().z}, new float[]{0.0f, 1.0f, 0.0f});
// GLMath.mat4x4_look_at(viewMatrix.mat, eye, new float[]{-GamePanel.sun.getPosition().left, -GamePanel.sun.getPosition().top, -GamePanel.sun.getPosition().z}, new float[]{0.0f, 1.0f, 0.0f});
super.loadMatrix(location_viewMatrix, camera.getViewMatrix());
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/mini/g3d/core/ShaderProgram.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import org.mini.gui.GToolkit;

import static org.mini.gl.GL.*;
import static org.mini.nanovg.Gutil.toUtf8;
import static org.mini.glwrap.GLUtil.toUtf8;

public abstract class ShaderProgram {

Expand Down
11 changes: 6 additions & 5 deletions src/main/java/org/mini/g3d/core/WorldCamera.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
import org.mini.g3d.core.vector.Matrix4f;
import org.mini.g3d.core.vector.Vector3f;
import org.mini.g3d.entity.Entity;
import org.mini.nanovg.Gutil;
import org.mini.glwrap.GLUtil;
import org.mini.gl.GLMath;

public class WorldCamera implements Camera {

Expand Down Expand Up @@ -163,14 +164,14 @@ public void createProjectionMatrix() {
// projectionMatrix.mat[Matrix4f.M33] = 0;

float aspectRatio = viewW / viewH;
Gutil.mat4x4_perspective(projectionMatrix.mat, fov, aspectRatio, near, far);
// Gutil.mat4x4_ortho(projectionMatrix.mat, -1500.0f, 1500.0f, -1500.0f, 1500.0f, 0.1f, 3000.0f);
GLMath.mat4x4_perspective(projectionMatrix.mat, fov, aspectRatio, near, far);
// GLMath.mat4x4_ortho(projectionMatrix.mat, -1500.0f, 1500.0f, -1500.0f, 1500.0f, 0.1f, 3000.0f);
}


public void createSkyboxProjectionMatrix() {
float aspectRatio = viewW / viewH;
Gutil.mat4x4_perspective(skyBoxProjectionMatrix.mat, fov, aspectRatio, near, far * 8);
GLMath.mat4x4_perspective(skyBoxProjectionMatrix.mat, fov, aspectRatio, near, far * 8);
}

public Matrix4f getProjectionMatrix() {
Expand Down Expand Up @@ -235,4 +236,4 @@ public Matrix4f getViewMatrix() {
Matrix4f.translate(negativeCameraPos, viewMatrix, viewMatrix);
return viewMatrix;
}
}
}
Loading