<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

    自己的一個(gè)畫點(diǎn)線面的代碼,有注釋。

    public class dotClass extends GLSurfaceView {
     private trangleFan tFan2d;
     //0x10000似乎是一個(gè)像素的距離
     int one = 0x10000;
        int vertex[] = {
                 one*200, one*200, 
                 one*300, one*500, 
         };
        
        //為各個(gè)點(diǎn)提供顏色,不知道出了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 ); 
          //這個(gè)matrix是如何把三維坐標(biāo)轉(zhuǎn)換為二維坐標(biāo)并把它放在顯示器上。
          gl.glMatrixMode( GL10.GL_PROJECTION );
          //告訴opengl初始化這個(gè)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的大小,也就是下邊的點(diǎn)的尺寸
      gl.glPointSize(size );
      //vertex數(shù)組里存的坐標(biāo),這里的2代表2維,就是數(shù)組里面的數(shù)字2個(gè)位一族表示一個(gè)點(diǎn)的位置。需要裝成buff
      gl.glVertexPointer( 2, GL10.GL_FIXED, 0, getIntBuffer( vertex ) );
      //color數(shù)組里面存儲(chǔ)的點(diǎn)的顏色,這里的4代表RGBA類型顏色。也需要妝化成buff
      gl.glColorPointer( 4, GL10.GL_FIXED, 0, getIntBuffer( color ) );
      //告訴gl畫什么圖形,這里的2代表畫多少個(gè)點(diǎn),及數(shù)組里面包含多少個(gè)點(diǎn)
         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 閱讀(594) 評(píng)論(0)  編輯  收藏 所屬分類: Android3D
    主站蜘蛛池模板: 亚洲AV日韩精品久久久久| 亚洲精品福利网泷泽萝拉| 亚洲精品中文字幕无乱码| 亚洲a∨无码一区二区| 免费看成人AA片无码视频吃奶| 无码日韩精品一区二区免费| 国产精品亚洲玖玖玖在线观看| 亚洲大尺码专区影院| gogo免费在线观看| 午夜宅男在线永久免费观看网| 2048亚洲精品国产| 精品国产成人亚洲午夜福利| 国产在线国偷精品免费看| 成人免费毛片视频| 亚洲Av熟妇高潮30p| 黄色a三级免费看| 国产一卡二卡3卡四卡免费| 在线观看亚洲成人| 亚洲一区二区三区写真| 免费成人高清在线视频| 一本色道久久88亚洲综合| 亚洲最大视频网站| 爽爽爽爽爽爽爽成人免费观看| 免费毛片网站在线观看| 67pao强力打造67194在线午夜亚洲| 免费无遮挡无遮羞在线看| 一个人看的www在线观看免费| 精品久久香蕉国产线看观看亚洲| 久久水蜜桃亚洲AV无码精品| 四虎免费影院ww4164h| 亚洲乱色熟女一区二区三区丝袜| 亚洲国产精品18久久久久久| 2021在线永久免费视频| 亚洲AV无码第一区二区三区| 免费一级特黄特色大片| 好吊妞998视频免费观看在线| 在线免费观看亚洲| 国产一区二区免费| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 色噜噜亚洲男人的天堂| 最近免费中文字幕高清大全|