All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.daxie.joglf.testmain.TestWindow Maven / Gradle / Ivy

package com.daxie.joglf.testmain;

import com.daxie.basis.matrix.Matrix;
import com.daxie.basis.matrix.MatrixFunctions;
import com.daxie.basis.vector.Vector;
import com.daxie.basis.vector.VectorFunctions;
import com.daxie.joglf.gl.drawer.DynamicTrianglesDrawer;
import com.daxie.joglf.gl.front.CameraFront;
import com.daxie.joglf.gl.input.keyboard.KeyboardEnum;
import com.daxie.joglf.gl.input.mouse.MouseEnum;
import com.daxie.joglf.gl.shape.Triangle;
import com.daxie.joglf.gl.shape.Vertex3D;
import com.daxie.joglf.gl.texture.TextureMgr;
import com.daxie.joglf.gl.window.JOGLFWindow;
import com.daxie.joglf.gl.wrapper.GLDrawFunctions3D;
import com.daxie.tool.MathFunctions;

public class TestWindow extends JOGLFWindow{
	public TestWindow() {
		
	}
	
	private Vector camera_position;
	private DynamicTrianglesDrawer dtd;
	private int count=0;
	private float y=-10.0f;
	private int texture_handle;
	
	@Override
	protected void Init() {
		camera_position=VectorFunctions.VGet(50.0f, 50.0f, 50.0f);
		dtd=new DynamicTrianglesDrawer();
		
		texture_handle=TextureMgr.LoadTexture("./Data/Texture/blue.bmp");
		dtd.SetTextureHandle(texture_handle);
	}
	
	@Override
	protected void Update() {
		if(this.GetKeyboardPressingCount(KeyboardEnum.KEY_ENTER)==1) {
			new TestWindow();
		}
		if(this.GetMousePressingCount(MouseEnum.MOUSE_MIDDLE)==1) {
			Triangle triangle=new Triangle();
			
			Vertex3D[] vertices=new Vertex3D[3];
			for(int i=0;i<3;i++)vertices[i]=new Vertex3D();
			
			Vector[] positions=new Vector[3];
			positions[2]=VectorFunctions.VGet(-30.0f, y, -30.0f);
			positions[1]=VectorFunctions.VGet(30.0f, y, -30.0f);
			positions[0]=VectorFunctions.VGet(0.0f, y, 30.0f);
			
			Vector v1=VectorFunctions.VSub(positions[1], positions[0]);
			Vector v2=VectorFunctions.VSub(positions[2], positions[0]);
			Vector normal=VectorFunctions.VCross(v1, v2);
			normal=VectorFunctions.VNorm(normal);
			
			for(int i=0;i<3;i++) {
				vertices[i].SetPos(positions[i]);
				vertices[i].SetNorm(normal);
			}
			vertices[0].SetU(0.0f);
			vertices[0].SetV(0.0f);
			vertices[1].SetU(1.0f);
			vertices[1].SetV(0.0f);
			vertices[2].SetU(1.0f);
			vertices[2].SetV(1.0f);
			
			for(int i=0;i<3;i++) {
				triangle.SetVertex(i, vertices[i]);
			}
			
			dtd.AddTriangle(count, triangle);
			count++;
			
			dtd.UpdateBuffers();
			
			y+=1.0f;
		}
		
		Matrix rot_y=MatrixFunctions.MGetRotY(MathFunctions.DegToRad(1.0f));
		camera_position=VectorFunctions.VTransform(camera_position, rot_y);
		CameraFront.SetCameraPositionAndTarget_UpVecY(camera_position, VectorFunctions.VGet(0.0f, 0.0f, 0.0f));
	}
	@Override
	protected void Draw() {
		GLDrawFunctions3D.DrawAxes(100.0f);
		dtd.Draw();
	}
	
	@Override
	protected void Dispose() {
		dtd.DeleteBuffers();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy