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

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

?? renderer.java

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

/*
 * Lesson06.java
 *
 * Created on July 16, 2003, 11:30 AM
 */

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;

/** Port of the NeHe OpenGL Tutorial (Lesson 6)
 * to Java using the Jogl interface to OpenGL.  Jogl can be obtained
 * at http://jogl.dev.java.net/
 *
 * @author Kevin Duling (jattier@hotmail.com)
 */
class Renderer implements GLEventListener {
    private float xrot;				// X Rotation ( NEW )
    private float yrot;				// Y Rotation ( NEW )
    private float zrot;				// Z Rotation ( NEW )
    private int texture;

    private GLU glu = new GLU();

    /** Called by the drawable to initiate OpenGL rendering by the client.
     * After all GLEventListeners have been notified of a display event, the
     * drawable will swap its buffers if necessary.
     * @param gLDrawable The GLAutoDrawable object.
     */
    public void display(GLAutoDrawable gLDrawable) {
        final GL gl = gLDrawable.getGL();
        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
        gl.glLoadIdentity();									// Reset The View
        gl.glTranslatef(0.0f, 0.0f, -5.0f);

        gl.glRotatef(xrot, 1.0f, 0.0f, 0.0f);
        gl.glRotatef(yrot, 0.0f, 1.0f, 0.0f);
        gl.glRotatef(zrot, 0.0f, 0.0f, 1.0f);

        gl.glBindTexture(GL.GL_TEXTURE_2D, texture);

        gl.glBegin(GL.GL_QUADS);
        // Front Face
        gl.glTexCoord2f(0.0f, 0.0f);
        gl.glVertex3f(-1.0f, -1.0f, 1.0f);
        gl.glTexCoord2f(1.0f, 0.0f);
        gl.glVertex3f(1.0f, -1.0f, 1.0f);
        gl.glTexCoord2f(1.0f, 1.0f);
        gl.glVertex3f(1.0f, 1.0f, 1.0f);
        gl.glTexCoord2f(0.0f, 1.0f);
        gl.glVertex3f(-1.0f, 1.0f, 1.0f);
        // Back Face
        gl.glTexCoord2f(1.0f, 0.0f);
        gl.glVertex3f(-1.0f, -1.0f, -1.0f);
        gl.glTexCoord2f(1.0f, 1.0f);
        gl.glVertex3f(-1.0f, 1.0f, -1.0f);
        gl.glTexCoord2f(0.0f, 1.0f);
        gl.glVertex3f(1.0f, 1.0f, -1.0f);
        gl.glTexCoord2f(0.0f, 0.0f);
        gl.glVertex3f(1.0f, -1.0f, -1.0f);
        // Top Face
        gl.glTexCoord2f(0.0f, 1.0f);
        gl.glVertex3f(-1.0f, 1.0f, -1.0f);
        gl.glTexCoord2f(0.0f, 0.0f);
        gl.glVertex3f(-1.0f, 1.0f, 1.0f);
        gl.glTexCoord2f(1.0f, 0.0f);
        gl.glVertex3f(1.0f, 1.0f, 1.0f);
        gl.glTexCoord2f(1.0f, 1.0f);
        gl.glVertex3f(1.0f, 1.0f, -1.0f);
        // Bottom Face
        gl.glTexCoord2f(1.0f, 1.0f);
        gl.glVertex3f(-1.0f, -1.0f, -1.0f);
        gl.glTexCoord2f(0.0f, 1.0f);
        gl.glVertex3f(1.0f, -1.0f, -1.0f);
        gl.glTexCoord2f(0.0f, 0.0f);
        gl.glVertex3f(1.0f, -1.0f, 1.0f);
        gl.glTexCoord2f(1.0f, 0.0f);
        gl.glVertex3f(-1.0f, -1.0f, 1.0f);
        // Right face
        gl.glTexCoord2f(1.0f, 0.0f);
        gl.glVertex3f(1.0f, -1.0f, -1.0f);
        gl.glTexCoord2f(1.0f, 1.0f);
        gl.glVertex3f(1.0f, 1.0f, -1.0f);
        gl.glTexCoord2f(0.0f, 1.0f);
        gl.glVertex3f(1.0f, 1.0f, 1.0f);
        gl.glTexCoord2f(0.0f, 0.0f);
        gl.glVertex3f(1.0f, -1.0f, 1.0f);
        // Left Face
        gl.glTexCoord2f(0.0f, 0.0f);
        gl.glVertex3f(-1.0f, -1.0f, -1.0f);
        gl.glTexCoord2f(1.0f, 0.0f);
        gl.glVertex3f(-1.0f, -1.0f, 1.0f);
        gl.glTexCoord2f(1.0f, 1.0f);
        gl.glVertex3f(-1.0f, 1.0f, 1.0f);
        gl.glTexCoord2f(0.0f, 1.0f);
        gl.glVertex3f(-1.0f, 1.0f, -1.0f);
        gl.glEnd();

        xrot += 0.3f;
        yrot += 0.2f;
        zrot += 0.4f;
    }


