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

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

?? glthread.java

?? android 下學習openGL的一個不錯demo
?? JAVA
字號:
/*** * Excerpted from "Hello, Android!", * published by The Pragmatic Bookshelf. * Copyrights apply to this code. It may not be used to create training material,  * courses, books, articles, and the like. Contact us if you are in doubt. * We make no guarantees that this code is fit for any purpose.  * Visit http://www.pragmaticprogrammer.com/titles/eband for more book information.***/
package com.mot.opengl;

import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGL11;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLContext;
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.egl.EGLSurface;
import javax.microedition.khronos.opengles.GL10;
import javax.microedition.khronos.opengles.GL11ExtensionPack;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;import android.opengl.GLU;
import android.util.Log;import android.view.SurfaceHolder;
class GLThread extends Thread {
   private final GLView view;
   private boolean mRun = true;   private final String TAG = "GLThread";   private int type;
   private SurfaceHolder mSurfaceHolder;   private int[] cube_pictures = {		   		   R.drawable.android,		   R.drawable.wallpaper_dale_chihuly_small,		   R.drawable.wallpaper_lake_small,		   R.drawable.wallpaper_mountain_small,		   R.drawable.wallpaper_sunrise_small,		   R.drawable.wallpaper_darkwhirl_small   };      private int rec_picture = R.drawable.android;
   
   private GLCube cube;
   private GLRectangle rectangle;
   
   private long startTime;
   
   GLThread(GLView view,int type) {	   
      this.view = view;      this.type = type;      this.mSurfaceHolder= view.getHolder();
      switch (type) {      case OpenGL.TYPE_CUBE:    	  cube = new GLCube();    	  break;      case OpenGL.TYPE_RECTANGLE:    	  rectangle = new GLRectangle();    	  break;    	        }   }

   
   @Override
   public void run() {
      // Initialize OpenGL...
      
      EGL10 egl = (EGL10) EGLContext.getEGL();       EGLDisplay display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY); 
      int[] version = new int[2];
      egl.eglInitialize(display, version); 
      int[] configSpec = { EGL10.EGL_RED_SIZE, 5,             EGL10.EGL_GREEN_SIZE, 6, EGL10.EGL_BLUE_SIZE, 5,
            EGL10.EGL_DEPTH_SIZE, 16, EGL10.EGL_NONE };

      EGLConfig[] configs = new EGLConfig[1];
      int[] numConfig = new int[1];
      egl.eglChooseConfig(display, configSpec, configs, 1,             numConfig);
      EGLConfig config = configs[0];

      EGLContext glc = egl.eglCreateContext(display, config,             EGL10.EGL_NO_CONTEXT, null);

      EGLSurface surface = egl.eglCreateWindowSurface(display,             config, view.getHolder(), null);
      egl.eglMakeCurrent(display, surface, surface, glc); 
      GL10 gl = (GL10) (glc.getGL());       init(gl); 
      
      // Loop until asked to quit
      while (mRun) {
         // Draw a single frame here...
    	/*  Canvas canvas = null;    	  canvas = mSurfaceHolder.lockCanvas(null);*/    	  Log.e(TAG,"mRUN");
         drawFrame(gl);
         egl.eglSwapBuffers(display, surface);
        /* if (canvas != null) {             mSurfaceHolder.unlockCanvasAndPost(canvas);}*/
         // Error handling
         if (egl.eglGetError() == EGL11.EGL_CONTEXT_LOST) {
            Context c = view.getContext();
            if (c instanceof Activity) {
               ((Activity) c).finish();
            }
         }
         
      }
      

