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 | ||||
| .idea | ||||
| out | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										2
									
								
								.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
| # Default ignored files | ||||
| /workspace.xml | ||||
							
								
								
									
										13
									
								
								.idea/Helium-Engine.iml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								.idea/Helium-Engine.iml
									
									
									
										generated
									
									
									
										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
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.idea/codeStyles/codeStyleConfig.xml
									
									
									
										generated
									
									
									
										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
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.idea/libraries/commons_io_2.xml
									
									
									
										generated
									
									
									
										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
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								.idea/libraries/lwjgl_release_3_2.xml
									
									
									
										generated
									
									
									
										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
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
										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
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.idea/modules.xml
									
									
									
										generated
									
									
									
										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
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								.idea/uiDesigner.xml
									
									
									
										generated
									
									
									
										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
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
										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.Renderer; | ||||
| import org.hl.engine.graphics.Shader; | ||||
| import org.hl.engine.graphics.Vertex; | ||||
| import org.hl.engine.graphics.*; | ||||
| import org.hl.engine.io.Display; | ||||
| 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; | ||||
| 
 | ||||
| 
 | ||||
| @ -18,35 +16,41 @@ public class Test { | ||||
| 	public Shader shader; | ||||
| 
 | ||||
| 	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 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 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 Vector2f(0, 1)), | ||||
| 			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 Vector2f(1, 0)), | ||||
| 
 | ||||
| 	}, new int[] { | ||||
| 			0, 1, 2, | ||||
| 			0, 2, 3 | ||||
| 
 | ||||
|     }); | ||||
| 	}, new Material(new Texture("resources/textures/thonk.png"))); | ||||
| 
 | ||||