    /** Called when the display mode has been changed.  <B>!! CURRENTLY UNIMPLEMENTED IN JOGL !!</B>
     * @param gLDrawable The GLAutoDrawable object.
     * @param modeChanged Indicates if the video mode has changed.
     * @param deviceChanged Indicates if the video device has changed.
     */
    public void displayChanged(GLAutoDrawable gLDrawable, boolean modeChanged, boolean deviceChanged) {
    }

    /** Called by the drawable immediately after the OpenGL context is
     * initialized for the first time. Can be used to perform one-time OpenGL
     * initialization such as setup of lights and display lists.
     * @param gLDrawable The GLAutoDrawable object.
     */
    public void init(GLAutoDrawable gLDrawable) {
        final GL gl = gLDrawable.getGL();
        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.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.glEnable(GL.GL_TEXTURE_2D);
        texture = genTexture(gl);
        gl.glBindTexture(GL.GL_TEXTURE_2D, texture);
        TextureReader.Texture texture = null;
        try {
            texture = TextureReader.readTexture("demos/data/images/nehe.png");
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
        makeRGBTexture(gl, glu, texture, GL.GL_TEXTURE_2D, false);
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
        gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
    }

    /** Called by the drawable during the first repaint after the component has
     * been resized. The client can update the viewport and view volume of the
     * window appropriately, for example by a call to
     * GL.glViewport(int, int, int, int); note that for convenience the component
     * has already called GL.glViewport(int, int, int, int)(x, y, width, height)
     * when this method is called, so the client may not have to do anything in
     * this method.
     * @param gLDrawable The GLAutoDrawable object.
     * @param x The X Coordinate of the viewport rectangle.
     * @param y The Y coordinate of the viewport rectanble.
     * @param width The new width of the window.
     * @param height The new height of the window.
     */
    public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) {
        final GL gl = gLDrawable.getGL();

        if (height <= 0) // avoid a divide by zero error!
            height = 1;
        final float h = (float) width / (float) height;
        gl.glViewport(0, 0, width, height);
        gl.glMatrixMode(GL.GL_PROJECTION);
        gl.glLoadIdentity();
        glu.gluPerspective(45.0f, h, 1.0, 20.0);
        gl.glMatrixMode(GL.GL_MODELVIEW);
        gl.glLoadIdentity();
    }

    private void makeRGBTexture(GL gl, GLU glu, TextureReader.Texture img, int target, boolean mipmapped) {
        if (mipmapped) {
            glu.gluBuild2DMipmaps(target, GL.GL_RGB8, img.getWidth(), img.getHeight(), GL.GL_RGB, GL.GL_UNSIGNED_BYTE, img.getPixels());
        } else {
            gl.glTexImage2D(target, 0, GL.GL_RGB, img.getWidth(), img.getHeight(), 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, img.getPixels());
        }
    }

