
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