<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伊人久久综合密臀性色 | 亚洲AV无码专区在线亚| 久久亚洲伊人中字综合精品| 高清在线亚洲精品国产二区| 成年大片免费视频| 日韩精品福利片午夜免费观着| 中文字幕一区二区免费| 在线人成免费视频69国产| 国产在线播放线91免费| 大地资源中文在线观看免费版| 免费国产va视频永久在线观看| 国产精品亚洲小说专区| 黄色一级毛片免费| 美女18毛片免费视频| 一级毛片免费全部播放| 深夜福利在线免费观看| 亚洲高清免费视频| 免费A级毛片无码专区| 亚洲成人免费网站| 女人让男人免费桶爽30分钟| 天天操夜夜操免费视频| 免费h黄肉动漫在线观看| 亚洲中文无韩国r级电影| 亚洲Av综合色区无码专区桃色| 国产国拍亚洲精品mv在线观看 | 一区二区无码免费视频网站| 午夜小视频免费观看| 国产成人A亚洲精V品无码| 亚洲自偷自拍另类12p| 亚洲AV无码专区在线电影成人| gogo免费在线观看| 成人免费无码大片A毛片抽搐色欲| 高清国语自产拍免费视频国产| 久久精品国产亚洲夜色AV网站|