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

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

?? renderer.java

?? NeHe用java與OpenGL結合教程源碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package demos.nehe.lesson32;import com.sun.opengl.util.BufferUtil;import javax.media.opengl.GL;import javax.media.opengl.GLAutoDrawable;import javax.media.opengl.GLEventListener;import javax.media.opengl.glu.GLU;import java.awt.*;import java.awt.geom.Rectangle2D;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.IntBuffer;import java.util.ArrayList;import java.util.Collections;class Renderer implements GLEventListener {    private GLU glu = new GLU();    private long previousTime = System.currentTimeMillis();    private ArrayList targets = new ArrayList();    private TextureImage[] textures; // Storage For 10 Textures    private Rectangle2D.Float[] size = {            new Rectangle2D.Float(0, 0, 1.0f, 1.0f),            new Rectangle2D.Float(0, 0, 1.0f, 1.0f),            new Rectangle2D.Float(0, 0, 1.0f, 1.0f),            new Rectangle2D.Float(0, 0, 0.5f, 1.0f),            new Rectangle2D.Float(0, 0, 0.75f, 1.5f)    };    // User Defined Variables    private int base; // Font Display List    private float roll = 0.0f; // Rolling Clouds    private int level = 1; // Current Level    private int miss; // Missed Targets    private int kills; // Level Kill Counter    private int score; // Current Score    private boolean isGameOver = true; // Game Over?    private int mouseX;    private int mouseY;    private boolean isClicked = false;    private boolean restart;    private TargetType[] targetTypes;    private void BuildFont(GL gl) {        base = gl.glGenLists(95); // Creating 95 Display Lists        gl.glBindTexture(GL.GL_TEXTURE_2D, textures[9].getTexID()); // Bind Our Font Texture        for (int loop = 0; loop < 95; loop++) {            float cx = (loop % 16) / 16.0f;                         // X Position Of Current Character            float cy = (loop / 16) / 16.0f;                          // Y Position Of Current Character            gl.glNewList(base + loop, GL.GL_COMPILE);               // Start Building A List            gl.glBegin(GL.GL_QUADS);                                // Use A Quad For Each Character            {                gl.glTexCoord2f(cx, 1.0f - cy - 0.0625f);                gl.glVertex2i(0, 0);                    // Texture / Vertex Coord (Bottom Left)                gl.glTexCoord2f(cx + 0.0625f, 1.0f - cy - 0.0625f);                gl.glVertex2i(16, 0);                   // Texutre / Vertex Coord (Bottom Right)                gl.glTexCoord2f(cx + 0.0625f, 1.0f - cy);                gl.glVertex2i(16, 16);                  // Texture / Vertex Coord (Top Right)                gl.glTexCoord2f(cx, 1.0f - cy);                gl.glVertex2i(0, 16);                   // Texture / Vertex Coord (Top Left)            }            gl.glEnd();                                     // Done Building Our Quad (Character)            gl.glTranslated(10, 0, 0);                      // Move To The Right Of The Character            gl.glEndList();                                         // Done Building The Display List        } // Loop Until All 95 Are Built    }    public Renderer() {    }    private ByteBuffer stringBuffer = BufferUtil.newByteBuffer(256);    private void glPrint(GL gl, int x, int y, String string) // Where The Printing Happens    {        gl.glBindTexture(GL.GL_TEXTURE_2D, textures[9].getTexID());            // Select Our Font Texture        gl.glDisable(GL.GL_DEPTH_TEST);                            // Disables Depth Testing        gl.glMatrixMode(GL.GL_PROJECTION);                        // Select The Projection Matrix        gl.glPushMatrix();                                        // Store The Projection Matrix        gl.glLoadIdentity();                                    // Reset The Projection Matrix        gl.glOrtho(0, 640, 0, 480, -1, 1);                            // Set Up An Ortho Screen        gl.glMatrixMode(GL.GL_MODELVIEW);                            // Select The Modelview Matrix        gl.glPushMatrix();                                        // Store The Modelview Matrix        gl.glLoadIdentity();                                    // Reset The Modelview Matrix        gl.glTranslated(x, y, 0);                                // Position The Text (0,0 - Bottom Left)        gl.glListBase(base - 32);// + (128 * set));						// Choose The Font Set (0 or 1)        if (stringBuffer.capacity() < string.length()) {            stringBuffer = BufferUtil.newByteBuffer(string.length());        }        stringBuffer.clear();        stringBuffer.put(string.getBytes());        stringBuffer.flip();        gl.glCallLists(string.length(), GL.GL_BYTE, stringBuffer);            // Write The Text To The Screen        gl.glMatrixMode(GL.GL_PROJECTION);                        // Select The Projection Matrix        gl.glPopMatrix();                                        // Restore The Old Projection Matrix        gl.glMatrixMode(GL.GL_MODELVIEW);                            // Select The Modelview Matrix        gl.glPopMatrix();                                        // Restore The Old Projection Matrix        gl.glEnable(GL.GL_DEPTH_TEST);                            // Enables Depth Testing    }    public void init(GLAutoDrawable drawable) {        //	gl.glAlphaFunc(GL_GREATER,0.1f);								// Set Alpha Testing     (disable blending)        //	gl.glEnable(GL_ALPHA_TEST);									// Enable Alpha Testing  (disable blending)        GL gl = drawable.getGL();        targetTypes = new TargetType[]{                TargetType.FACE,                TargetType.BUCKET,                TargetType.TARGET,                TargetType.COKE,                TargetType.VASE        };        textures = new TextureImage[10];        try {            textures[0] = TGALoader.loadTGA(gl, "demos/data/images/BlueFace.tga"); // Load The BlueFace Texture            textures[1] = TGALoader.loadTGA(gl, "demos/data/images/Bucket.tga"); // Load The Bucket Texture            textures[2] = TGALoader.loadTGA(gl, "demos/data/images/Target.tga"); // Load The Target Texture            textures[3] = TGALoader.loadTGA(gl, "demos/data/images/Coke.tga"); // Load The Coke Texture            textures[4] = TGALoader.loadTGA(gl, "demos/data/images/Vase.tga"); // Load The Vase Texture            textures[5] = TGALoader.loadTGA(gl, "demos/data/images/Explode.tga"); // Load The Explosion Texture            textures[6] = TGALoader.loadTGA(gl, "demos/data/images/Ground.tga"); // Load The Ground Texture            textures[7] = TGALoader.loadTGA(gl, "demos/data/images/Sky.tga"); // Load The Sky Texture            textures[8] = TGALoader.loadTGA(gl, "demos/data/images/Crosshair.tga"); // Load The Crosshair Texture            textures[9] = TGALoader.loadTGA(gl, "demos/data/images/Font.tga"); // Load The Font Texture        } catch (IOException ex) {            throw new RuntimeException(ex);        }        BuildFont(gl); // Build Our Font Display List        gl.glClearColor(0.0F, 0.0F, 0.0F, 0.0F); // Black Background        gl.glClearDepth(1.0F); // Depth Buffer Setup        gl.glDepthFunc(GL.GL_LEQUAL); // Type Of Depth Testing        gl.glEnable(GL.GL_DEPTH_TEST); // Enable Depth Testing        gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); // Enable Alpha Blending (disable alpha testing)        gl.glEnable(GL.GL_BLEND); // Enable Blending       (disable alpha testing)        //	gl.glAlphaFunc(GL_GREATER,0.1f);								// Set Alpha Testing     (disable blending)        //	gl.glEnable(GL_ALPHA_TEST);									// Enable Alpha Testing  (disable blending)        gl.glEnable(GL.GL_TEXTURE_2D); // Enable Texture Mapping        gl.glEnable(GL.GL_CULL_FACE); // Remove Back Face        resetGame();    }    public void display(GLAutoDrawable drawable) {        long currentTime = System.currentTimeMillis();        update(currentTime - previousTime);        previousTime = currentTime;        GL gl = drawable.getGL();        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);    // Clear Screen And Depth Buffer        gl.glLoadIdentity();                                            // Reset The Modelview Matrix        gl.glPushMatrix();                                              // Push The Modelview Matrix        gl.glBindTexture(GL.GL_TEXTURE_2D, textures[7].getTexID());       // Select The Sky Texture        gl.glBegin(GL.GL_QUADS);                                        // Begin Drawing Quads        {            gl.glTexCoord2f(1.0f, roll / 1.5f + 1.0f);            gl.glVertex3f(28.0f, +7.0f, -50.0f);                    // Top Right            gl.glTexCoord2f(0.0f, roll / 1.5f + 1.0f);            gl.glVertex3f(-28.0f, +7.0f, -50.0f);                   // Top Left            gl.glTexCoord2f(0.0f, roll / 1.5f + 0.0f);            gl.glVertex3f(-28.0f, -3.0f, -50.0f);                   // Bottom Left            gl.glTexCoord2f(1.0f, roll / 1.5f + 0.0f);            gl.glVertex3f(28.0f, -3.0f, -50.0f);                    // Bottom Right            gl.glTexCoord2f(1.5f, roll + 1.0f);            gl.glVertex3f(28.0f, +7.0f, -50.0f);                    // Top Right            gl.glTexCoord2f(0.5f, roll + 1.0f);            gl.glVertex3f(-28.0f, +7.0f, -50.0f);                   // Top Left            gl.glTexCoord2f(0.5f, roll + 0.0f);            gl.glVertex3f(-28.0f, -3.0f, -50.0f);                   // Bottom Left            gl.glTexCoord2f(1.5f, roll + 0.0f);            gl.glVertex3f(28.0f, -3.0f, -50.0f);                    // Bottom Right            gl.glTexCoord2f(1.0f, roll / 1.5f + 1.0f);            gl.glVertex3f(28.0f, +7.0f, 0.0f);                      // Top Right            gl.glTexCoord2f(0.0f, roll / 1.5f + 1.0f);            gl.glVertex3f(-28.0f, +7.0f, 0.0f);                     // Top Left            gl.glTexCoord2f(0.0f, roll / 1.5f + 0.0f);            gl.glVertex3f(-28.0f, +7.0f, -50.0f);                   // Bottom Left            gl.glTexCoord2f(1.0f, roll / 1.5f + 0.0f);            gl.glVertex3f(28.0f, +7.0f, -50.0f);                    // Bottom Right            gl.glTexCoord2f(1.5f, roll + 1.0f);            gl.glVertex3f(28.0f, +7.0f, 0.0f);                      // Top Right            gl.glTexCoord2f(0.5f, roll + 1.0f);            gl.glVertex3f(-28.0f, +7.0f, 0.0f);                     // Top Left            gl.glTexCoord2f(0.5f, roll + 0.0f);            gl.glVertex3f(-28.0f, +7.0f, -50.0f);                   // Bottom Left            gl.glTexCoord2f(1.5f, roll + 0.0f);            gl.glVertex3f(28.0f, +7.0f, -50.0f);                    // Bottom Right        }        gl.glEnd();                                                     // Done Drawing Quads        gl.glBindTexture(GL.GL_TEXTURE_2D, textures[6].getTexID());       // Select The Ground Texture        gl.glBegin(GL.GL_QUADS);                                        // Draw A Quad        {            gl.glTexCoord2f(7.0f, 4.0f - roll);            gl.glVertex3f(27.0f, -3.0f, -50.0f);                    // Top Right            gl.glTexCoord2f(0.0f, 4.0f - roll);            gl.glVertex3f(-27.0f, -3.0f, -50.0f);                   // Top Left            gl.glTexCoord2f(0.0f, 0.0f - roll);            gl.glVertex3f(-27.0f, -3.0f, 0.0f);                     // Bottom Left            gl.glTexCoord2f(7.0f, 0.0f - roll);            gl.glVertex3f(27.0f, -3.0f, 0.0f);                      // Bottom Right        }        gl.glEnd();                                                     // Done Drawing Quad        drawTargets(gl);                                                // Draw Our Targets        gl.glPopMatrix();                                               // Pop The Modelview Matrix        // Crosshair (In Ortho View)        gl.glMatrixMode(GL.GL_PROJECTION);                              // Select The Projection Matrix        gl.glPushMatrix();                                              // Store The Projection Matrix        gl.glLoadIdentity();                                            // Reset The Projection Matrix        gl.glOrtho(0, drawable.getWidth(), 0, drawable.getHeight(), -1, 1); // Set Up An Ortho Screen        gl.glMatrixMode(GL.GL_MODELVIEW);                               // Select The Modelview Matrix        gl.glTranslated(mouseX, drawable.getHeight() - mouseY, 0.0f); // Move To The Current Mouse Position        drawObject(gl, 16, 16, textures[8].getTexID());                                      // Draw The Crosshair        if (isClicked) {            doSelection(gl);        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚日韩国产aⅴ精品中极品| 成人一区二区三区视频| 亚洲六月丁香色婷婷综合久久 | av午夜精品一区二区三区| 国内精品国产成人国产三级粉色 | 日韩欧美www| 日韩欧美在线网站| 精品国产露脸精彩对白| 精品免费国产二区三区| 国产日韩在线不卡| 中文字幕一区二区三| 亚洲男人天堂av| 亚洲电影视频在线| 日韩**一区毛片| 国产精品18久久久久| 成人免费毛片嘿嘿连载视频| www.欧美精品一二区| 色嗨嗨av一区二区三区| 欧美日韩国产色站一区二区三区| 欧美丰满少妇xxxxx高潮对白| 欧美日韩国产另类一区| 日韩精品资源二区在线| 中文字幕免费在线观看视频一区| 亚洲人精品午夜| 亚洲444eee在线观看| 精品一区二区av| 成人黄色av网站在线| 欧美三级日本三级少妇99| 欧美一区二区成人| 国产片一区二区| 性做久久久久久免费观看欧美| 男女男精品视频网| 91在线观看视频| 日韩免费一区二区三区在线播放| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲欧洲成人自拍| 男男成人高潮片免费网站| 波多野结衣的一区二区三区| 欧美日韩极品在线观看一区| 欧美激情一区二区三区不卡 | 欧美美女一区二区三区| xfplay精品久久| 亚洲综合激情小说| 国产麻豆91精品| 在线播放中文一区| 亚洲欧洲日本在线| 国产在线视频一区二区| 欧美日韩一区 二区 三区 久久精品 | 国产日本亚洲高清| 丝袜亚洲另类欧美| 91性感美女视频| 国产无遮挡一区二区三区毛片日本| 亚洲综合成人在线| 成+人+亚洲+综合天堂| 日韩一级完整毛片| 亚洲电影中文字幕在线观看| 丁香一区二区三区| 久久久蜜臀国产一区二区| 偷拍与自拍一区| 色婷婷综合激情| 国产精品久久久久久久久免费桃花| 麻豆精品视频在线| 欧美一区二区三区影视| 亚洲国产精品一区二区尤物区| 99久久精品国产观看| 国产日韩欧美精品电影三级在线| 免费看日韩a级影片| 在线成人免费视频| 日韩激情中文字幕| 欧美日本韩国一区二区三区视频| 亚洲九九爱视频| 色爱区综合激月婷婷| 亚洲色图视频网站| 91亚洲精品久久久蜜桃网站| 日韩一区欧美小说| 色综合久久天天| 亚洲免费高清视频在线| 91福利区一区二区三区| 伊人一区二区三区| 精品视频在线看| 香蕉久久一区二区不卡无毒影院 | 不卡视频一二三四| 亚洲国产激情av| 99久久精品一区| 亚洲宅男天堂在线观看无病毒| 色综合色综合色综合色综合色综合 | 国产一区二区看久久| 国产婷婷色一区二区三区| 丁香亚洲综合激情啪啪综合| 中文字幕在线观看一区二区| 成人激情开心网| 亚洲欧美色图小说| 精品视频资源站| 精品无人区卡一卡二卡三乱码免费卡| 欧美一区2区视频在线观看| 久久91精品国产91久久小草| 久久婷婷国产综合国色天香 | 欧美视频你懂的| 日韩电影免费在线| 久久久99精品免费观看不卡| 不卡免费追剧大全电视剧网站| 夜夜嗨av一区二区三区四季av| 欧美日韩精品欧美日韩精品| 国产一区二区三区免费| 亚洲天天做日日做天天谢日日欢 | 日本高清视频一区二区| 日韩福利电影在线| 国产欧美一二三区| 欧美日韩三级在线| 国产黄人亚洲片| 亚洲一区中文在线| 久久精品人人做人人爽人人| 91欧美一区二区| 国内精品视频一区二区三区八戒| 最新中文字幕一区二区三区| 91精品国产美女浴室洗澡无遮挡| 国产一区二区三区在线观看精品| 中文字幕字幕中文在线中不卡视频| 91.麻豆视频| 99视频一区二区| 久久不见久久见免费视频1| 一区免费观看视频| 久久影院午夜片一区| 欧美午夜一区二区三区免费大片| 国产精品一区二区三区乱码| 一区二区三区欧美久久| 国产偷国产偷亚洲高清人白洁| 欧美绝品在线观看成人午夜影视| 99久久国产综合精品色伊| 极品少妇xxxx偷拍精品少妇| 亚洲制服丝袜在线| 亚洲人123区| 国产三级精品三级在线专区| 欧美一级夜夜爽| 欧美人与性动xxxx| 色天使色偷偷av一区二区| 成人污污视频在线观看| 国模大尺度一区二区三区| 日韩国产欧美三级| 亚洲一区二区三区四区五区中文| 国产精品少妇自拍| 欧美国产禁国产网站cc| 欧美成人a在线| 日韩午夜精品视频| 日韩一区二区免费视频| 欧美日韩精品高清| 欧美日韩免费高清一区色橹橹 | 不卡电影一区二区三区| 国产在线看一区| 国产精品99久久久久| 国产一区在线精品| 精品一区二区三区在线视频| 免费成人性网站| 久久精品国产第一区二区三区| 亚洲成人综合在线| 午夜久久久久久久久 | 精品免费99久久| 精品久久久久久久久久久久久久久 | 欧美精品少妇一区二区三区| 欧美三级中文字| 欧美亚日韩国产aⅴ精品中极品| 欧美性欧美巨大黑白大战| 日本韩国欧美一区| 欧美精品国产精品| 日韩精品一区二区三区在线观看 | 国产精品美女久久久久av爽李琼| 国产亚洲欧美激情| 日韩码欧中文字| 亚洲综合激情小说| 日韩av在线播放中文字幕| 激情久久久久久久久久久久久久久久| 麻豆国产精品一区二区三区| 韩国成人在线视频| 色综合视频在线观看| 91精品综合久久久久久| 国产日韩欧美精品综合| 亚洲乱码国产乱码精品精小说| 亚洲小说欧美激情另类| 美女一区二区三区| www.成人在线| 正在播放亚洲一区| 日本一区二区电影| 亚洲国产日韩一级| 国产乱码精品一区二区三区av | 免费成人在线影院| 99久久久精品| 久久综合久久久久88| ...xxx性欧美| 日本不卡视频在线观看| av福利精品导航| 日韩一区二区在线看片| 亚洲欧洲av色图| 加勒比av一区二区| 欧美日韩久久一区| 国产精品对白交换视频| 男女性色大片免费观看一区二区| 99久久免费精品| 精品久久久久久综合日本欧美| 夜夜精品视频一区二区| 国产一区二区三区精品欧美日韩一区二区三区|