      // Free OpenGL resources
      egl.eglMakeCurrent(display, EGL10.EGL_NO_SURFACE,             EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_CONTEXT);
      egl.eglDestroySurface(display, surface);
      egl.eglDestroyContext(display, glc);
      egl.eglTerminate(display);
      
   }
   

   
   
   
   private void init(GL10 gl) {
      
      
      
      boolean SEE_THRU = true;
      
      
      startTime = System.currentTimeMillis();
      
      
      // Define the view frustrum
      gl.glViewport(0, 0, view.getWidth(), view.getHeight());
      gl.glMatrixMode(GL10.GL_PROJECTION);
      gl.glLoadIdentity();
      float ratio = (float) view.getWidth() / view.getHeight();
      GLU.gluPerspective(gl, 45.0f, ratio, 1, 100f);       

      
      // Define the lighting
      float lightAmbient[] = new float[] { 0.2f, 0.2f, 0.2f, 1 };
      float lightDiffuse[] = new float[] { 1, 1, 1, 1 };
      float[] lightPos = new float[] { 1, 1, 1, 1 };

      gl.glEnable(GL10.GL_LIGHTING);
      gl.glEnable(GL10.GL_LIGHT0);
      gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, lightAmbient, 0);
      gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, lightDiffuse, 0);
      gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPos, 0);
      

      
      // What is the cube made of?
      float matAmbient[] = new float[] { 1, 1, 1, 1 };
      float matDiffuse[] = new float[] { 1, 1, 1, 1 };
      gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_AMBIENT,
            matAmbient, 0);
      gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE,
            matDiffuse, 0);
      
      

      // Set up any other options we need
      gl.glEnable(GL10.GL_DEPTH_TEST);       gl.glDepthFunc(GL10.GL_LEQUAL);
      gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
      
      
      gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
      gl.glEnable(GL11ExtensionPack.GL_TEXTURE_CUBE_MAP);      //gl.glEnable(GL11ExtensionPack.GL_TEXTURE_GEN_STR);      gl.glEnable(GL10.GL_TEXTURE_2D);
      
      
      // Optional: disable dither to boost performance
      // gl.glDisable(GL10.GL_DITHER);
      

      
      // ...
      if (SEE_THRU) {
         gl.glDisable(GL10.GL_DEPTH_TEST);
         gl.glEnable(GL10.GL_BLEND);
         gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE);
      }
            switch (type) {
      case OpenGL.TYPE_CUBE:
    	  GLCube.loadTexture(gl, view.getContext(), cube_pictures);    	  break;      case OpenGL.TYPE_RECTANGLE:    	  GLRectangle.loadTexture(gl, view.getContext(), rec_picture);      }      
   }
     
   private void drawFrame(GL10 gl) {
      
      
      // Clear the screen to black
      gl.glClear(GL10.GL_COLOR_BUFFER_BIT
            | GL10.GL_DEPTH_BUFFER_BIT);

      // Position model so we can see it
      gl.glMatrixMode(GL10.GL_MODELVIEW);
      gl.glLoadIdentity();
      gl.glTranslatef(0, 0, -3.0f);

      // Other drawing commands go here...
      
      
      // ... Set rotation angle based on the time
      long elapsed = System.currentTimeMillis() - startTime;
      // ... Draw the model
      switch (type) {      case OpenGL.TYPE_CUBE:          gl.glRotatef(elapsed * (360f / 1000f)* 2.0f, 0, 1, 0);          gl.glRotatef(elapsed * (15f / 1000f), 1, 0, 0);    	  cube.draw(gl);    	  break;      case OpenGL.TYPE_RECTANGLE:          gl.glRotatef(elapsed * (180f / 1000f), 1, 0, 0);    	  rectangle.draw(gl);    	  break;    	        }   }
   
   public void setRunning(boolean b) {	   mRun = b;   }
   

   
   public void requestExitAndWait() {
      // Tell the thread to quit
	   
      try {
         join();
      } catch (InterruptedException ex) {
         // Ignore
      }
   }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美腿丝袜亚洲色图| 美女性感视频久久| 国产精品色噜噜| 久久久久久久电影| 精品免费视频.| 久久嫩草精品久久久精品| 欧美成人a在线| 欧美精品一区二区精品网| 久久影院午夜论| 久久久久国产成人精品亚洲午夜| 久久嫩草精品久久久精品一| 欧美国产成人在线| 亚洲视频 欧洲视频| 又紧又大又爽精品一区二区| 亚洲国产成人av| 麻豆国产欧美日韩综合精品二区| 久久se精品一区精品二区| 国产一区在线看| 99国产精品国产精品久久| 色系网站成人免费| 777欧美精品| 久久精品免视看| 中文字幕av一区二区三区免费看| 日韩一区中文字幕| 亚洲电影一区二区| 久久不见久久见免费视频7| 国产精品99久| 色狠狠一区二区三区香蕉| 欧美一级高清片在线观看| 国产日韩精品一区二区三区在线| 亚洲欧美日韩国产综合在线| 日韩精品成人一区二区三区| 国产精品99久久久久| 日本韩国一区二区| 日韩免费观看高清完整版| 亚洲欧洲av另类| 蜜臀av性久久久久蜜臀aⅴ| 大白屁股一区二区视频| 欧美丰满美乳xxx高潮www| 日本一区二区三区久久久久久久久不 | 精品嫩草影院久久| 国产精品卡一卡二卡三| 日本不卡123| 色八戒一区二区三区| 精品91自产拍在线观看一区| 亚洲人成人一区二区在线观看 | 国产美女在线精品| 欧美三级午夜理伦三级中视频| 久久一区二区视频| 性欧美大战久久久久久久久| 国产福利不卡视频| 日韩欧美中文字幕精品| 有码一区二区三区| 成人久久18免费网站麻豆| 欧美成人性战久久| 日韩精品免费视频人成| 91成人在线精品| 成人欧美一区二区三区白人 | 欧美日韩一区二区在线视频| 日本一区二区成人| 国产主播一区二区三区| 欧美一区国产二区| 亚洲大片在线观看| 欧美伊人久久大香线蕉综合69| 国产精品麻豆视频| 成人免费视频免费观看| 久久影院午夜论| 韩国三级在线一区| 欧美大片日本大片免费观看| 亚洲1区2区3区4区| 欧美日韩电影在线| 午夜久久久影院| 色哟哟欧美精品| 一区二区三区精品久久久| 一本久道中文字幕精品亚洲嫩| 国产欧美日韩卡一| 国产福利一区二区三区在线视频| 欧美精品一区二区三区在线 | 顶级嫩模精品视频在线看| 久久综合成人精品亚洲另类欧美| 蜜桃视频一区二区三区在线观看| 制服丝袜亚洲网站| 免费观看日韩电影| 精品国产乱码久久久久久免费| 美女一区二区在线观看| 精品成人一区二区三区| 韩国午夜理伦三级不卡影院| 国产性色一区二区| av电影在线观看不卡| 一区二区三区av电影| 3d动漫精品啪啪一区二区竹菊| 欧美a级一区二区| 日韩一级免费观看| 国产成人亚洲综合色影视| 国产日韩欧美精品在线| 91在线国产观看| 一区二区三区免费网站| 日韩三级精品电影久久久| 国产在线看一区| 亚洲欧洲在线观看av| 欧美在线制服丝袜| 免费看精品久久片| 亚洲国产精品高清| 欧美久久婷婷综合色| 国产精品亚洲午夜一区二区三区| 欧美激情一区二区三区四区| 在线免费观看日本欧美| 激情亚洲综合在线| 亚洲精品高清视频在线观看| 欧美一区二区三区四区视频| 国产精品888| 玉米视频成人免费看| 精品成人免费观看| 色婷婷精品大在线视频| 国产一区免费电影| 亚洲电影第三页| 中日韩免费视频中文字幕| 911国产精品| 色老头久久综合| 国产成人免费视频一区| 亚洲国产乱码最新视频 | 欧美在线免费视屏| 国产91丝袜在线18| 麻豆国产精品一区二区三区| 日韩理论在线观看| 国产夜色精品一区二区av| 欧美一区二区在线不卡| 色老汉一区二区三区| 成人h动漫精品一区二区| 久久国产精品露脸对白| 一区二区视频在线看| 国产无遮挡一区二区三区毛片日本| 欧美日本一区二区| 91美女在线观看| 成人国产亚洲欧美成人综合网| 美美哒免费高清在线观看视频一区二区 | 久久99精品视频| 性久久久久久久久久久久| 亚洲精品成人悠悠色影视| 国产精品沙发午睡系列990531| 亚洲精品一区二区三区香蕉| 7777精品伊人久久久大香线蕉最新版| 99re8在线精品视频免费播放| 国产精品影视网| 九九**精品视频免费播放| 蜜桃久久久久久久| 日韩av成人高清| 秋霞影院一区二区| 日本在线不卡视频| 爽好多水快深点欧美视频| 亚洲va欧美va人人爽| 亚洲小说欧美激情另类| 亚洲国产精品久久艾草纯爱| 亚洲国产一区二区视频| 亚洲国产日产av| 天天操天天色综合| 男男gaygay亚洲| 狠狠色狠狠色综合| 国产成人超碰人人澡人人澡| 国产一区二区按摩在线观看| 国产成人综合视频| 97se狠狠狠综合亚洲狠狠| 91久久精品一区二区三| 欧美日韩在线亚洲一区蜜芽| 欧美一区二区三区啪啪| 精品av久久707| 亚洲欧洲日本在线| 午夜一区二区三区视频| 久久精品免费观看| 国产不卡高清在线观看视频| hitomi一区二区三区精品| 91蝌蚪porny| 正在播放一区二区| 久久亚洲精华国产精华液 | 欧美精品在线视频| 精品国产制服丝袜高跟| 国产精品久久久久久久久晋中| 亚洲欧美色综合| 日本伊人午夜精品| 国产成人在线视频免费播放| 日本高清不卡aⅴ免费网站| 91精品国产aⅴ一区二区| 日韩手机在线导航| 亚洲视频免费看| 久久成人久久爱| 一本一道久久a久久精品| 日韩欧美电影一区| 亚洲日穴在线视频| 麻豆一区二区三| 一本一本久久a久久精品综合麻豆| 7777精品久久久大香线蕉| 久久久久久久av麻豆果冻| 亚洲制服丝袜一区| 国产老女人精品毛片久久| 99精品欧美一区二区三区综合在线| 91精品免费在线观看| 成人欧美一区二区三区| 久久99精品国产麻豆婷婷| 色婷婷综合激情| 国产精品天天摸av网|