|     public void run() { | ||||
|         init(); | ||||
| 	public void run() throws Exception { | ||||
| 		setup(); | ||||
| 		i = new Input(display); | ||||
| 		while (!(display.shouldClose()) && !i.isKeyDown(GLFW.GLFW_KEY_ESCAPE)) { | ||||
|             update(); | ||||
|             render(); | ||||
| 			loop(); | ||||
| 		} | ||||
| 
 | ||||
| 		close(); | ||||
| 
 | ||||
| 	} | ||||
|     public void init() { | ||||
| 
 | ||||
| 	public void loop() { | ||||
| 		update(); | ||||
| 		render(); | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	public void setup() throws Exception { | ||||
| 		// System.out.println("Initializing Game "); | ||||
| 		display = new Display(WIDTH, HEIGHT, windowName); | ||||
| 		display.create(); | ||||
| 		shader = new Shader("/resources/shaders/mainVertex.glsl", "/resources/shaders/mainFragment.glsl"); | ||||
| 		renderer = new Renderer(shader); | ||||
|         display.setBackgroundColor(1F, 0, 0); | ||||
|         display.create(); | ||||
| 		display.setBackgroundColor(1F, 1F, 1F); | ||||
| 		mesh.create(); | ||||
| 		shader.create(); | ||||
| 
 | ||||
| @ -73,7 +77,7 @@ public class Test { | ||||
| 		shader.destroy(); | ||||
| 	} | ||||
| 
 | ||||
|     public static void main(String[] args) { | ||||
| 	public static void main(String[] args) throws Exception { | ||||
| 		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; | ||||
| 
 | ||||
| public class Mesh { | ||||
| 
 | ||||
| 	private Vertex[] vertices; | ||||
| 	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 | ||||
|     public Mesh(Vertex[] vertices, int[] indices) { | ||||
| 	public Mesh(Vertex[] vertices, int[] indices, Material material) { | ||||
| 		this.vertices = vertices; | ||||
| 		this.indices = indices; | ||||
| 		this.material = material; | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	// Destroy the mesh | ||||
| 	public void destroy () { | ||||
| 		GL15.glDeleteBuffers(positionBufferObject); | ||||
| 		GL15.glDeleteBuffers(indicesBufferObject); | ||||
| 		GL15.glDeleteBuffers(colorBufferObject); | ||||
| 		GL30.glDeleteBuffers(textureBufferObject); | ||||
| 
 | ||||
| 		GL30.glDeleteVertexArrays(vertexArrayObject); | ||||
| 
 | ||||
| 		material.getTexture().destroy(); | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	// getters for the mesh | ||||
| @ -47,6 +55,7 @@ public class Mesh { | ||||
| 		return positionBufferObject; | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	public int getIndicesBufferObject() { | ||||
| 		return indicesBufferObject; | ||||
| 	} | ||||
| @ -55,8 +64,19 @@ public class Mesh { | ||||
| 		return colorBufferObject; | ||||
| 	} | ||||
| 
 | ||||
| 	public int getTextureBufferObject() { | ||||
| 		return textureBufferObject; | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	public Material getMaterial() { | ||||
| 		return material; | ||||
| 	} | ||||
| 
 | ||||
| 	public void create() { | ||||
| 
 | ||||
| 		material.create(); | ||||
| 
 | ||||
| 		// Creates the mesh by formatting the vertices and indices and inputting them to OpenGL | ||||
| 		vertexArrayObject = GL30.glGenVertexArrays(); | ||||
| 		GL30.glBindVertexArray(vertexArrayObject); | ||||
| @ -88,6 +108,18 @@ public class Mesh { | ||||
| 
 | ||||
| 		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); | ||||
| 		indicesBuffer.put(indices).flip(); | ||||
| 
 | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| package org.hl.engine.graphics; | ||||
| 
 | ||||
| import org.lwjgl.opengl.GL11; | ||||
| import org.lwjgl.opengl.GL13; | ||||
| import org.lwjgl.opengl.GL15; | ||||
| import org.lwjgl.opengl.GL30; | ||||
| 
 | ||||
| @ -19,8 +20,13 @@ public class Renderer { | ||||
| 		GL30.glBindVertexArray(mesh.getVertexArrayObject()); | ||||
| 		GL30.glEnableVertexAttribArray(0); | ||||
| 		GL30.glEnableVertexAttribArray(1); | ||||
| 		GL30.glEnableVertexAttribArray(2); | ||||
| 		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(); | ||||
| 
 | ||||
| 		GL11.glDrawElements(GL11.GL_TRIANGLES, mesh.getIndices().length, GL11.GL_UNSIGNED_INT, 0); | ||||
| @ -28,6 +34,7 @@ public class Renderer { | ||||
| 		shader.unbind(); | ||||
| 		GL30.glDisableVertexAttribArray(0); | ||||
| 		GL30.glDisableVertexAttribArray(1); | ||||
| 		GL30.glDisableVertexAttribArray(2); | ||||
| 		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; | ||||
| 
 | ||||
| import org.hl.engine.math.Vector3f; | ||||
| 
 | ||||
| import org.hl.engine.math.lalg.*; | ||||
| 
 | ||||
| 
 | ||||
| public class Vertex { | ||||
| 
 | ||||
| @ -8,17 +10,26 @@ public class Vertex { | ||||
| 
 | ||||
| 	private Vector3f position; | ||||
| 	private Vector3f color; | ||||
| 	private Vector2f textureCoords; | ||||
| 
 | ||||
|     public Vertex (Vector3f position, Vector3f color) { | ||||
| 
 | ||||
| 	public Vertex (Vector3f position, Vector3f color, Vector2f textureCoords) { | ||||
| 		this.position = position; | ||||
| 		this.color = color; | ||||
| 		this.textureCoords = textureCoords; | ||||
| 	} | ||||
| 
 | ||||
| 	public Vector3f getPosition() { | ||||
| 		return position; | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	public Vector3f getColor() { | ||||
| 		return color; | ||||
| 	} | ||||
| 
 | ||||
| 	public Vector2f getTextureCoords() { | ||||
| 		return textureCoords; | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -1,5 +1,7 @@ | ||||
| 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.GLFWWindowSizeCallback; | ||||
| import org.lwjgl.opengl.GL; | ||||
| @ -8,6 +10,7 @@ import org.lwjgl.opengl.GL11; | ||||
| import static org.lwjgl.glfw.GLFW.*; | ||||
| 
 | ||||
| public class Display { | ||||
| 
 | ||||
| 	private int width, height; | ||||
| 	private String windowName; | ||||
| 	private long window; | ||||
| @ -94,16 +97,19 @@ public class Display { | ||||
| 
 | ||||
| 
 | ||||
| 	// 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 | ||||
| 		if (!glfwInit()) { | ||||
|             System.err.println("Failed to initialize GLFW! "); | ||||
|             System.exit(1); | ||||
| 			//System.err.println("Failed to initialize GLFW! "); | ||||
| 			//System.exit(1); | ||||
| 			throw new Exception("Failed to initialize GLFW! "); | ||||
| 		} | ||||
| 
 | ||||
|         glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); | ||||
|         glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); | ||||
| 		glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); | ||||
| 		glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1); | ||||
| 		glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL11.GL_TRUE); | ||||
| 		glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); | ||||
| 
 | ||||
| @ -111,8 +117,9 @@ public class Display { | ||||
| 		glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); | ||||
| 		window = glfwCreateWindow(this.width, this.height, this.windowName, isFullscreen ? glfwGetPrimaryMonitor():0, 0); | ||||
| 		if (window == 0) { | ||||
|             System.err.println("Failed to create window! "); | ||||
|             System.exit(1); | ||||
| 			//System.err.println("Failed to create window! "); | ||||
| 			//System.exit(1); | ||||
| 			throw new Exception("Failed to create window! "); | ||||
| 		} | ||||
| 
 | ||||
| 		// Setting size of window | ||||
| @ -188,6 +195,7 @@ public class Display { | ||||
| 	// Completely DESTROYS the window | ||||
| 	public void destroy() { | ||||
| 		resizeCallback.free(); | ||||
| 		glfwSetErrorCallback(null).free(); | ||||
| 		glfwDestroyWindow(window); | ||||
| 		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() { | ||||
|     outColor = vec4(passColor, 1.0); | ||||
|  | ||||
| @ -1,11 +1,21 @@ | ||||
| #version 330 core | ||||
| #version 410 core | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| layout(location = 0) in vec3 position; | ||||
| 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() { | ||||
|     gl_Position = vec4(position, 1.0); | ||||
|     passColor = color; | ||||
| 
 | ||||
|     passTextureCoord = textureCoord; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user