亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? renderer.java

?? NeHe用java與OpenGL結合教程源碼
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
package demos.nehe.lesson30;

import demos.common.ResourceRetriever;
import demos.common.TextureReader;
import demos.nehe.lesson30.math.Tuple3d;
import javax.media.opengl.*;
import javax.media.opengl.glu.GLUquadric;
import javax.media.opengl.glu.GLU;

import java.io.IOException;

class Renderer implements GLEventListener {
    private static final float EPSILON = 1e-8f;

    private Tuple3d[] arrayVel = new Tuple3d[10];            //holds velocity of balls
    private Tuple3d[] arrayPos = new Tuple3d[10];            //position of balls
    private Tuple3d[] oldPos = new Tuple3d[10];            //old position of balls
    private Tuple3d veloc = new Tuple3d(.5, -.1, .5);  //initial velocity of balls
    private Tuple3d accel = new Tuple3d(0, -.05, 0);  //acceleration ie. gravity of balls
    private Tuple3d dir = new Tuple3d(0, 0, -10);  //initial direction of camera
    private Tuple3d cameraPosition = new Tuple3d(0, -50, 1000);  //initial position of cameraT
    private boolean increaseCameraZ;
    private boolean decreaseCameraZ;

    private double timeStep = .6;                               //timestep of simulation
    private boolean increaseTimeStep;
    private boolean decreaseTimeStep;

    private float cameraRotation = 0;                           //holds rotation around the Y axis
    private boolean increaseCameraRotation;
    private boolean decreaseCameraRotation;

    private float[] spec = {1.0f, 1.0f, 1.0f, 1.0f};      //sets specular highlight of balls
    private float[] posl = {0.0f, 400f, 0.0f, 1.0f};      //position of ligth source
    private float[] amb2 = {0.3f, 0.3f, 0.3f, 1.0f};      //ambient of lightsource
    private float[] amb = {0.2f, 0.2f, 0.2f, 1.0f};      //global ambient

    private int dlist;                       //stores display list
    private int[][] texture = new int[2][2];//stores texture objects
    private int nrOfBalls;                   //sets the number of balls,
    private boolean cameraAttachedToBall = false;            //hook camera on ball, and sound on/off
    private boolean soundsEnabled = true;            //hook camera on ball, and sound on/off

    private Plane pl1,pl2,pl3,pl4,pl5;                  //the 5 planes of the room
    private Cylinder cyl1,cyl2,cyl3;                       //the 2 cylinders of the room
    private Explosion[] explosions = new Explosion[20]; //holds max 20 explosions at once
    private GLUquadric cylinder;                         //Quadratic object to render the cylinders

    private AudioSample audioSample;

    private GLU glu = new GLU();

    public void zoomOut(boolean increase) {
        increaseCameraZ = increase;
    }

    public void zoomIn(boolean decrease) {
        decreaseCameraZ = decrease;
    }

    public void increaseTimeStep(boolean increase) {
        increaseTimeStep = increase;
    }

    public void decreaseTimeStep(boolean decrease) {
        decreaseTimeStep = decrease;
    }

    public boolean isSoundsEnabled() {
        return soundsEnabled;
    }

    public void toggleSounds() {
        this.soundsEnabled = !soundsEnabled;
    }

    public boolean isCameraAttachedToBall() {
        return cameraAttachedToBall;
    }

    public void toggleCameraAttachedToBall() {
        this.cameraAttachedToBall = !cameraAttachedToBall;
        cameraRotation = 0;
    }

    public void increaseCameraRotation(boolean increase) {
        increaseCameraRotation = increase;
    }

    public void decreaseCameraRotation(boolean decrease) {
        decreaseCameraRotation = decrease;
    }

    public void init(GLAutoDrawable drawable) {
        GL gl = drawable.getGL();

        float df[] = {100f};

        gl.glClearDepth(1.0f);                                      // Depth Buffer Setup
        gl.glEnable(GL.GL_DEPTH_TEST);                              // Enables Depth Testing
        gl.glDepthFunc(GL.GL_LEQUAL);                               // The Type Of Depth Testing To Do
        gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); // Really Nice Perspective Calculations