    private int genTexture(GL gl) {
        final int[] tmp = new int[1];
        gl.glGenTextures(1, tmp, 0);
        return tmp[0];
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91清纯白嫩初高中在线观看| jlzzjlzz亚洲女人18| 国产一区二区三区美女| 91免费版pro下载短视频| 7777精品久久久大香线蕉| 欧美国产禁国产网站cc| 亚洲高清在线精品| 岛国精品一区二区| 91精品国产高清一区二区三区| 中文字幕亚洲欧美在线不卡| 美女脱光内衣内裤视频久久网站 | 精品系列免费在线观看| 91在线丨porny丨国产| 久久天堂av综合合色蜜桃网| 亚洲午夜私人影院| 一本一本久久a久久精品综合麻豆| 精品久久五月天| 婷婷六月综合网| 91成人免费在线视频| 国产精品毛片久久久久久久| 黄色小说综合网站| 日韩一区二区精品| 亚洲成av人片一区二区| 91国产福利在线| 亚洲欧美日韩国产综合| 不卡的电影网站| 国产欧美一区二区精品仙草咪| 天堂午夜影视日韩欧美一区二区| 在线影视一区二区三区| 亚洲精品水蜜桃| 色婷婷综合五月| 亚洲精品日韩专区silk| 91女人视频在线观看| 国产精品电影一区二区三区| 成人黄色片在线观看| 国产欧美一区二区精品性色| 粉嫩蜜臀av国产精品网站| 欧美激情资源网| 成人一区二区三区视频在线观看| 国产亲近乱来精品视频| 国产精华液一区二区三区| 久久综合久色欧美综合狠狠| 久草中文综合在线| 久久久久久久久蜜桃| 国产精品1024久久| 成人免费在线视频| 91麻豆swag| 亚洲国产日韩一区二区| 91精品国产综合久久精品麻豆| 视频一区视频二区中文| 日韩亚洲欧美综合| 国产精品白丝jk黑袜喷水| 国产日韩欧美电影| 91亚洲永久精品| 亚洲v中文字幕| 精品久久久久香蕉网| 国产成人一区二区精品非洲| 亚洲婷婷综合色高清在线| 欧美吞精做爰啪啪高潮| 美女视频一区二区三区| 国产视频一区二区在线观看| 91免费国产视频网站| 亚洲大片一区二区三区| 亚洲精品视频免费观看| 欧美日韩国产在线播放网站| 麻豆成人av在线| 国产精品日产欧美久久久久| 欧美无人高清视频在线观看| 久久国产尿小便嘘嘘尿| 亚洲视频在线观看三级| 欧美一区二区啪啪| 成人性色生活片免费看爆迷你毛片| 自拍偷拍国产精品| 日韩欧美成人一区二区| 成人午夜伦理影院| 人妖欧美一区二区| 国产精品国产三级国产普通话99| 欧美三级日韩三级| 国产精品亚洲成人| 婷婷中文字幕综合| 亚洲欧洲国产专区| 日韩午夜av一区| 色综合久久综合网欧美综合网| 蜜桃一区二区三区在线观看| 亚洲欧美日韩在线| 久久久精品综合| 欧美另类z0zxhd电影| 成人午夜视频在线| 久久精品国产精品亚洲综合| 一区二区三区在线观看欧美| 久久日一线二线三线suv| 欧美日韩一区二区在线观看视频| 国产精品中文欧美| 日本aⅴ精品一区二区三区| 狠狠色丁香婷婷综合| 亚洲成人午夜电影| 亚洲人成影院在线观看| 久久网站热最新地址| 在线不卡一区二区| 在线观看一区日韩| 成人a级免费电影| 久久国产精品99久久人人澡| 亚洲高清免费视频| 18成人在线观看| 国产欧美精品一区二区色综合朱莉| 欧美一级生活片| 欧美日韩视频在线观看一区二区三区 | 亚洲欧洲一区二区在线播放| 欧美变态口味重另类| 欧美一区二区三区爱爱| 欧美高清性hdvideosex| 欧美日韩国产一二三| 在线一区二区视频| 在线亚洲欧美专区二区| 一本久道久久综合中文字幕| 99精品1区2区| 一本色道a无线码一区v| 91丝袜呻吟高潮美腿白嫩在线观看| 国产成人日日夜夜| 成人影视亚洲图片在线| 成人开心网精品视频| 精品国内二区三区| 欧美成人国产一区二区| 欧美一激情一区二区三区| 欧美精品第1页| 91精品国产91久久综合桃花| 欧美精品v日韩精品v韩国精品v| 欧美色网一区二区| 在线播放视频一区| 日韩精品综合一本久道在线视频| 精品区一区二区| 久久精品男人天堂av| 国产女人18水真多18精品一级做| 国产精品色哟哟| 亚洲美女淫视频| 亚洲图片欧美色图| 欧美aa在线视频| 国产麻豆91精品| 成人av网址在线观看| 色婷婷一区二区| 欧美精品少妇一区二区三区| 欧美电影免费观看高清完整版在线观看 | 欧美日韩高清影院| 欧美成人a在线| 亚洲国产精华液网站w| 亚洲欧洲精品一区二区精品久久久 | 国产一区二区三区香蕉| av一二三不卡影片| 欧美日韩三级视频| 欧美精品一区二区精品网| 中文字幕一区av| 午夜亚洲福利老司机| 激情久久五月天| 91影视在线播放| 日韩视频一区二区| 欧美高清在线一区二区| 亚洲成人7777| 国产激情精品久久久第一区二区 | 亚洲综合免费观看高清在线观看| 日韩av网站免费在线| 国产精品小仙女| 欧美色偷偷大香| 国产日韩亚洲欧美综合| 午夜精品免费在线观看| 粉嫩绯色av一区二区在线观看 | 亚洲高清视频中文字幕| 国产成都精品91一区二区三| 欧美日韩一区二区不卡| 中文字幕av一区二区三区免费看| 亚洲综合一二区| 国产电影精品久久禁18| 精品视频一区二区三区免费| 国产日韩欧美综合一区| 日韩二区在线观看| 在线一区二区三区| 国产日韩精品久久久| 色综合久久66| 精品国产91亚洲一区二区三区婷婷| 一区二区三区自拍| 成人免费视频caoporn| 日韩一级高清毛片| 亚洲亚洲精品在线观看| 95精品视频在线| 国产亚洲成av人在线观看导航| 天堂午夜影视日韩欧美一区二区| 色老汉一区二区三区| 国产精品网站在线播放| 国产在线播放一区| 欧美精三区欧美精三区| 亚洲猫色日本管| av在线这里只有精品| 久久久久国产成人精品亚洲午夜| 日韩国产欧美三级| 欧美视频在线一区二区三区 | 亚洲另类色综合网站| 99这里只有久久精品视频| 欧美国产激情一区二区三区蜜月| 国产一区二区三区四| 久久久夜色精品亚洲| 狠狠色丁香久久婷婷综合_中|