📄 cgautomaticshaderexample.java
字号:
//----------------------------------------------------------------- JoglCameraRenderer.activate(gl, camera); //----------------------------------------------------------------- gl.glLoadIdentity(); gl.glRotated(xrotation, 1, 0, 0); gl.glRotated(yrotation, 0, 1, 0); gl.glRotated(zrotation, 0, 0, 1); activateTextures(gl, quality); //- Shader configuration from scene data -------------------------- // IMPORTANT POINT 2/4 JoglRenderer.activateNvidiaGpuParameters(gl, quality, JoglRenderer.getCurrentVertexShader(), JoglRenderer.getCurrentPixelShader()); JoglLightRenderer.activate(gl, light); JoglMaterialRenderer.activate(gl, material); if ( quality.isTextureSet() ) { gl.glEnable(gl.GL_TEXTURE_2D); } else { gl.glDisable(gl.GL_TEXTURE_2D); } JoglGeometryRenderer.draw(gl, geometry, camera, quality); // IMPORTANT POINT 3/4 JoglRenderer.deactivateNvidiaGpuParameters(gl, quality); gl.glLoadIdentity(); JoglLightRenderer.draw(gl, light); } void activateTextures(GL gl, RendererConfiguration quality) { //----------------------------------------------------------------- gl.glEnable(gl.GL_TEXTURE_2D); JoglImageRenderer.activate(gl, textureMap); //- Basic OpenGL texture state setup ------------------------------ gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); //gl.glTexEnvf(gl.GL_TEXTURE_ENV, // GL.GL_TEXTURE_ENV_MODE, gl.GL_DECAL); //----------------------------------------------------------------- // IMPORTANT POINT 4/4 JoglImageRenderer.activateAsNormalMap(gl, convertedNormalMap, quality); } public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) { // nothing } public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { GL gl = drawable.getGL(); gl.glViewport(x, y, width, height); camera.updateViewportResize(width, height); needPaint = 1; } public void mouseEntered(MouseEvent e) { canvas.requestFocusInWindow(); } public void mouseExited(MouseEvent e) { //System.out.println("Mouse exited"); } public void mousePressed(MouseEvent e) { if ( cameraController.processMousePressedEventAwt(e) ) { needPaint = 1; canvas.repaint(); } } public void mouseReleased(MouseEvent e) { if ( cameraController.processMouseReleasedEventAwt(e) ) { needPaint = 1; canvas.repaint(); } } public void mouseClicked(MouseEvent e) { if ( cameraController.processMouseClickedEventAwt(e) ) { needPaint = 1; canvas.repaint(); } } public void mouseMoved(MouseEvent e) { if ( cameraController.processMouseMovedEventAwt(e) ) { needPaint = 1; canvas.repaint(); } } public void mouseDragged(MouseEvent e) { if ( cameraController.processMouseDraggedEventAwt(e) ) { needPaint = 1; canvas.repaint(); } } /** WARNING: It is not working... check pending */ public void mouseWheelMoved(MouseWheelEvent e) { System.out.println("."); if ( cameraController.processMouseWheelEventAwt(e) ) { needPaint = 1; canvas.repaint(); } } public void keyPressed(KeyEvent e) { if ( e.getKeyCode() == KeyEvent.VK_ESCAPE ) { System.exit(0); } if ( cameraController.processKeyPressedEventAwt(e) ) { needPaint = 1; canvas.repaint(); } if ( qualityController.processKeyPressedEventAwt(e) ) { System.out.println(quality); needPaint = 1; canvas.repaint(); } int unicode_id = e.getKeyChar(); if ( unicode_id != e.CHAR_UNDEFINED ) { Vector3D lightPosition = light.getPosition(); switch ( unicode_id ) { case '1': xrotation -= 1.0; break; case '2': xrotation += 1.0; break; case '3': yrotation -= 1.0; break; case '4': yrotation += 1.0; break; case '5': zrotation -= 1.0; break; case '6': zrotation += 1.0; break; case 'h': lightPosition.x -= 0.1; break; case 'k': lightPosition.x += 0.1; break; case 'u': lightPosition.z += 0.1; break; case 'j': lightPosition.z -= 0.1; break; case '9': lightPosition.y -= 0.1; break; case '0': lightPosition.y += 0.1; break; case 'r': withRotationAnimation = !withRotationAnimation; break; case ' ': withLightAnimation = !withLightAnimation; break; } light.setPosition(lightPosition); needPaint = 1; canvas.repaint(); } } public void keyReleased(KeyEvent e) { if ( cameraController.processKeyReleasedEventAwt(e) ) { needPaint = 1; canvas.repaint(); } } /** Do NOT call your controller from the `keyTyped` method, or the controller will be invoked twice for each key. Call it only from the `keyPressed` and `keyReleased` method */ public void keyTyped(KeyEvent e) { ; } public static void main(String[] argv) { //----------------------------------------------------------------- JoglRenderer.verifyOpenGLAvailability(); JoglRenderer.verifyNvidiaCgAvailability(); //----------------------------------------------------------------- CgAutomaticShaderExample instance = new CgAutomaticShaderExample(false); JFrame frame = new JFrame("Vitral SDK / Nvidia Cg demo"); canvas = new GLCanvas(); canvas.addGLEventListener(instance); canvas.addMouseListener(instance); canvas.addMouseMotionListener(instance); canvas.addKeyListener(instance); canvas.addGLEventListener(instance); Animator animator = new Animator(canvas); frame.add(canvas); frame.setSize(1150, 1150); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); canvas.requestFocusInWindow(); animator.start(); }}//===========================================================================//= EOF =//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -