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

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

?? renderer.java

?? NeHe用java與OpenGL結合教程源碼
?? JAVA
字號:
package demos.nehe.lesson09;

import demos.common.TextureReader;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.glu.GLU;

import java.io.IOException;

class Renderer implements GLEventListener {
    private static final int NUMBER_OF_STARS = 50;

    // User Defined Variables
    private boolean twinkle;                      // Twinkling Stars

    private Star stars[] = new Star[NUMBER_OF_STARS];      // Need To Keep Track Of 'num' Stars

    private float zoom = -15.0f;              // Distance Away From Stars
    private boolean zoomIn;
    private boolean zoomOut;

    private float tilt = 90.0f;              // Tilt The View
    private boolean increaseTilt;
    private boolean decreaseTilt;

    private float spin;                         // Spin Stars

    private int textures[] = new int[1];       // Storage For One textures

    private GLU glu = new GLU();

    public void zoomIn(boolean zoom) {
        zoomIn = zoom;
    }

    public void zoomOut(boolean zoom) {
        zoomOut = zoom;
    }

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

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

    public void toggleTwinkle() {
        twinkle = !twinkle;
    }

    private void LoadGLTextures(GL gl) {                                    // Load Bitmaps And Convert To Textures
        TextureReader.Texture texture = null;// Create Storage Space For The Texture
        try {
            texture = TextureReader.readTexture("demos/data/images/star.bmp");
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
        gl.glGenTextures(1, textures, 0);                           // Create One Texture

        // Create Linear Filtered Texture
        gl.glBindTexture(GL.GL_TEXTURE_2D, textures[0]);
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
        gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, 3, texture.getWidth(), texture.getHeight(), 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, texture.getPixels());
    }

