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.GL;
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;
private int vbo new int;
private float cameraX, cameraY, cameraZ;
private float cubeLocX, cubeLocY, cubeLocZ;
allocate variables for display function
private FloatBuffer vals Buffers.newDirectFloatBuffer; buffer for transfering matrix to uniform
private Matrixf pMat new Matrixf; perspective matrix
private Matrixf vMat new Matrixf; view matrix
private Matrixf mMat new Matrixf; model matrix
private Matrixf mvMat new Matrixf; modelview matrix
private int mvLoc, pLoc;
private float aspect;
private double tf;
private double startTime;
private double elapsedTime;
public Code
setTitleChapter program c;
setSize;
GLProfile glp GLProfile.getMaxProgrammableCoretrue;
GLCapabilities caps new GLCapabilitiesglp;
myCanvas new GLCanvascaps;
myCanvas.addGLEventListenerthis;
this.addmyCanvas;
this.setVisibletrue;
Animator animator new AnimatormyCanvas;
animator.start;
public void displayGLAutoDrawable drawable
GL gl GL GLContext.getCurrentGL;
glglClearGLDEPTHBUFFERBIT;
glglClearGLCOLORBUFFERBIT;
glglUseProgramrenderingProgram;
mvLoc glglGetUniformLocationrenderingProgrammvmatrix";
pLoc glglGetUniformLocationrenderingProgrampmatrix";
aspect float myCanvas.getWidthfloat myCanvas.getHeight;
pMat.setPerspectivefloat Math.toRadiansf aspect, ff;
vMat.translationcameraX, cameraY, cameraZ;
elapsedTime System.currentTimeMillis startTime;
tf elapsedTime; time factor
mMat.identity;
mMattranslatefloatMathsinftfffloatMathsinftfffloatMathsinftff;
mMat.rotateXYZfffloattf;
mvMat.identity;
mvMat.mulvMat;
mvMat.mulmMat;
glglUniformMatrixfvmvLoc false, mvMat.getvals;
glglUniformMatrixfvpLoc false, pMat.getvals;
glglBindBufferGLARRAYBUFFER, vbo;
glglVertexAttribPointer GLFLOAT, false, ;
glglEnableVertexAttribArray;
glglEnableGLDEPTHTEST;
glglDepthFuncGLLEQUAL;
glglDrawArraysGLTRIANGLES, ;
glglEnableGLBLEND;
glglBlendFuncGLSRCALPHA, GLONEMINUSSRCALPHA;
glglBlendEquationGLFUNCADD;
public void initGLAutoDrawable drawable
GL gl GL drawable.getGL;
startTime System.currentTimeMillis;
renderingProgram Utils.createShaderProgramcodevertShaderglsl "codefragShaderglsl;
setupVertices;
cameraX f; cameraY f; cameraZ f;
cubeLocX f; cubeLocY f; cubeLocZ f;
private void setupVertices
GL gl GL GLContext.getCurrentGL;
float vertexPositions
fffffffff
fffffffff
fffffffff
fffffffff
fffffffff
fffffffff
fffffffff
fffffffff
fffffffff
fffffffff
fffffffff
ffffffff
