<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 189,comments - 115,trackbacks - 0

    自己的一個畫點線面的代碼,有注釋。

    public class dotClass extends GLSurfaceView {
     private trangleFan tFan2d;
     //0x10000似乎是一個像素的距離
     int one = 0x10000;
        int vertex[] = {
                 one*200, one*200, 
                 one*300, one*500, 
         };
        
        //為各個點提供顏色,不知道出了rgb以外的顏色怎么提供
         int color[] = {
           one,   one ,   one,  one,
                 one,    one,    0,  one,
         };
         
         int triangleColor[] = {
        one, 0, 0, one,
        0, one, 0, one,
        0, 0, one, one,
      };
      int triangleVertex[] = {
       0, 0,
       100*one, 0,
       50*one, 100*one,
     };
     
     
         
     public dotClass( Context ctx){
      super( ctx );
      Init();  
     }
     public dotClass( Context ctx, AttributeSet attrs){
      super( ctx, attrs );
      Init();  
     }

     //
     private void Init(){
      tFan2d=new trangleFan( triangleVertex, triangleColor );
      this.setRenderer( renderer );
      
     
     }
     
     
     
     
     GLSurfaceView.Renderer renderer=new Renderer(){

      @Override
      public void onDrawFrame(GL10 gl) {
       // TODO Auto-generated method stub
       
       gl.glClear( GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT ); 
         
       drawLine(gl, vertex, color, 5);
       drawPoint(gl, vertex, color, 20);
    //   tFan.draw( gl );
       tFan2d.draw(gl);
    //   tStrip.draw(gl);
      }

      @Override
      public void onSurfaceChanged(GL10 gl, int width, int height) {
       // TODO Auto-generated method stub
       //首先是opengl可用的空間 :
          gl.glViewport( 0, 0, width/2, height/2 ); 
          //這個matrix是如何把三維坐標(biāo)轉(zhuǎn)換為二維坐標(biāo)并把它放在顯示器上。
          gl.glMatrixMode( GL10.GL_PROJECTION );
          //告訴opengl初始化這個matrix。
          gl.glLoadIdentity(); 
          GLU.gluOrtho2D( gl, 0.0f, width, 0.0f, height );
      }

      @Override
      public void onSurfaceCreated(GL10 gl, EGLConfig config) {
       // TODO Auto-generated method stub
       //設(shè)置北京顏色
       gl.glClearColor( 0.0f, 1.0f, 1.0f, 0.0f ); //

          gl.glShadeModel( GL10.GL_FLAT ); //
          
          gl.glHint( GL10.GL_POINT_SMOOTH_HINT, GL10.GL_FASTEST ); //
          //使gl可以接受位置數(shù)組
          gl.glEnableClientState( GL10.GL_VERTEX_ARRAY ); //set for  array as vertex
          //使gl可以接受顏色數(shù)組
          gl.glEnableClientState( GL10.GL_COLOR_ARRAY ); //set for  array as color
          gl.glDisable( GL10.GL_TEXTURE_2D ); //no 2
          
      }
      
     };
      
     
     
        //將int數(shù)組轉(zhuǎn)化成inbuff類型,為glVertexPointer,glColorPointer方法用
        private IntBuffer getIntBuffer( int[] table ) {
            ByteBuffer bb = ByteBuffer.allocateDirect( table.length * 4 ); 
            bb.order( ByteOrder.nativeOrder() ); 
            IntBuffer ib = bb.asIntBuffer(); 
            ib.put( table ); 
            ib.position( 0 ); 
            
            return ib;
        }
        
        private void drawPoint( GL10 gl, int[] vertex, int[] color, int size ){
         //gl的大小,也就是下邊的點的尺寸
      gl.glPointSize(size );
      //vertex數(shù)組里存的坐標(biāo),這里的2代表2維,就是數(shù)組里面的數(shù)字2個位一族表示一個點的位置。需要裝成buff
      gl.glVertexPointer( 2, GL10.GL_FIXED, 0, getIntBuffer( vertex ) );
      //color數(shù)組里面存儲的點的顏色,這里的4代表RGBA類型顏色。也需要妝化成buff
      gl.glColorPointer( 4, GL10.GL_FIXED, 0, getIntBuffer( color ) );
      //告訴gl畫什么圖形,這里的2代表畫多少個點,及數(shù)組里面包含多少個點
         gl.glDrawArrays( GL10.GL_POINTS, 0, 2 );
        }
        private void drawLine( GL10 gl, int[] vertex, int[] color, int size ){
      gl.glLineWidth( size ); //set line width
      gl.glVertexPointer( 2, GL10.GL_FIXED, 0, getIntBuffer( vertex ) ); //set vertex points
      gl.glColorPointer( 4, GL10.GL_FIXED, 0, getIntBuffer( color ) ); //set color points
         gl.glDrawArrays( GL10.GL_LINES, 0, 1*2 );  //mode is GL_LINES
        }
        class trangleFan{
         private IntBuffer vertexBuff = null;
         private IntBuffer colorBuff = null;
         private int pointNum;
         
         
         public trangleFan( int vertex[], int color[] ){
          if( vertex != null ){
           vertexBuff = getIntBuffer( vertex ); 
           pointNum = vertex.length / 2;
          }
          if( color != null ){
           colorBuff = getIntBuffer( color ); 
          }
         }

         public void draw( GL10 gl ){
          if( vertexBuff != null ){
           gl.glVertexPointer( 2, GL10.GL_FIXED, 0, vertexBuff );
           gl.glColorPointer( 4, GL10.GL_FIXED, 0, colorBuff );
           gl.glDrawArrays( GL10.GL_TRIANGLES, 0, pointNum );
          }
         }
        }
       
        
    }


    http://code.google.com/p/linuxgraphicsweb/source/browse/trunk/Pages/android/gallery3d_glsurfaceview.muse?spec=svn176&r=176

    posted on 2010-08-26 20:17 MEYE 閱讀(595) 評論(0)  編輯  收藏 所屬分類: Android3D
    主站蜘蛛池模板: 久久精品国产免费| 亚洲AV无码专区国产乱码不卡| 久久精品国产亚洲香蕉| 久久亚洲国产成人精品无码区| 婷婷亚洲天堂影院| 亚洲v国产v天堂a无码久久| 国产一区二区三区免费视频| 日本免费观看网站| 国产中文字幕免费观看| 波多野结衣视频在线免费观看| 四虎永久免费影院在线| 国产乱子伦精品免费无码专区| 亚洲国产精品第一区二区三区| 亚洲日本一区二区一本一道| 超清首页国产亚洲丝袜| 亚洲人成77777在线播放网站| 亚洲精品乱码久久久久久久久久久久 | 亚洲熟女精品中文字幕| 一本天堂ⅴ无码亚洲道久久| 精品亚洲av无码一区二区柚蜜| 美女被羞羞网站免费下载| 一区二区三区精品高清视频免费在线播放 | 特级毛片爽www免费版| A国产一区二区免费入口| 男的把j放进女人下面视频免费| 99热这里只有精品6免费| 波多野结衣在线免费视频| 成人毛片免费观看视频| 全亚洲最新黄色特级网站| 亚洲综合AV在线在线播放| 亚洲国产精品一区二区久久| 亚洲成人免费在线观看| 亚洲国产AV一区二区三区四区| 污网站在线免费观看| 免费人成在线观看视频高潮| 久久ww精品w免费人成| 成人免费在线观看网站| 亚洲人成色7777在线观看不卡| 久久亚洲国产精品| 成人区精品一区二区不卡亚洲| 午夜不卡AV免费|