    public void init(GLAutoDrawable drawable) {
        GL gl = drawable.getGL();
        gl.glEnable(GL.GL_TEXTURE_2D);                              // Enable Texture Mapping
        gl.glShadeModel(GL.GL_SMOOTH);                              // Enable Smooth Shading
        gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);                    // Black Background
        gl.glClearDepth(1.0f);                                      // Depth Buffer Setup
        gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);  // Really Nice Perspective Calculations
        gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE);                  // Set The Blending Function For Translucency
        gl.glEnable(GL.GL_BLEND);

        for (int loop = 0; loop < stars.length; loop++) {
            stars[loop] = new Star();
            stars[loop].angle = 0.0f;
            stars[loop].dist = ((float) loop / stars.length) * 5.0f;
            stars[loop].r = (int) (Math.random() * 1000) % 256;
            stars[loop].g = (int) (Math.random() * 1000) % 256;
            stars[loop].b = (int) (Math.random() * 1000) % 256;
        }

        LoadGLTextures(gl);
    }

    private void update() {
        if (decreaseTilt)
            tilt -= 0.5f;
        if (increaseTilt)
            tilt += 0.5f;
        if (zoomOut)
            zoom -= 0.2f;
        if (zoomIn)
            zoom += 0.2f;
    }

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

        // Clear Color Buffer, Depth Buffer
        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
        gl.glBindTexture(GL.GL_TEXTURE_2D, textures[0]);     // Select Our Texture

        for (int loop = 0; loop < stars.length; loop++) {                      // Loop Through All The Stars
            gl.glLoadIdentity();                              // Reset The View Before We Draw Each Star
            gl.glTranslatef(0.0f, 0.0f, zoom);                  // Zoom Into The Screen (Using The Value In 'zoom')
            gl.glRotatef(tilt, 1.0f, 0.0f, 0.0f);                // Tilt The View (Using The Value In 'tilt')
            gl.glRotatef(stars[loop].angle, 0.0f, 1.0f, 0.0f);    // Rotate To The Current Stars Angle
            gl.glTranslatef(stars[loop].dist, 0.0f, 0.0f);       // Move Forward On The X Plane
            gl.glRotatef(-stars[loop].angle, 0.0f, 1.0f, 0.0f);   // Cancel The Current Stars Angle
            gl.glRotatef(-tilt, 1.0f, 0.0f, 0.0f);               // Cancel The Screen Tilt

            if (twinkle) {
                gl.glColor4ub((byte) stars[(stars.length - loop) - 1].r, (byte) stars[(stars.length - loop) - 1].g, (byte) stars[(stars.length - loop) - 1].b, (byte) 255);
                gl.glBegin(GL.GL_QUADS);
                gl.glTexCoord2f(0.0f, 0.0f);
                gl.glVertex3f(-1.0f, -1.0f, 0.0f);
                gl.glTexCoord2f(1.0f, 0.0f);
                gl.glVertex3f(1.0f, -1.0f, 0.0f);
                gl.glTexCoord2f(1.0f, 1.0f);
                gl.glVertex3f(1.0f, 1.0f, 0.0f);
                gl.glTexCoord2f(0.0f, 1.0f);
                gl.glVertex3f(-1.0f, 1.0f, 0.0f);
                gl.glEnd();
            }

            gl.glRotatef(spin, 0.0f, 0.0f, 1.0f);
            gl.glColor4ub((byte) stars[loop].r, (byte) stars[loop].g, (byte) stars[loop].b, (byte) 255);
            gl.glBegin(GL.GL_QUADS);
            gl.glTexCoord2f(0.0f, 0.0f);
            gl.glVertex3f(-1.0f, -1.0f, 0.0f);
            gl.glTexCoord2f(1.0f, 0.0f);
            gl.glVertex3f(1.0f, -1.0f, 0.0f);
            gl.glTexCoord2f(1.0f, 1.0f);
            gl.glVertex3f(1.0f, 1.0f, 0.0f);
            gl.glTexCoord2f(0.0f, 1.0f);
            gl.glVertex3f(-1.0f, 1.0f, 0.0f);
            gl.glEnd();

            spin += 0.01f;
            stars[loop].angle += (float) loop / stars.length;
            stars[loop].dist -= 0.01f;

            if (stars[loop].dist < 0.0f) {
                stars[loop].dist += 5.0f;
                stars[loop].r = (int) (Math.random() * 1000) % 256;
                stars[loop].g = (int) (Math.random() * 1000) % 256;
                stars[loop].b = (int) (Math.random() * 1000) % 256;
            }
        }
    }

    public void reshape(GLAutoDrawable drawable,
                        int xstart,
                        int ystart,
                        int width,
                        int height) {
        GL gl = drawable.getGL();

        height = (height == 0) ? 1 : height;

        gl.glViewport(0, 0, width, height);
        gl.glMatrixMode(GL.GL_PROJECTION);
        gl.glLoadIdentity();

        glu.gluPerspective(45, (float) width / height, 1, 1000);
        gl.glMatrixMode(GL.GL_MODELVIEW);
        gl.glLoadIdentity();
    }

    public void displayChanged(GLAutoDrawable drawable,
                               boolean modeChanged,
                               boolean deviceChanged) {
    }

    private class Star {                        // Create A Structure For Star
        int r, g, b;          // Stars Color
        float dist,           // Stars Distance From Center
        angle;          // Stars Current Angle
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区视频在线| 亚洲欧洲成人自拍| 色噜噜狠狠色综合中国| 从欧美一区二区三区| 韩国女主播成人在线| 裸体健美xxxx欧美裸体表演| 香蕉成人啪国产精品视频综合网 | 欧美巨大另类极品videosbest | 夜色激情一区二区| 国产精品激情偷乱一区二区∴| 久久精品视频一区| 国产欧美一区二区三区沐欲| 国产精品麻豆视频| 日韩一区中文字幕| 亚洲一二三四区不卡| 亚洲国产精品久久久久秋霞影院| 亚洲国产sm捆绑调教视频| 亚洲一区在线观看免费观看电影高清| 亚洲综合免费观看高清完整版| 亚洲一区二区精品视频| 日本中文字幕一区二区视频| 捆绑紧缚一区二区三区视频| 高清不卡一区二区| 在线观看一区二区视频| 51久久夜色精品国产麻豆| 欧美成人一区二区三区片免费| 精品国精品自拍自在线| 国产精品对白交换视频| 亚洲自拍偷拍图区| 欧美日韩一本到| 91在线丨porny丨国产| 99国产精品久久久久久久久久| 色综合久久中文字幕| 欧美日韩不卡一区| 国产情人综合久久777777| 亚洲女同女同女同女同女同69| 亚洲成av人影院在线观看网| 国产一区二区0| 欧美亚洲一区二区在线| 精品国产乱码久久久久久夜甘婷婷| 中文字幕国产一区| 亚洲成人免费电影| 成人av资源网站| 欧美一区二区精品| 亚洲免费在线观看视频| 韩国成人福利片在线播放| 色婷婷国产精品综合在线观看| 日韩免费性生活视频播放| 国产一区二区福利视频| 欧美性极品少妇| 国产精品久久久久毛片软件| 日本系列欧美系列| 91色婷婷久久久久合中文| 欧美tickling挠脚心丨vk| 亚洲小少妇裸体bbw| 成人开心网精品视频| 日韩免费视频一区二区| 午夜精品一区二区三区三上悠亚 | 国产精品中文字幕日韩精品| 欧美视频自拍偷拍| 国产精品福利影院| 国产一区二区日韩精品| 日韩午夜av一区| 亚洲v中文字幕| 色激情天天射综合网| 国产日韩欧美高清| 国内成+人亚洲+欧美+综合在线| 欧美精品自拍偷拍动漫精品| 一区二区成人在线观看| aaa亚洲精品| 国产精品免费视频观看| 国产成人啪午夜精品网站男同| 日韩久久久精品| 蜜桃精品视频在线观看| 欧美一区在线视频| 日本不卡123| 91精品国产一区二区三区蜜臀 | 日韩专区一卡二卡| 欧美性大战久久久| 亚洲午夜免费视频| 欧美在线视频全部完| 亚洲国产欧美在线| 在线观看日韩毛片| 亚洲成人在线免费| 制服丝袜激情欧洲亚洲| 青青青爽久久午夜综合久久午夜| 欧美巨大另类极品videosbest | 亚洲精品中文字幕在线观看| 91视频xxxx| 亚洲成人自拍一区| 欧美精品丝袜中出| 久久激五月天综合精品| 久久久美女艺术照精彩视频福利播放| 国产美女精品一区二区三区| 国产喂奶挤奶一区二区三区| 99在线精品观看| 亚洲国产精品精华液网站| 91精品久久久久久久久99蜜臂| 欧美aⅴ一区二区三区视频| 精品久久一区二区三区| 国产精品123区| 一区二区三区在线观看动漫| 欧美日韩国产综合一区二区| 久久er精品视频| 国产精品不卡一区二区三区| 欧美日韩第一区日日骚| 寂寞少妇一区二区三区| 亚洲欧洲在线观看av| 欧美日韩精品免费| 国产精品一区二区在线播放| 亚洲品质自拍视频网站| 日韩一区二区视频在线观看| 成人亚洲精品久久久久软件| 亚洲国产成人av网| 26uuu亚洲| 欧美性猛交xxxxxx富婆| 韩国v欧美v日本v亚洲v| 亚洲在线免费播放| 国产人伦精品一区二区| 欧美精品第一页| 99热精品国产| 精品一区二区三区免费播放| 亚洲欧美日韩国产另类专区| 精品久久国产字幕高潮| 日本高清视频一区二区| 极品瑜伽女神91| 日韩精品一级中文字幕精品视频免费观看| 久久久精品免费网站| 亚洲激情五月婷婷| 国产亚洲一区二区三区在线观看| 欧美色视频一区| 北岛玲一区二区三区四区| 美女在线视频一区| 亚洲狠狠爱一区二区三区| 国产欧美日韩视频在线观看| 欧美精品在线一区二区| 91国偷自产一区二区开放时间| 成人在线视频首页| 国产精品一区专区| 日本视频在线一区| 午夜欧美电影在线观看| 亚洲免费av高清| 亚洲欧洲精品天堂一级| 国产欧美日韩不卡免费| 久久色在线视频| 久久人人爽人人爽| 精品三级在线观看| 91.com在线观看| 欧美精品aⅴ在线视频| 91高清视频在线| 在线观看成人小视频| 91免费国产在线| 91麻豆精东视频| 色琪琪一区二区三区亚洲区| 91免费视频观看| 色综合一区二区| 91成人在线免费观看| 色婷婷精品大在线视频| 色综合天天综合| 欧美日韩一区在线| 欧美挠脚心视频网站| 欧美人伦禁忌dvd放荡欲情| 欧美酷刑日本凌虐凌虐| 欧美精品乱人伦久久久久久| 51精品国自产在线| 欧美第一区第二区| 精品国产一区二区国模嫣然| 精品国产乱码久久久久久1区2区| 精品国产三级a在线观看| 久久久噜噜噜久久中文字幕色伊伊| 久久综合久久久久88| 久久久国产综合精品女国产盗摄| www国产成人| 国产精品久久久久毛片软件| 亚洲美女视频在线观看| 性做久久久久久| 国产一区二区影院| 91一区二区在线观看| 欧美亚洲一区二区在线| 日韩一区二区三免费高清| 久久一留热品黄| 亚洲精品中文在线观看| 亚洲国产精品一区二区久久 | 欧美精品一区二区久久婷婷| 国产视频一区二区在线| 亚洲欧美日韩精品久久久久| 五月天亚洲精品| 高清视频一区二区| 欧美三级一区二区| 久久久亚洲精华液精华液精华液 | 午夜精品在线视频一区| 黄色日韩网站视频| 91麻豆视频网站| 欧美videossexotv100| 亚洲精品成人在线| 久久99精品久久久| 色综合激情五月| 精品日韩一区二区三区免费视频| 中文字幕色av一区二区三区| 青椒成人免费视频|