        gl.glClearColor(0, 0, 0, 0);
        gl.glMatrixMode(GL.GL_MODELVIEW);
        gl.glLoadIdentity();

        gl.glShadeModel(GL.GL_SMOOTH);
        gl.glEnable(GL.GL_CULL_FACE);
        gl.glEnable(GL.GL_DEPTH_TEST);

        gl.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR, spec, 0);
        gl.glMaterialfv(GL.GL_FRONT, GL.GL_SHININESS, df, 0);

        gl.glEnable(GL.GL_LIGHTING);
        gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, posl, 0);
        gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, amb2, 0);
        gl.glEnable(GL.GL_LIGHT0);

        gl.glLightModelfv(GL.GL_LIGHT_MODEL_AMBIENT, amb, 0);
        gl.glEnable(GL.GL_COLOR_MATERIAL);
        gl.glColorMaterial(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE);

        gl.glEnable(GL.GL_BLEND);
        gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE);

        gl.glEnable(GL.GL_TEXTURE_2D);
        loadGLTextures(gl);

        //Construct billboarded explosion primitive as display list
        //4 quads at right angles to each other
        gl.glNewList(dlist = gl.glGenLists(1), GL.GL_COMPILE);
        gl.glBegin(GL.GL_QUADS);
        gl.glRotatef(-45, 0, 1, 0);
        gl.glNormal3f(0, 0, 1);
        gl.glTexCoord2f(0.0f, 0.0f);
        gl.glVertex3f(-50, -40, 0);
        gl.glTexCoord2f(0.0f, 1.0f);
        gl.glVertex3f(50, -40, 0);
        gl.glTexCoord2f(1.0f, 1.0f);
        gl.glVertex3f(50, 40, 0);
        gl.glTexCoord2f(1.0f, 0.0f);
        gl.glVertex3f(-50, 40, 0);
        gl.glNormal3f(0, 0, -1);
        gl.glTexCoord2f(0.0f, 0.0f);
        gl.glVertex3f(-50, 40, 0);
        gl.glTexCoord2f(0.0f, 1.0f);
        gl.glVertex3f(50, 40, 0);
        gl.glTexCoord2f(1.0f, 1.0f);
        gl.glVertex3f(50, -40, 0);
        gl.glTexCoord2f(1.0f, 0.0f);
        gl.glVertex3f(-50, -40, 0);

        gl.glNormal3f(1, 0, 0);
        gl.glTexCoord2f(0.0f, 0.0f);
        gl.glVertex3f(0, -40, 50);
        gl.glTexCoord2f(0.0f, 1.0f);
        gl.glVertex3f(0, -40, -50);
        gl.glTexCoord2f(1.0f, 1.0f);
        gl.glVertex3f(0, 40, -50);
        gl.glTexCoord2f(1.0f, 0.0f);
        gl.glVertex3f(0, 40, 50);
        gl.glNormal3f(-1, 0, 0);
        gl.glTexCoord2f(0.0f, 0.0f);
        gl.glVertex3f(0, 40, 50);
        gl.glTexCoord2f(0.0f, 1.0f);
        gl.glVertex3f(0, 40, -50);
        gl.glTexCoord2f(1.0f, 1.0f);
        gl.glVertex3f(0, -40, -50);
        gl.glTexCoord2f(1.0f, 0.0f);
        gl.glVertex3f(0, -40, 50);
        gl.glEnd();
        gl.glEndList();

        try {
            audioSample = new AudioSample(
                    ResourceRetriever.getResourceAsStream("demos/data/samples/explode.wav")
            );
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
        initVars(glu);
    }

    private void loadGLTextures(GL gl) {
        TextureReader.Texture image1 = null;
        TextureReader.Texture image2 = null;
        TextureReader.Texture image3 = null;
        TextureReader.Texture image4 = null;
        try {
            image1 = TextureReader.readTexture("demos/data/images/marble.bmp");
            image2 = TextureReader.readTexture("demos/data/images/spark.bmp");
            image3 = TextureReader.readTexture("demos/data/images/boden.bmp");
            image4 = TextureReader.readTexture("demos/data/images/wand.bmp");
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }

        /* Create Texture	*****************************************/
        gl.glGenTextures(2, texture[0], 0);
        gl.glBindTexture(GL.GL_TEXTURE_2D, texture[0][0]);   /* 2d texture (x and y size)*/

        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); /* scale linearly when image bigger than texture*/
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR); /* scale linearly when image smalled than texture*/
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT);
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT);

        /* 2d texture, level of detail 0 (normal), 3 components (red, green, blue), x size from image, y size from image, */
        /* border 0 (normal), rgb color data, unsigned byte data, and finally the data itself.*/
        gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, 3, image1.getWidth(), image1.getHeight(), 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, image1.getPixels());

        /* Create Texture	******************************************/
        gl.glBindTexture(GL.GL_TEXTURE_2D, texture[0][1]);   /* 2d texture (x and y size)*/

        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); /* scale linearly when image bigger than texture*/
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR); /* scale linearly when image smalled than texture*/
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT);
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT);

        /* 2d texture, level of detail 0 (normal), 3 components (red, green, blue), x size from image, y size from image, */
        /* border 0 (normal), rgb color data, unsigned byte data, and finally the data itself.*/
        gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, 3, image2.getWidth(), image2.getHeight(), 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, image2.getPixels());


        /* Create Texture	********************************************/
        gl.glGenTextures(2, texture[1], 0);
        gl.glBindTexture(GL.GL_TEXTURE_2D, texture[1][0]);   /* 2d texture (x and y size)*/

        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); /* scale linearly when image bigger than texture*/
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR); /* scale linearly when image smalled than texture*/
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT);
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT);

        /* 2d texture, level of detail 0 (normal), 3 components (red, green, blue), x size from image, y size from image, */
        /* border 0 (normal), rgb color data, unsigned byte data, and finally the data itself.*/
        gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, 3, image3.getWidth(), image3.getHeight(), 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, image3.getPixels());

        /* Create Texture	*********************************************/
        gl.glBindTexture(GL.GL_TEXTURE_2D, texture[1][1]);   /* 2d texture (x and y size)*/

        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); /* scale linearly when image bigger than texture*/
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR); /* scale linearly when image smalled than texture*/
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT);
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT);

        /* 2d texture, level of detail 0 (normal), 3 components (red, green, blue), x size from image, y size from image, */
        /* border 0 (normal), rgb color data, unsigned byte data, and finally the data itself.*/
        gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, 3, image4.getWidth(), image4.getHeight(), 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, image4.getPixels());
    }

    private void initVars(GLU glu) {
        //create palnes
        pl1 = new Plane();
        pl1.position = new Tuple3d(0, -300, 0);
        pl1.normal = new Tuple3d(0, 1, 0);

        pl2 = new Plane();
        pl2.position = new Tuple3d(300, 0, 0);
        pl2.normal = new Tuple3d(-1, 0, 0);

        pl3 = new Plane();
        pl3.position = new Tuple3d(-300, 0, 0);
        pl3.normal = new Tuple3d(1, 0, 0);

        pl4 = new Plane();
        pl4.position = new Tuple3d(0, 0, 300);
        pl4.normal = new Tuple3d(0, 0, -1);

        pl5 = new Plane();
        pl5.position = new Tuple3d(0, 0, -300);
        pl5.normal = new Tuple3d(0, 0, 1);

        cyl1 = new Cylinder();
        cyl1.position = new Tuple3d(0, 0, 0);
        cyl1.axis = new Tuple3d(0, 1, 0);
        cyl1.radius = 60 + 20;

        cyl2 = new Cylinder();
        cyl2.position = new Tuple3d(200, -300, 0);
        cyl2.axis = new Tuple3d(0, 0, 1);
        cyl2.radius = 60 + 20;

        cyl3 = new Cylinder();
        cyl3.position = new Tuple3d(-200, 0, 0);
        cyl3.axis = new Tuple3d(0, 1, 1);
        cyl3.axis.normalize();
        cyl3.radius = 30 + 20;

        //create quadratic object to render cylinders
        cylinder = glu.gluNewQuadric();
        glu.gluQuadricTexture(cylinder, true);

        //Set initial positions and velocities of balls
        //also initialize array which holds explosions
        nrOfBalls = 10;
        arrayVel[0] = new Tuple3d(veloc);
        arrayPos[0] = new Tuple3d(199, 180, 10);

        explosions[0] = new Explosion();
        explosions[0].alpha = 0;
        explosions[0].scale = 1;
        arrayVel[1] = new Tuple3d(veloc);
        arrayPos[1] = new Tuple3d(0, 150, 100);

        explosions[1] = new Explosion();
        explosions[1].alpha = 0;
        explosions[1].scale = 1;
        arrayVel[2] = new Tuple3d(veloc);
        arrayPos[2] = new Tuple3d(-100, 180, -100);

        explosions[2] = new Explosion();
        explosions[2].alpha = 0;
        explosions[2].scale = 1;

        for (int i = 3; i < 10; i++) {
            arrayVel[i] = new Tuple3d(veloc);
            arrayPos[i] = new Tuple3d(-500 + i * 75, 300, -500 + i * 50);

            explosions[i] = new Explosion();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人深夜小野草| 中文字幕日本乱码精品影院| 色婷婷av一区二区三区大白胸| 国产精品亚洲第一| 国产风韵犹存在线视精品| 免费久久精品视频| 国产一区二区看久久| 激情深爱一区二区| 国产在线播放一区| 成人午夜激情视频| 99v久久综合狠狠综合久久| 97国产精品videossex| 91在线免费视频观看| 色狠狠桃花综合| 在线播放91灌醉迷j高跟美女| 欧美日韩精品免费观看视频| 欧美精选一区二区| 亚洲精品一区二区精华| 日本一二三四高清不卡| 亚洲欧美福利一区二区| 亚洲一区二区精品久久av| 日本午夜精品一区二区三区电影| 免费人成精品欧美精品 | 欧美亚洲国产一卡| 56国语精品自产拍在线观看| 精品久久人人做人人爽| 国产精品欧美一级免费| 亚洲一区二区在线视频| 激情综合网天天干| 97久久精品人人做人人爽50路| 欧美图区在线视频| 久久亚洲私人国产精品va媚药| 中文字幕日韩精品一区| 日韩av在线播放中文字幕| 国产91精品精华液一区二区三区 | 国产精品乡下勾搭老头1| 91丨九色porny丨蝌蚪| 日韩三级.com| 亚洲欧美区自拍先锋| 蜜臀久久99精品久久久久宅男| 风间由美性色一区二区三区| 欧美色网一区二区| 日本一区二区免费在线观看视频| 亚洲综合成人网| 国产精品一二二区| 欧美日韩国产片| 国产精品天美传媒沈樵| 爽好久久久欧美精品| 99精品欧美一区二区三区综合在线| 91精品国产高清一区二区三区| 国产日韩影视精品| 麻豆国产一区二区| 欧美性大战久久久久久久蜜臀| 久久久国产精品不卡| 日本一区中文字幕 | www欧美成人18+| 性做久久久久久| 国产精品亚洲一区二区三区在线| 91精品国产免费久久综合| 亚洲一区二区五区| 91免费小视频| 最好看的中文字幕久久| 丁香天五香天堂综合| 久久久久久9999| 国产伦精品一区二区三区在线观看 | 亚洲一区二区三区视频在线 | 日日夜夜一区二区| 欧美优质美女网站| ...av二区三区久久精品| 成人免费的视频| 国产精品五月天| 粉嫩嫩av羞羞动漫久久久| 久久亚洲精华国产精华液| 免费在线观看一区| 精品久久久久久久久久久久久久久久久| 日日摸夜夜添夜夜添精品视频| 欧美手机在线视频| 亚洲一区二区在线观看视频| 欧美在线三级电影| 亚洲午夜国产一区99re久久| 欧美日韩综合在线免费观看| 亚洲图片自拍偷拍| 3d动漫精品啪啪1区2区免费 | 国产福利视频一区二区三区| 国产亚洲污的网站| 9人人澡人人爽人人精品| 中文字幕日韩欧美一区二区三区| 91视频xxxx| 亚洲va国产va欧美va观看| 6080日韩午夜伦伦午夜伦| 精品在线一区二区| 国产精品萝li| 欧美在线免费播放| 蜜臀99久久精品久久久久久软件| 欧美成人激情免费网| 成人免费看的视频| 一区二区三区四区激情| 51精品视频一区二区三区| 精品一区免费av| 中文字幕色av一区二区三区| 色婷婷激情久久| 久久99国产乱子伦精品免费| 欧美国产日韩亚洲一区| 色婷婷av一区| 国模一区二区三区白浆| 亚洲国产精品精华液2区45| 欧美无砖砖区免费| 国产一区二区久久| 亚洲二区视频在线| 国产视频视频一区| 欧美另类videos死尸| 国产精品888| 亚洲成av人片在线观看| 国产日产欧美一区二区三区| 欧美视频在线一区二区三区| 国产综合成人久久大片91| 亚洲免费观看高清在线观看| 欧美成人高清电影在线| 在线免费观看一区| 国产精品中文字幕欧美| 午夜私人影院久久久久| 最近中文字幕一区二区三区| 欧美mv日韩mv| 欧美剧情电影在线观看完整版免费励志电影 | 色综合天天综合网天天狠天天 | 国产亚洲一二三区| 国产亚洲精品中文字幕| 欧美日韩一本到| 99麻豆久久久国产精品免费| 精品一二线国产| 亚洲一区二区三区在线| 国产精品久久久久影院亚瑟| 精品国产乱码久久久久久图片| 91豆麻精品91久久久久久| 成人性色生活片免费看爆迷你毛片| 裸体在线国模精品偷拍| 午夜精品久久久| 亚洲免费观看高清在线观看| 欧美国产精品劲爆| 亚洲国产精品v| 26uuu久久天堂性欧美| 日韩写真欧美这视频| 欧美日韩成人在线一区| 91成人免费网站| 色又黄又爽网站www久久| 成人黄色电影在线| 不卡av在线网| 成人动漫av在线| 丰满少妇在线播放bd日韩电影| 韩国成人福利片在线播放| 韩国欧美国产1区| 狠狠色丁香久久婷婷综合丁香| 免费成人深夜小野草| 美女网站在线免费欧美精品| 日韩中文字幕91| 免费成人在线视频观看| 奇米精品一区二区三区四区| 日韩av二区在线播放| 久久99国产精品尤物| 韩国理伦片一区二区三区在线播放| 成人综合日日夜夜| 99精品在线免费| 91首页免费视频| 欧美日韩一区二区三区视频| 在线播放视频一区| 精品国产一区二区国模嫣然| 久久欧美一区二区| 1区2区3区精品视频| 亚洲一区二区三区精品在线| 日韩专区中文字幕一区二区| 麻豆精品精品国产自在97香蕉| 国产成人av影院| 色综合久久99| 8x8x8国产精品| 国产亚洲一本大道中文在线| 亚洲色图在线看| 免费高清成人在线| 成人污视频在线观看| 99re热这里只有精品视频| 欧美日韩国产一区| 久久亚洲精华国产精华液| 亚洲欧美一区二区三区极速播放| 首页国产欧美久久| 成人在线一区二区三区| 欧美视频三区在线播放| 久久免费看少妇高潮| 亚洲成在人线免费| 国产精品一区二区久激情瑜伽 | 青青草伊人久久| 国产不卡视频一区| 欧美日韩综合在线| 国产欧美日韩综合| 亚洲午夜一区二区| 国产麻豆欧美日韩一区| 欧美性xxxxx极品少妇| 国产拍揄自揄精品视频麻豆| 亚洲v精品v日韩v欧美v专区| eeuss鲁片一区二区三区在线看| 制服丝袜中文字幕亚洲| 亚洲欧美日韩中文字幕一区二区三区 |