⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgautomaticshaderexample.java

📁 基于java的3d开发库。对坐java3d的朋友有很大的帮助。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        //-----------------------------------------------------------------        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 + -