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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? renderer.java

?? NeHe用java與OpenGL結(jié)合教程源碼
?? JAVA
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
package demos.nehe.lesson42;

import com.sun.opengl.util.BufferUtil;

import javax.media.opengl.*;
import javax.media.opengl.glu.GLUquadric;
import javax.media.opengl.glu.GLU;

import java.nio.ByteBuffer;

class Renderer implements GLEventListener {
    private static final int MAZE_WIDTH = 128; // Maze Width  (Must Be A Power Of 2)
    private static final int MAZE_HEIGHT = 128; // Maze Height (Must Be A Power Of 2)

    private int mx,my;																// General Loops (Used For Seeking)
    private ByteBuffer tex_data = BufferUtil.newByteBuffer(MAZE_WIDTH * MAZE_HEIGHT * 3);
    private byte[] r = new byte[4];												// Random Colors (4 Red, 4 Green, 4 Blue)
    private byte[] g = new byte[4];
    private byte[] b = new byte[4];
    private GLU glu = new GLU();
    private GLUquadric quadric;
    private float xrot, yrot, zrot;												// Use For Rotation Of Objects

    private long previousTime = System.currentTimeMillis();

    private boolean resetMaze = false;

    public void resetMaze() {
        resetMaze = true;
    }

    private void updateTex(int dmx, int dmy)										// Update Pixel dmx, dmy On The Texture
    {
        tex_data.put(((dmx + (MAZE_WIDTH * dmy)) * 3), (byte) 255);								// Set Red Pixel To Full Bright
        tex_data.put(1 + ((dmx + (MAZE_WIDTH * dmy)) * 3), (byte) 255);								// Set Green Pixel To Full Bright
        tex_data.put(2 + ((dmx + (MAZE_WIDTH * dmy)) * 3), (byte) 255);								// Set Blue Pixel To Full Bright
    }

    private void reset()														// Reset The Maze, Colors, Start Point, Etc
    {
        tex_data.clear();
        while(tex_data.hasRemaining()) {
            tex_data.put((byte)0);
        }
        tex_data.flip();

        for (int loop = 0; loop < 4; loop++)									// Loop So We Can Assign 4 Random Colors
        {
            r[loop] = (byte) ((int) (Math.random() * Integer.MAX_VALUE) % 128 + 128);											// Pick A Random Red Color (Bright)
            g[loop] = (byte) ((int) (Math.random() * Integer.MAX_VALUE) % 128 + 128);											// Pick A Random Green Color (Bright)
            b[loop] = (byte) ((int) (Math.random() * Integer.MAX_VALUE) % 128 + 128);											// Pick A Random Blue Color (Bright)
        }

        setRandomMazePosition();
    }

    private void setRandomMazePosition() {
        mx = (int) Math.round(Math.random() * ((MAZE_WIDTH - 1) / 2)) * 2; // Pick A New Random X Position
        my = (int) Math.round(Math.random() * ((MAZE_HEIGHT - 1) / 2)) * 2; // Pick A New Random Y Position
    }

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

        reset();															// Call Reset To Build Our Initial Texture, Etc.

