Resolving conflicts and applying textures
This commit is contained in:
commit
e3a33d946c
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,7 +3,6 @@
|
||||||
|
|
||||||
|
|
||||||
# IntelliJ Idea folders
|
# IntelliJ Idea folders
|
||||||
.idea
|
|
||||||
out
|
out
|
||||||
|
|
||||||
|
|
||||||
|
|
2
.idea/.gitignore
vendored
Normal file
2
.idea/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# Default ignored files
|
||||||
|
/workspace.xml
|
13
.idea/Helium-Engine.iml
Normal file
13
.idea/Helium-Engine.iml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="library" name="lwjgl-release-3.2" level="project" />
|
||||||
|
<orderEntry type="library" name="commons-io-2" level="project" />
|
||||||
|
</component>
|
||||||
|
</module>
|
5
.idea/codeStyles/codeStyleConfig.xml
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<state>
|
||||||
|
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||||
|
</state>
|
||||||
|
</component>
|
15
.idea/libraries/commons_io_2.xml
Normal file
15
.idea/libraries/commons_io_2.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="commons-io-2">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="file://$USER_HOME$/Downloads/commons-io-2.6" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="file://$USER_HOME$/Downloads/commons-io-2.6/docs" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="file://$USER_HOME$/Downloads/commons-io-2.6" />
|
||||||
|
</SOURCES>
|
||||||
|
<jarDirectory url="file://$USER_HOME$/Downloads/commons-io-2.6" recursive="false" />
|
||||||
|
<jarDirectory url="file://$USER_HOME$/Downloads/commons-io-2.6" recursive="false" type="SOURCES" />
|
||||||
|
</library>
|
||||||
|
</component>
|
13
.idea/libraries/lwjgl_release_3_2.xml
Normal file
13
.idea/libraries/lwjgl_release_3_2.xml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="lwjgl-release-3.2">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="file://$USER_HOME$/Downloads/lwjgl-release-3.2.3-custom" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="file://$USER_HOME$/Downloads/lwjgl-release-3.2.3-custom" />
|
||||||
|
</SOURCES>
|
||||||
|
<jarDirectory url="file://$USER_HOME$/Downloads/lwjgl-release-3.2.3-custom" recursive="false" />
|
||||||
|
<jarDirectory url="file://$USER_HOME$/Downloads/lwjgl-release-3.2.3-custom" recursive="false" type="SOURCES" />
|
||||||
|
</library>
|
||||||
|
</component>
|
6
.idea/misc.xml
Normal file
6
.idea/misc.xml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/Helium-Engine.iml" filepath="$PROJECT_DIR$/.idea/Helium-Engine.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
124
.idea/uiDesigner.xml
Normal file
124
.idea/uiDesigner.xml
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Palette2">
|
||||||
|
<group name="Swing">
|
||||||
|
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="Button" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="RadioButton" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="CheckBox" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||||
|
<initial-values>
|
||||||
|
<property name="text" value="Label" />
|
||||||
|
</initial-values>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||||
|
<preferred-size width="150" height="-1" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||||
|
<preferred-size width="150" height="-1" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||||
|
<preferred-size width="150" height="-1" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||||
|
<preferred-size width="150" height="50" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||||
|
<preferred-size width="200" height="200" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||||
|
<preferred-size width="200" height="200" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||||
|
<preferred-size width="-1" height="20" />
|
||||||
|
</default-constraints>
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||||
|
</item>
|
||||||
|
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||||
|
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||||
|
</item>
|
||||||
|
</group>
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
BIN
resources/textures/thonk.png
Normal file
BIN
resources/textures/thonk.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.0 KiB |
|
@ -1,10 +1,8 @@
|
||||||
import org.hl.engine.graphics.Mesh;
|
import org.hl.engine.graphics.*;
|
||||||
import org.hl.engine.graphics.Renderer;
|
|
||||||
import org.hl.engine.graphics.Shader;
|
|
||||||
import org.hl.engine.graphics.Vertex;
|
|
||||||
import org.hl.engine.io.Display;
|
import org.hl.engine.io.Display;
|
||||||
import org.hl.engine.io.Input;
|
import org.hl.engine.io.Input;
|
||||||
import org.hl.engine.math.Vector3f;
|
import org.hl.engine.math.lalg.Vector3f;
|
||||||
|
import org.hl.engine.math.lalg.Vector2f;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,35 +16,41 @@ public class Test {
|
||||||
public Shader shader;
|
public Shader shader;
|
||||||
|
|
||||||
public Mesh mesh = new Mesh(new Vertex[] {
|
public Mesh mesh = new Mesh(new Vertex[] {
|
||||||
new Vertex(new Vector3f(-0.5F, 0.5F, 0.0F), new Vector3f(0, 0, 1.0F)),
|
new Vertex(new Vector3f(-0.5F, 0.5F, 0.0F), new Vector3f(0, 0, 1.0F), new Vector2f(0, 0)),
|
||||||
new Vertex(new Vector3f(-0.5F, -0.5F, 0.0F), new Vector3f(0, 0, 1.0F)),
|
new Vertex(new Vector3f(-0.5F, -0.5F, 0.0F), new Vector3f(0, 0, 1.0F), new Vector2f(0, 1)),
|
||||||
new Vertex(new Vector3f(0.5F, -0.5F, 0.0F), new Vector3f(1.0F, 0, 1.0F)),
|
new Vertex(new Vector3f(0.5F, -0.5F, 0.0F), new Vector3f(1.0F, 0, 1.0F), new Vector2f(1, 1)),
|
||||||
new Vertex(new Vector3f(0.5F, 0.5F, 0.0F), new Vector3f(1.0F, 0, 1.0F) ),
|
new Vertex(new Vector3f(0.5F, 0.5F, 0.0F), new Vector3f(1.0F, 0, 1.0F), new Vector2f(1, 0)),
|
||||||
|
|
||||||
}, new int[] {
|
}, new int[] {
|
||||||
0, 1, 2,
|
0, 1, 2,
|
||||||
0, 2, 3
|
0, 2, 3
|
||||||
|
|
||||||
});
|
}, new Material(new Texture("resources/textures/thonk.png")));
|
||||||
|
|
||||||
public void run() {
|
public void run() throws Exception {
|
||||||
init();
|
setup();
|
||||||
i = new Input(display);
|
i = new Input(display);
|
||||||
while (!(display.shouldClose()) && !i.isKeyDown(GLFW.GLFW_KEY_ESCAPE)) {
|
while (!(display.shouldClose()) && !i.isKeyDown(GLFW.GLFW_KEY_ESCAPE)) {
|
||||||
update();
|
loop();
|
||||||
render();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
close();
|
close();
|
||||||
|
|
||||||
}
|
}
|
||||||
public void init() {
|
|
||||||
|
public void loop() {
|
||||||
|
update();
|
||||||
|
render();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setup() throws Exception {
|
||||||
// System.out.println("Initializing Game ");
|
// System.out.println("Initializing Game ");
|
||||||
display = new Display(WIDTH, HEIGHT, windowName);
|
display = new Display(WIDTH, HEIGHT, windowName);
|
||||||
|
display.create();
|
||||||
shader = new Shader("/resources/shaders/mainVertex.glsl", "/resources/shaders/mainFragment.glsl");
|
shader = new Shader("/resources/shaders/mainVertex.glsl", "/resources/shaders/mainFragment.glsl");
|
||||||
renderer = new Renderer(shader);
|
renderer = new Renderer(shader);
|
||||||
display.setBackgroundColor(1F, 0, 0);
|
display.setBackgroundColor(1F, 1F, 1F);
|
||||||
display.create();
|
|
||||||
mesh.create();
|
mesh.create();
|
||||||
shader.create();
|
shader.create();
|
||||||
|
|
||||||
|
@ -73,7 +77,7 @@ public class Test {
|
||||||
shader.destroy();
|
shader.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) throws Exception {
|
||||||
new Test().run();
|
new Test().run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
107
src/org/hl/engine/graphics/Material.java
Normal file
107
src/org/hl/engine/graphics/Material.java
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
package org.hl.engine.graphics;
|
||||||
|
|
||||||
|
import org.hl.engine.math.lalg.Vector4f;
|
||||||
|
|
||||||
|
public class Material {
|
||||||
|
private static final Vector4f DEFAULT_COLOR = new Vector4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
|
|
||||||
|
private Vector4f ambientColor;
|
||||||
|
|
||||||
|
private Vector4f diffuseColor;
|
||||||
|
|
||||||
|
private Vector4f specularColor;
|
||||||
|
|
||||||
|
private float reflectance;
|
||||||
|
|
||||||
|
private Texture texture;
|
||||||
|
|
||||||
|
private Texture normalMap;
|
||||||
|
|
||||||
|
public Material() {
|
||||||
|
this.ambientColor = DEFAULT_COLOR;
|
||||||
|
this.diffuseColor = DEFAULT_COLOR;
|
||||||
|
this.specularColor = DEFAULT_COLOR;
|
||||||
|
this.texture = null;
|
||||||
|
this.reflectance = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Material(Vector4f color, float reflectance) {
|
||||||
|
this(color, color, color, null, reflectance);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Material(Texture texture) {
|
||||||
|
this(DEFAULT_COLOR, DEFAULT_COLOR, DEFAULT_COLOR, texture, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Material(Texture texture, float reflectance) {
|
||||||
|
this(DEFAULT_COLOR, DEFAULT_COLOR, DEFAULT_COLOR, texture, reflectance);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Material(Vector4f ambientColor, Vector4f diffuseColor, Vector4f specularColor, Texture texture, float reflectance) {
|
||||||
|
this.ambientColor = ambientColor;
|
||||||
|
this.diffuseColor = diffuseColor;
|
||||||
|
this.specularColor = specularColor;
|
||||||
|
this.texture = texture;
|
||||||
|
this.reflectance = reflectance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector4f getAmbientColor() {
|
||||||
|
return ambientColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAmbientColor(Vector4f ambientColor) {
|
||||||
|
this.ambientColor = ambientColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector4f getDiffuseColor() {
|
||||||
|
return diffuseColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDiffuseColor(Vector4f diffuseColor) {
|
||||||
|
this.diffuseColor = diffuseColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector4f getSpecularColor() {
|
||||||
|
return specularColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpecularColor(Vector4f specularColor) {
|
||||||
|
this.specularColor = specularColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getReflectance() {
|
||||||
|
return reflectance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReflectance(float reflectance) {
|
||||||
|
this.reflectance = reflectance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isTextured() {
|
||||||
|
return this.texture != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Texture getTexture() {
|
||||||
|
return texture;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTexture(Texture texture) {
|
||||||
|
this.texture = texture;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasNormalMap() {
|
||||||
|
return this.normalMap != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Texture getNormalMap() {
|
||||||
|
return normalMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNormalMap(Texture normalMap) {
|
||||||
|
this.normalMap = normalMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void create() {
|
||||||
|
texture.create();
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,23 +10,31 @@ import java.nio.FloatBuffer;
|
||||||
import java.nio.IntBuffer;
|
import java.nio.IntBuffer;
|
||||||
|
|
||||||
public class Mesh {
|
public class Mesh {
|
||||||
|
|
||||||
private Vertex[] vertices;
|
private Vertex[] vertices;
|
||||||
private int[] indices;
|
private int[] indices;
|
||||||
private int vertexArrayObject, positionBufferObject, indicesBufferObject, colorBufferObject;
|
private int vertexArrayObject, positionBufferObject, indicesBufferObject, colorBufferObject, textureBufferObject;
|
||||||
|
private Material material;
|
||||||
|
|
||||||
// A group of vertices combined based on the indexes
|
// A group of vertices combined based on the indexes
|
||||||
public Mesh(Vertex[] vertices, int[] indices) {
|
public Mesh(Vertex[] vertices, int[] indices, Material material) {
|
||||||
this.vertices = vertices;
|
this.vertices = vertices;
|
||||||
this.indices = indices;
|
this.indices = indices;
|
||||||
|
this.material = material;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Destroy the mesh
|
// Destroy the mesh
|
||||||
public void destroy () {
|
public void destroy () {
|
||||||
GL15.glDeleteBuffers(positionBufferObject);
|
GL15.glDeleteBuffers(positionBufferObject);
|
||||||
GL15.glDeleteBuffers(indicesBufferObject);
|
GL15.glDeleteBuffers(indicesBufferObject);
|
||||||
GL15.glDeleteBuffers(colorBufferObject);
|
GL15.glDeleteBuffers(colorBufferObject);
|
||||||
|
GL30.glDeleteBuffers(textureBufferObject);
|
||||||
|
|
||||||
GL30.glDeleteVertexArrays(vertexArrayObject);
|
GL30.glDeleteVertexArrays(vertexArrayObject);
|
||||||
|
|
||||||
|
material.getTexture().destroy();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// getters for the mesh
|
// getters for the mesh
|
||||||
|
@ -47,6 +55,7 @@ public class Mesh {
|
||||||
return positionBufferObject;
|
return positionBufferObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public int getIndicesBufferObject() {
|
public int getIndicesBufferObject() {
|
||||||
return indicesBufferObject;
|
return indicesBufferObject;
|
||||||
}
|
}
|
||||||
|
@ -55,8 +64,19 @@ public class Mesh {
|
||||||
return colorBufferObject;
|
return colorBufferObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getTextureBufferObject() {
|
||||||
|
return textureBufferObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Material getMaterial() {
|
||||||
|
return material;
|
||||||
|
}
|
||||||
|
|
||||||
public void create() {
|
public void create() {
|
||||||
|
|
||||||
|
material.create();
|
||||||
|
|
||||||
// Creates the mesh by formatting the vertices and indices and inputting them to OpenGL
|
// Creates the mesh by formatting the vertices and indices and inputting them to OpenGL
|
||||||
vertexArrayObject = GL30.glGenVertexArrays();
|
vertexArrayObject = GL30.glGenVertexArrays();
|
||||||
GL30.glBindVertexArray(vertexArrayObject);
|
GL30.glBindVertexArray(vertexArrayObject);
|
||||||
|
@ -88,6 +108,18 @@ public class Mesh {
|
||||||
|
|
||||||
colorBufferObject = storeData(colorBuffer, 1, 3);
|
colorBufferObject = storeData(colorBuffer, 1, 3);
|
||||||
|
|
||||||
|
// Putting the texture into the buffer so renderer and shader can read it
|
||||||
|
|
||||||
|
FloatBuffer textureBuffer = MemoryUtil.memAllocFloat(vertices.length * 2);
|
||||||
|
float[] textureData = new float[vertices.length * 2];
|
||||||
|
for (int i = 0; i < vertices.length; i ++ ) {
|
||||||
|
textureData[i * 2] = vertices[i].getTextureCoords().getX();
|
||||||
|
textureData[i * 2 + 1] = vertices[i].getTextureCoords().getY();
|
||||||
|
}
|
||||||
|
textureBuffer.put(textureData).flip();
|
||||||
|
|
||||||
|
textureBufferObject = storeData(textureBuffer, 2, 2);
|
||||||
|
|
||||||
IntBuffer indicesBuffer = MemoryUtil.memAllocInt(indices.length);
|
IntBuffer indicesBuffer = MemoryUtil.memAllocInt(indices.length);
|
||||||
indicesBuffer.put(indices).flip();
|
indicesBuffer.put(indices).flip();
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package org.hl.engine.graphics;
|
package org.hl.engine.graphics;
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
import org.lwjgl.opengl.GL13;
|
||||||
import org.lwjgl.opengl.GL15;
|
import org.lwjgl.opengl.GL15;
|
||||||
import org.lwjgl.opengl.GL30;
|
import org.lwjgl.opengl.GL30;
|
||||||
|
|
||||||
|
@ -19,8 +20,13 @@ public class Renderer {
|
||||||
GL30.glBindVertexArray(mesh.getVertexArrayObject());
|
GL30.glBindVertexArray(mesh.getVertexArrayObject());
|
||||||
GL30.glEnableVertexAttribArray(0);
|
GL30.glEnableVertexAttribArray(0);
|
||||||
GL30.glEnableVertexAttribArray(1);
|
GL30.glEnableVertexAttribArray(1);
|
||||||
|
GL30.glEnableVertexAttribArray(2);
|
||||||
GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, mesh.getIndicesBufferObject());
|
GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, mesh.getIndicesBufferObject());
|
||||||
|
|
||||||
|
GL13.glActiveTexture(GL13.GL_TEXTURE0);
|
||||||
|
|
||||||
|
GL13.glBindTexture(GL11.GL_TEXTURE_2D, mesh.getMaterial().getTexture().getId());
|
||||||
|
|
||||||
shader.bind();
|
shader.bind();
|
||||||
|
|
||||||
GL11.glDrawElements(GL11.GL_TRIANGLES, mesh.getIndices().length, GL11.GL_UNSIGNED_INT, 0);
|
GL11.glDrawElements(GL11.GL_TRIANGLES, mesh.getIndices().length, GL11.GL_UNSIGNED_INT, 0);
|
||||||
|
@ -28,6 +34,7 @@ public class Renderer {
|
||||||
shader.unbind();
|
shader.unbind();
|
||||||
GL30.glDisableVertexAttribArray(0);
|
GL30.glDisableVertexAttribArray(0);
|
||||||
GL30.glDisableVertexAttribArray(1);
|
GL30.glDisableVertexAttribArray(1);
|
||||||
|
GL30.glDisableVertexAttribArray(2);
|
||||||
GL30.glBindVertexArray(0);
|
GL30.glBindVertexArray(0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
133
src/org/hl/engine/graphics/Texture.java
Normal file
133
src/org/hl/engine/graphics/Texture.java
Normal file
|
@ -0,0 +1,133 @@
|
||||||
|
package org.hl.engine.graphics;
|
||||||
|
import static org.lwjgl.opengl.GL46.*;
|
||||||
|
import static org.lwjgl.stb.STBImage.*;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.IntBuffer;
|
||||||
|
|
||||||
|
import org.lwjgl.system.MemoryStack;
|
||||||
|
|
||||||
|
public class Texture {
|
||||||
|
private int id;
|
||||||
|
|
||||||
|
private int width;
|
||||||
|
|
||||||
|
private int height;
|
||||||
|
|
||||||
|
private int type;
|
||||||
|
|
||||||
|
private String fileName;
|
||||||
|
private ByteBuffer imageBuffer;
|
||||||
|
|
||||||
|
private int pixelFormat;
|
||||||
|
|
||||||
|
|
||||||
|
public Texture(int width, int height, int pixelFormat) {
|
||||||
|
this.type = 0;
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
this.pixelFormat = pixelFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Texture(String fileName) {
|
||||||
|
this.type = 1;
|
||||||
|
this.fileName = fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Texture(ByteBuffer imageBuffer) {
|
||||||
|
type = 2;
|
||||||
|
this.imageBuffer = imageBuffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void create() {
|
||||||
|
if (this.type == 0) {
|
||||||
|
this.id = glGenTextures();
|
||||||
|
glBindTexture(GL_TEXTURE_2D, this.id);
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, this.pixelFormat, this.width, this.height, 0, this.pixelFormat, GL_FLOAT, (ByteBuffer) null);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
|
|
||||||
|
} else if (this.type == 1) {
|
||||||
|
ByteBuffer buf;
|
||||||
|
try(MemoryStack stack = MemoryStack.stackPush()) {
|
||||||
|
IntBuffer w = stack.mallocInt(1);
|
||||||
|
IntBuffer h = stack.mallocInt(1);
|
||||||
|
IntBuffer channels = stack.mallocInt(1);
|
||||||
|
|
||||||
|
buf = stbi_load(this.fileName, w, h, channels, 4);
|
||||||
|
if(buf == null) {
|
||||||
|
System.err.println("Image file [" + this.fileName + "] not loaded: " + stbi_failure_reason());
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.width = w.get();
|
||||||
|
this.height = h.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.id = createTexture(buf);
|
||||||
|
|
||||||
|
stbi_image_free(buf);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
ByteBuffer buf;
|
||||||
|
try(MemoryStack stack = MemoryStack.stackPush()) {
|
||||||
|
IntBuffer w = stack.mallocInt(1);
|
||||||
|
IntBuffer h = stack.mallocInt(1);
|
||||||
|
IntBuffer channels = stack.mallocInt(1);
|
||||||
|
|
||||||
|
buf = stbi_load_from_memory(this.imageBuffer, w, h, channels, 4);
|
||||||
|
if(buf == null) {
|
||||||
|
System.err.println("Image file not loaded: " + stbi_failure_reason());
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.width = w.get();
|
||||||
|
this.height = h.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.id = createTexture(buf);
|
||||||
|
|
||||||
|
stbi_image_free(buf);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private int createTexture(ByteBuffer buf) {
|
||||||
|
int textureID = glGenTextures();
|
||||||
|
glBindTexture(GL_TEXTURE_2D, textureID);
|
||||||
|
|
||||||
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||||
|
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf);
|
||||||
|
glGenerateMipmap(GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
|
|
||||||
|
return textureID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWidth() {
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHeight() {
|
||||||
|
return height;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void destroy() {
|
||||||
|
glDeleteTextures(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package org.hl.engine.graphics;
|
package org.hl.engine.graphics;
|
||||||
|
|
||||||
import org.hl.engine.math.Vector3f;
|
|
||||||
|
import org.hl.engine.math.lalg.*;
|
||||||
|
|
||||||
|
|
||||||
public class Vertex {
|
public class Vertex {
|
||||||
|
|
||||||
|
@ -8,17 +10,26 @@ public class Vertex {
|
||||||
|
|
||||||
private Vector3f position;
|
private Vector3f position;
|
||||||
private Vector3f color;
|
private Vector3f color;
|
||||||
|
private Vector2f textureCoords;
|
||||||
|
|
||||||
public Vertex (Vector3f position, Vector3f color) {
|
|
||||||
|
public Vertex (Vector3f position, Vector3f color, Vector2f textureCoords) {
|
||||||
this.position = position;
|
this.position = position;
|
||||||
this.color = color;
|
this.color = color;
|
||||||
|
this.textureCoords = textureCoords;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector3f getPosition() {
|
public Vector3f getPosition() {
|
||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Vector3f getColor() {
|
public Vector3f getColor() {
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Vector2f getTextureCoords() {
|
||||||
|
return textureCoords;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package org.hl.engine.io;
|
package org.hl.engine.io;
|
||||||
import org.hl.engine.math.Vector3f;
|
|
||||||
|
import org.hl.engine.math.lalg.Vector3f;
|
||||||
|
import org.lwjgl.glfw.GLFWErrorCallback;
|
||||||
import org.lwjgl.glfw.GLFWVidMode;
|
import org.lwjgl.glfw.GLFWVidMode;
|
||||||
import org.lwjgl.glfw.GLFWWindowSizeCallback;
|
import org.lwjgl.glfw.GLFWWindowSizeCallback;
|
||||||
import org.lwjgl.opengl.GL;
|
import org.lwjgl.opengl.GL;
|
||||||
|
@ -8,6 +10,7 @@ import org.lwjgl.opengl.GL11;
|
||||||
import static org.lwjgl.glfw.GLFW.*;
|
import static org.lwjgl.glfw.GLFW.*;
|
||||||
|
|
||||||
public class Display {
|
public class Display {
|
||||||
|
|
||||||
private int width, height;
|
private int width, height;
|
||||||
private String windowName;
|
private String windowName;
|
||||||
private long window;
|
private long window;
|
||||||
|
@ -94,16 +97,19 @@ public class Display {
|
||||||
|
|
||||||
|
|
||||||
// Creates the window (should go in the init() function of your Main program)
|
// Creates the window (should go in the init() function of your Main program)
|
||||||
public void create() {
|
public void create() throws Exception {
|
||||||
|
|
||||||
|
GLFWErrorCallback.createPrint(System.err).set();
|
||||||
|
|
||||||
// initializing glfw
|
// initializing glfw
|
||||||
if (!glfwInit()) {
|
if (!glfwInit()) {
|
||||||
System.err.println("Failed to initialize GLFW! ");
|
//System.err.println("Failed to initialize GLFW! ");
|
||||||
System.exit(1);
|
//System.exit(1);
|
||||||
|
throw new Exception("Failed to initialize GLFW! ");
|
||||||
}
|
}
|
||||||
|
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
|
||||||
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL11.GL_TRUE);
|
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL11.GL_TRUE);
|
||||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||||
|
|
||||||
|
@ -111,8 +117,9 @@ public class Display {
|
||||||
glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
|
glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
|
||||||
window = glfwCreateWindow(this.width, this.height, this.windowName, isFullscreen ? glfwGetPrimaryMonitor():0, 0);
|
window = glfwCreateWindow(this.width, this.height, this.windowName, isFullscreen ? glfwGetPrimaryMonitor():0, 0);
|
||||||
if (window == 0) {
|
if (window == 0) {
|
||||||
System.err.println("Failed to create window! ");
|
//System.err.println("Failed to create window! ");
|
||||||
System.exit(1);
|
//System.exit(1);
|
||||||
|
throw new Exception("Failed to create window! ");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setting size of window
|
// Setting size of window
|
||||||
|
@ -188,6 +195,7 @@ public class Display {
|
||||||
// Completely DESTROYS the window
|
// Completely DESTROYS the window
|
||||||
public void destroy() {
|
public void destroy() {
|
||||||
resizeCallback.free();
|
resizeCallback.free();
|
||||||
|
glfwSetErrorCallback(null).free();
|
||||||
glfwDestroyWindow(window);
|
glfwDestroyWindow(window);
|
||||||
glfwTerminate();
|
glfwTerminate();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
package org.hl.engine.math;
|
|
||||||
|
|
||||||
|
|
||||||
public class Vector3f {
|
|
||||||
private float x, y, z;
|
|
||||||
|
|
||||||
public Vector3f(float x, float y, float z) {
|
|
||||||
this.x = x;
|
|
||||||
this.y = y;
|
|
||||||
this.z = z;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVector(float x, float y, float z) {
|
|
||||||
this.x = x;
|
|
||||||
this.y = y;
|
|
||||||
this.z = z;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getX() {
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setX(float x) {
|
|
||||||
this.x = x;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getY() {
|
|
||||||
return y;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setY(float y) {
|
|
||||||
this.y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getZ() {
|
|
||||||
return z;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setZ(float z) {
|
|
||||||
this.z = z;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
33
src/org/hl/engine/math/lalg/Vector2f.java
Normal file
33
src/org/hl/engine/math/lalg/Vector2f.java
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
package org.hl.engine.math.lalg;
|
||||||
|
|
||||||
|
public class Vector2f {
|
||||||
|
private float x;
|
||||||
|
private float y;
|
||||||
|
|
||||||
|
// Just a vector if you know what I mean
|
||||||
|
public Vector2f (float x, float y) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVector(float x, float y) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setX(float x) {
|
||||||
|
this.x = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setY(float y) {
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
}
|
46
src/org/hl/engine/math/lalg/Vector3f.java
Normal file
46
src/org/hl/engine/math/lalg/Vector3f.java
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
package org.hl.engine.math.lalg;
|
||||||
|
|
||||||
|
|
||||||
|
public class Vector3f {
|
||||||
|
private float x;
|
||||||
|
private float y;
|
||||||
|
private float z;
|
||||||
|
|
||||||
|
// Just a vector if you know what I mean
|
||||||
|
public Vector3f (float x, float y, float z) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVector(float x, float y, float z) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setX(float x) {
|
||||||
|
this.x = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setY(float y) {
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZ(float z) {
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
55
src/org/hl/engine/math/lalg/Vector4f.java
Normal file
55
src/org/hl/engine/math/lalg/Vector4f.java
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
package org.hl.engine.math.lalg;
|
||||||
|
|
||||||
|
public class Vector4f {
|
||||||
|
private float x;
|
||||||
|
private float y;
|
||||||
|
private float z;
|
||||||
|
private float a;
|
||||||
|
|
||||||
|
// Just a vector if you know what I mean
|
||||||
|
public Vector4f (float x, float y, float z, float a) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
this.a = a;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVector(float x, float y, float z, float a) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
this.a = a;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setX(float x) {
|
||||||
|
this.x = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setY(float y) {
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZ(float z) {
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getA() {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setA(float a) {
|
||||||
|
this.a = a;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,8 +1,11 @@
|
||||||
#version 330 core
|
#version 410 core
|
||||||
|
|
||||||
in vec3 passColor;
|
|
||||||
|
|
||||||
out vec4 outColor;
|
|
||||||
|
layout(location = 0) in vec3 passColor;
|
||||||
|
layout(location = 1) in vec2 passTextureCoord;
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 outColor;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
outColor = vec4(passColor, 1.0);
|
outColor = vec4(passColor, 1.0);
|
||||||
|
|
|
@ -1,11 +1,21 @@
|
||||||
#version 330 core
|
#version 410 core
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
layout(location = 0) in vec3 position;
|
layout(location = 0) in vec3 position;
|
||||||
layout(location = 1) in vec3 color;
|
layout(location = 1) in vec3 color;
|
||||||
|
layout(location = 2) in vec2 textureCoord;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
layout(location = 0) out vec3 passColor;
|
||||||
|
layout(location = 1) out vec2 passTextureCoord;
|
||||||
|
|
||||||
out vec3 passColor;
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
gl_Position = vec4(position, 1.0);
|
gl_Position = vec4(position, 1.0);
|
||||||
passColor = color;
|
passColor = color;
|
||||||
|
|
||||||
|
passTextureCoord = textureCoord;
|
||||||
}
|
}
|
Reference in New Issue
Block a user