Question: package code; import java.nio. * ; import javax.swing. * ; import java.lang.Math; import static com.jogamp.opengl.GL 4 . * ; import com.jogamp.opengl. * ; import com.jogamp.opengl.awt.GLCanvas;

package code;
import java.nio.*;
import javax.swing.*;
import java.lang.Math;
import static com.jogamp.opengl.GL4.*;
import com.jogamp.opengl.*;
import com.jogamp.opengl.awt.GLCanvas;
import com.jogamp.opengl.GLContext;
import com.jogamp.opengl.util.*;
import com.jogamp.common.nio.Buffers;
import org.joml.*;
public class Code extends JFrame implements GLEventListener
{ private GLCanvas myCanvas;
private int renderingProgram;
private int vao[]= new int[1];
private int vbo[]= new int[2];
private float cameraX, cameraY, cameraZ;
private float cubeLocX, cubeLocY, cubeLocZ;
// allocate variables for display() function
private FloatBuffer vals = Buffers.newDirectFloatBuffer(16); // buffer for transfering matrix to uniform
private Matrix4f pMat = new Matrix4f(); // perspective matrix
private Matrix4f vMat = new Matrix4f(); // view matrix
private Matrix4f mMat = new Matrix4f(); // model matrix
private Matrix4f mvMat = new Matrix4f(); // model-view matrix
private int mvLoc, pLoc;
private float aspect;
private double tf;
private double startTime;
private double elapsedTime;
public Code()
{ setTitle("Chapter 4- program 1c");
setSize(600,600);
GLProfile glp = GLProfile.getMaxProgrammableCore(true);
GLCapabilities caps = new GLCapabilities(glp);
myCanvas = new GLCanvas(caps);
myCanvas.addGLEventListener(this);
this.add(myCanvas);
this.setVisible(true);
Animator animator = new Animator(myCanvas);
animator.start();
}
public void display(GLAutoDrawable drawable)
{ GL4 gl =(GL4) GLContext.getCurrentGL();
gl.glClear(GL_DEPTH_BUFFER_BIT);
gl.glClear(GL_COLOR_BUFFER_BIT);
gl.glUseProgram(renderingProgram);
mvLoc = gl.glGetUniformLocation(renderingProgram,"mv_matrix");
pLoc = gl.glGetUniformLocation(renderingProgram,"p_matrix");
aspect =(float) myCanvas.getWidth()/(float) myCanvas.getHeight();
pMat.setPerspective((float) Math.toRadians(60.0f), aspect, 0.1f,1000.0f);
vMat.translation(-cameraX, -cameraY, -cameraZ);
elapsedTime = System.currentTimeMillis()- startTime;
tf = elapsedTime/1800.0; // time factor
mMat.identity();
//mMat.translate((float)Math.sin(.35f*tf)*2.0f,(float)Math.sin(.52f*tf)*2.0f,(float)Math.sin(.70f*tf)*2.0f);
mMat.rotateXYZ(.75f,1.75f*(float)tf,0);
mvMat.identity();
mvMat.mul(vMat);
mvMat.mul(mMat);
gl.glUniformMatrix4fv(mvLoc,1, false, mvMat.get(vals));
gl.glUniformMatrix4fv(pLoc,1, false, pMat.get(vals));
gl.glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
gl.glVertexAttribPointer(0,3, GL_FLOAT, false, 0,0);
gl.glEnableVertexAttribArray(0);
gl.glEnable(GL_DEPTH_TEST);
gl.glDepthFunc(GL_LEQUAL);
gl.glDrawArrays(GL_TRIANGLES, 0,36);
gl.glEnable(GL_BLEND);
gl.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
gl.glBlendEquation(GL_FUNC_ADD);
}
public void init(GLAutoDrawable drawable)
{ GL4 gl =(GL4) drawable.getGL();
startTime = System.currentTimeMillis();
renderingProgram = Utils.createShaderProgram("code/vertShader.glsl", "code/fragShader.glsl");
setupVertices();
cameraX =0.0f; cameraY =0.0f; cameraZ =8.0f;
cubeLocX =0.0f; cubeLocY =-2.0f; cubeLocZ =0.0f;
}
private void setupVertices()
{ GL4 gl =(GL4) GLContext.getCurrentGL();
float[] vertexPositions =
{-1.0f,1.0f,-1.0f,-1.0f,-1.0f,-1.0f,1.0f,-1.0f,-1.0f,
1.0f,-1.0f,-1.0f,1.0f,1.0f,-1.0f,-1.0f,1.0f,-1.0f,
1.0f,-1.0f,-1.0f,1.0f,-1.0f,1.0f,1.0f,1.0f,-1.0f,
1.0f,-1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,-1.0f,
1.0f,-1.0f,1.0f,-1.0f,-1.0f,1.0f,1.0f,1.0f,1.0f,
-1.0f,-1.0f,1.0f,-1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,
-1.0f,-1.0f,1.0f,-1.0f,-1.0f,-1.0f,-1.0f,1.0f,1.0f,
-1.0f,-1.0f,-1.0f,-1.0f,1.0f,-1.0f,-1.0f,1.0f,1.0f,
-1.0f,-1.0f,1.0f,1.0f,-1.0f,1.0f,1.0f,-1.0f,-1.0f,
1.0f,-1.0f,-1.0f,-1.0f,-1.0f,-1.0f,-1.0f,-1.0f,1.0f,
-1.0f,1.0f,-1.0f,1.0f,1.0f,-1.0f,1.0f,1.0f,1.0f,
1.0f,1.0f,1.0f,-1.0f,1.0f,1.0f,-1.0f,1.0f,

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!