        // Start Of User Initialization
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP);
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP);
        gl.glTexParameterf(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, GL.GL_RGB, MAZE_WIDTH, MAZE_HEIGHT, 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, tex_data);

        gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);								// Black Background
        gl.glClearDepth(1.0f);												// Depth Buffer Setup

        gl.glDepthFunc(GL.GL_LEQUAL);											// The Type Of Depth Testing
        gl.glEnable(GL.GL_DEPTH_TEST);											// Enable Depth Testing

        gl.glEnable(GL.GL_COLOR_MATERIAL);										// Enable Color Material (Allows Us To Tint Textures)

        gl.glEnable(GL.GL_TEXTURE_2D);											// Enable Texture Mapping

        quadric = glu.gluNewQuadric();											// Create A Pointer To The Quadric Object
        glu.gluQuadricNormals(quadric, GLU.GLU_SMOOTH);								// Create Smooth Normals
        glu.gluQuadricTexture(quadric, true);								// Create Texture Coords

        gl.glEnable(GL.GL_LIGHT0);												// Enable Light0 (Default GL Light)
    }

    private void update(float milliseconds)										// Perform Motion Updates Here
    {
        int dir;														// Will Hold Current Direction

        xrot += milliseconds * 0.02f;									// Increase Rotation On The X-Axis
        yrot += milliseconds * 0.03f;									// Increase Rotation On The Y-Axis
        zrot += milliseconds * 0.015f;									// Increase Rotation On The Z-Axis

        // Check To Make Sure We Are Not Trapped (Nowhere Else To Move)
        if ((mx > (MAZE_WIDTH - 4) || (tex_data.get((((mx + 2) + (MAZE_WIDTH * my)) * 3)) != 0)) &&
                (mx < 2 || (tex_data.get((((mx - 2) + (MAZE_WIDTH * my)) * 3)) != 0)) &&
                (my > (MAZE_HEIGHT - 4) || (tex_data.get(((mx + (MAZE_WIDTH * (my + 2))) * 3)) != 0)) &&
                (my < 2 || (tex_data.get(((mx + (MAZE_WIDTH * (my - 2))) * 3)) != 0))
        ) {
            do																// If We Are Trapped
            {
                setRandomMazePosition();
            } while (tex_data.get(((mx + (MAZE_WIDTH * my)) * 3)) == 0);						// Keep Picking A Random Position Until We Find
        }																	// One That Has Already Been Tagged (Safe Starting Point)

        dir = (int) Math.round(Math.random() * 3f);

        if ((dir == 0) && (mx <= (MAZE_WIDTH - 4)))									// If The Direction Is 0 (Right) And We Are Not At The Far Right
        {
            if (tex_data.get((((mx + 2) + (MAZE_WIDTH * my)) * 3)) == 0)						// And If The Room To The Right Has Not Already Been Visited
            {
                updateTex(mx + 1, my);											// Update The Texture To Show Path Cut Out Between Rooms
                mx += 2;														// Move To The Right (Room To The Right)
            }
        }

        if ((dir == 1) && (my <= (MAZE_HEIGHT - 4)))									// If The Direction Is 1 (Down) And We Are Not At The Bottom
        {
            if (tex_data.get(((mx + (MAZE_WIDTH * (my + 2))) * 3)) == 0)						// And If The Room Below Has Not Already Been Visited
            {
                updateTex(mx, my + 1);											// Update The Texture To Show Path Cut Out Between Rooms
                my += 2;														// Move Down (Room Below)
            }
        }

        if ((dir == 2) && (mx >= 2))											// If The Direction Is 2 (Left) And We Are Not At The Far Left
        {
            if (tex_data.get((((mx - 2) + (MAZE_WIDTH * my)) * 3)) == 0)						// And If The Room To The Left Has Not Already Been Visited
            {
                updateTex(mx - 1, my);											// Update The Texture To Show Path Cut Out Between Rooms
                mx -= 2;														// Move To The Left (Room To The Left)
            }
        }

        if ((dir == 3) && (my >= 2))											// If The Direction Is 3 (Up) And We Are Not At The Top
        {
            if (tex_data.get(((mx + (MAZE_WIDTH * (my - 2))) * 3)) == 0)						// And If The Room Above Has Not Already Been Visited
            {
                updateTex(mx, my - 1);											// Update The Texture To Show Path Cut Out Between Rooms
                my -= 2;														// Move Up (Room Above)
            }
        }

        updateTex(mx, my);													// Update Current Room
    }

    public void display(GLAutoDrawable drawable) {
        if (resetMaze) {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久免费美女视频| 成人精品小蝌蚪| 日韩电影在线一区| 日韩激情一区二区| 三级影片在线观看欧美日韩一区二区| 亚洲国产精品一区二区久久| 偷拍自拍另类欧美| 免费人成精品欧美精品| 麻豆91在线观看| 国产精品99久久不卡二区| 国产成人综合在线播放| 成人视屏免费看| 97精品超碰一区二区三区| 91极品视觉盛宴| 欧美日韩成人综合| 日韩欧美一区二区久久婷婷| 久久综合九色综合久久久精品综合 | 天堂一区二区在线| 免费在线看成人av| 国产原创一区二区三区| 国产高清不卡二三区| 99精品桃花视频在线观看| 在线视频一区二区三| 欧美日韩国产123区| 日韩欧美国产精品一区| 久久久一区二区| 中文字幕日韩av资源站| 亚洲图片激情小说| 亚洲午夜电影网| 美国三级日本三级久久99| 国产精品99久久久久久久女警 | 91精品国模一区二区三区| 日韩欧美www| 国产拍揄自揄精品视频麻豆| 亚洲人成电影网站色mp4| 爽好多水快深点欧美视频| 久久国产人妖系列| 99r精品视频| 91精品欧美一区二区三区综合在 | 蜜桃精品在线观看| 粉嫩一区二区三区性色av| 色天天综合色天天久久| 欧美日韩综合在线免费观看| 精品国产91久久久久久久妲己| 亚洲欧美自拍偷拍| 日韩在线观看一区二区| 成人手机在线视频| 欧美丰满嫩嫩电影| 国产欧美一区二区精品忘忧草 | 天天操天天干天天综合网| 国模娜娜一区二区三区| 色国产精品一区在线观看| 精品久久久久久久久久久久包黑料 | 久久99国产乱子伦精品免费| 99re6这里只有精品视频在线观看| 91精品国产综合久久精品性色| 亚洲国产高清在线观看视频| 亚洲国产成人高清精品| 成人一级片网址| 日韩一级片在线播放| 国产精品高潮久久久久无| 日本不卡123| 色综合婷婷久久| 久久久久97国产精华液好用吗| 亚洲大尺度视频在线观看| 成人在线综合网| 91精品国产免费久久综合| 亚洲欧美韩国综合色| 国产精品一区二区视频| 5566中文字幕一区二区电影| 一区二区三区资源| 粉嫩一区二区三区在线看| 精品少妇一区二区三区| 午夜在线电影亚洲一区| 99久久久久免费精品国产 | 国产精品麻豆久久久| 精品伊人久久久久7777人| 欧美肥妇free| 亚洲制服丝袜一区| 波多野结衣亚洲一区| 精品成a人在线观看| 亚洲第一福利视频在线| 91视频免费播放| 国产欧美视频在线观看| 久久机这里只有精品| 9191久久久久久久久久久| 亚洲黄色小说网站| 91在线精品秘密一区二区| 欧美国产激情一区二区三区蜜月| 紧缚奴在线一区二区三区| 欧美一区二区精美| 日韩av电影免费观看高清完整版 | 精品美女一区二区| 首页综合国产亚洲丝袜| 欧美伊人精品成人久久综合97| 中文天堂在线一区| 国产一区 二区| 26uuu精品一区二区三区四区在线| 奇米777欧美一区二区| 7777精品伊人久久久大香线蕉完整版 | 国产精品国产三级国产专播品爱网| 国产一区二区成人久久免费影院| 精品国产人成亚洲区| 欧美a一区二区| 69av一区二区三区| 秋霞av亚洲一区二区三| 日韩精品中文字幕在线一区| 久久精品国产免费看久久精品| 日韩一区二区在线看| 麻豆精品精品国产自在97香蕉| 日韩一级片在线观看| 精品一区二区免费在线观看| 精品嫩草影院久久| 国产凹凸在线观看一区二区| 国产精品色婷婷| 97精品电影院| 亚洲一区二区三区四区的| 欧美日韩一级视频| 青青草伊人久久| 久久久久久久综合| jlzzjlzz国产精品久久| 一个色在线综合| 欧美久久久影院| 精品一区二区三区久久久| 欧美激情一区二区三区不卡 | 日韩精品资源二区在线| 国产美女精品在线| 中文字幕一区二区三区在线观看| 色先锋资源久久综合| 亚洲123区在线观看| 日韩免费福利电影在线观看| 国产精品资源网| 亚洲女人小视频在线观看| 欧美日韩1区2区| 国产一区二区0| 亚洲乱码中文字幕| 91麻豆精品国产无毒不卡在线观看| 久久精品久久久精品美女| 国产三级欧美三级| 欧美亚洲日本一区| 久久99国产精品麻豆| 中文无字幕一区二区三区| 色999日韩国产欧美一区二区| 蜜臀国产一区二区三区在线播放| 国产欧美日产一区| 欧美日韩国产一区| 国产精品系列在线观看| 亚洲靠逼com| 久久奇米777| 在线看日本不卡| 国产精品一级黄| 亚洲超丰满肉感bbw| 国产亚洲欧美激情| 欧美日韩一区二区在线观看视频 | 欧美精品一区二区精品网| 色哦色哦哦色天天综合| 精品亚洲成a人| 亚洲色欲色欲www| 久久综合国产精品| 欧美三级午夜理伦三级中视频| 国产高清精品久久久久| 午夜日韩在线电影| 国产精品成人免费| 精品第一国产综合精品aⅴ| 在线视频综合导航| 国产成人av电影在线| 日韩成人免费看| 亚洲人妖av一区二区| 欧美精品一区二区三| 欧美卡1卡2卡| 97se亚洲国产综合自在线不卡| 精品伊人久久久久7777人| 性欧美大战久久久久久久久| 中文字幕制服丝袜成人av| 精品国精品自拍自在线| 欧美在线影院一区二区| 99综合影院在线| 国产乱子伦视频一区二区三区| 婷婷国产v国产偷v亚洲高清| 一区在线观看视频| 久久日一线二线三线suv| 91.com视频| 欧美熟乱第一页| 91黄色小视频| 91片在线免费观看| 国产东北露脸精品视频| 麻豆精品国产传媒mv男同| 亚洲国产视频直播| 最新高清无码专区| 国产精品无遮挡| 久久久久久久久久看片| 日韩亚洲国产中文字幕欧美| 欧美日韩在线直播| 在线视频观看一区| 91网页版在线| 99热99精品| 99久久免费国产| 91麻豆精品一区二区三区| 成人深夜在线观看| 成人h动漫精品一区二区|