diff --git a/physics-engine/src/main/java/com/project/physics/engine/graphic/DynamicCamera.java b/physics-engine/src/main/java/com/project/physics/engine/graphic/DynamicCamera.java index 4dd8047..911daed 100644 --- a/physics-engine/src/main/java/com/project/physics/engine/graphic/DynamicCamera.java +++ b/physics-engine/src/main/java/com/project/physics/engine/graphic/DynamicCamera.java @@ -53,6 +53,7 @@ import com.project.physics.engine.graphic.shader.Color; import com.project.physics.engine.graphic.shader.Shader; import com.project.physics.engine.graphic.shader.ShaderProgram; +import com.project.physics.engine.graphic.shader.ShaderProgram.ShaderLocations; import com.project.physics.engine.graphic.shader.Texture; import com.project.physics.engine.math.Matrix4f; import com.project.physics.engine.text.Font; @@ -455,17 +456,17 @@ private void setupShaderProgram() { specifyVertexAttributes(); /* Set texture uniform */ - int uniTex = program.getUniformLocation("texImage"); + int uniTex = program.getUniformLocation(ShaderLocations.TEX_IMAGE); program.setUniform(uniTex, 0); /* Set model matrix to identity matrix */ Matrix4f model = new Matrix4f(); - int uniModel = program.getUniformLocation("model"); + int uniModel = program.getUniformLocation(ShaderLocations.MODEL); program.setUniform(uniModel, model); /* Set view matrix to identity matrix */ Matrix4f view = new Matrix4f(); - int uniView = program.getUniformLocation("view"); + int uniView = program.getUniformLocation(ShaderLocations.VIEW); program.setUniform(uniView, view); setProjection(width, height); @@ -474,7 +475,7 @@ private void setupShaderProgram() { public void setProjection(int width, int height) { /* Set projection matrix to an orthographic projection */ Matrix4f projection = Matrix4f.orthographic(0f, width, 0f, height, -1f, 1f); - int uniformProjection = program.getUniformLocation("projection"); + int uniformProjection = program.getUniformLocation(ShaderLocations.PROJECTION); program.setUniform(uniformProjection, projection); } @@ -483,17 +484,17 @@ public void setProjection(int width, int height) { */ private void specifyVertexAttributes() { /* Specify Vertex Pointer */ - int posAttrib = program.getAttributeLocation("position"); + int posAttrib = program.getAttributeLocation(ShaderLocations.POSITION); program.enableVertexAttribute(posAttrib); program.pointVertexAttribute(posAttrib, 2, 8 * Float.BYTES, 0); /* Specify Color Pointer */ - int colAttrib = program.getAttributeLocation("color"); + int colAttrib = program.getAttributeLocation(ShaderLocations.COLOR); program.enableVertexAttribute(colAttrib); program.pointVertexAttribute(colAttrib, 4, 8 * Float.BYTES, 2 * Float.BYTES); /* Specify Texture Pointer */ - int texAttrib = program.getAttributeLocation("texcoord"); + int texAttrib = program.getAttributeLocation(ShaderLocations.TEX_COORD); program.enableVertexAttribute(texAttrib); program.pointVertexAttribute(texAttrib, 2, 8 * Float.BYTES, 6 * Float.BYTES); } diff --git a/physics-engine/src/main/java/com/project/physics/engine/graphic/shader/ShaderProgram.java b/physics-engine/src/main/java/com/project/physics/engine/graphic/shader/ShaderProgram.java index 6657e3d..235fe82 100644 --- a/physics-engine/src/main/java/com/project/physics/engine/graphic/shader/ShaderProgram.java +++ b/physics-engine/src/main/java/com/project/physics/engine/graphic/shader/ShaderProgram.java @@ -105,14 +105,14 @@ public void link() { } /** - * Gets the location of an attribute variable with specified name. + * Gets the location of an attribute variable with specified dataLocation. * - * @param name Attribute name + * @param dataLocation Attribute dataLocation * * @return Location of the attribute */ - public int getAttributeLocation(CharSequence name) { - return glGetAttribLocation(id, name); + public int getAttributeLocation(ShaderLocations dataLocation) { + return glGetAttribLocation(id, dataLocation.toString()); } /** @@ -154,8 +154,8 @@ public void pointVertexAttribute(int location, int size, int stride, int offset) * * @return Location of the uniform */ - public int getUniformLocation(CharSequence name) { - return glGetUniformLocation(id, name); + public int getUniformLocation(ShaderLocations name) { + return glGetUniformLocation(id, name.toString()); } /** @@ -276,4 +276,13 @@ public void delete() { glDeleteProgram(id); } + public enum ShaderLocations { + TEX_IMAGE, + MODEL, + VIEW, + PROJECTION, + POSITION, + COLOR, + TEX_COORD; + } } diff --git a/physics-engine/src/main/java/com/project/physics/engine/state/SpinningTriangleState.java b/physics-engine/src/main/java/com/project/physics/engine/state/SpinningTriangleState.java index 698a03a..3b49939 100644 --- a/physics-engine/src/main/java/com/project/physics/engine/state/SpinningTriangleState.java +++ b/physics-engine/src/main/java/com/project/physics/engine/state/SpinningTriangleState.java @@ -41,6 +41,7 @@ import com.project.physics.engine.graphic.VertexBufferObject; import com.project.physics.engine.graphic.shader.Shader; import com.project.physics.engine.graphic.shader.ShaderProgram; +import com.project.physics.engine.graphic.shader.ShaderProgram.ShaderLocations; import com.project.physics.engine.math.Matrix4f; /** @@ -149,11 +150,11 @@ public void enter() { specifyVertexAttributes(); /* Get uniform location for the model matrix */ - uniModel = program.getUniformLocation("model"); + uniModel = program.getUniformLocation(ShaderLocations.MODEL); /* Set view matrix to identity matrix */ Matrix4f view = new Matrix4f(); - int uniView = program.getUniformLocation("view"); + int uniView = program.getUniformLocation(ShaderLocations.VIEW); program.setUniform(uniView, view); /* Get width and height for calculating the ratio */ @@ -168,7 +169,7 @@ public void enter() { /* Set projection matrix to an orthographic projection */ Matrix4f projection = Matrix4f.orthographic(-ratio, ratio, -1f, 1f, -1f, 1f); - int uniProjection = program.getUniformLocation("projection"); + int uniProjection = program.getUniformLocation(ShaderLocations.PROJECTION); program.setUniform(uniProjection, projection); } @@ -186,12 +187,12 @@ public void exit() { */ private void specifyVertexAttributes() { /* Specify Vertex Pointer */ - int posAttrib = program.getAttributeLocation("position"); + int posAttrib = program.getAttributeLocation(ShaderLocations.POSITION); program.enableVertexAttribute(posAttrib); program.pointVertexAttribute(posAttrib, 3, 6 * Float.BYTES, 0); /* Specify Color Pointer */ - int colAttrib = program.getAttributeLocation("color"); + int colAttrib = program.getAttributeLocation(ShaderLocations.COLOR); program.enableVertexAttribute(colAttrib); program.pointVertexAttribute(colAttrib, 3, 6 * Float.BYTES, 3 * Float.BYTES); }