Android OpenGL 자습서 - 제5과

3464 단어
제 5 과
3D 공간:
 
우리는 다각형과 사각형을 이용하여 3D 물체를 만들었다. 이 시간에 우리는 삼각형을 입체적인 금탑 모양으로 바꾸고 사각형을 입방체로 바꾸었다.
일단 삼각형의 정점이 뭐가 됐는지 봅시다.
private float[] mTriangleArray = {
           0.0f,1.0f,0.0f,
           -1.0f,-1.0f,1.0f,
           1.0f,-1.0f,1.0f,
          
           0.0f,1.0f,0.0f,
           1.0f,-1.0f,1.0f,
           1.0f,-1.0f,-1.0f,
          
           0.0f,1.0f,0.0f,
           1.0f,-1.0f,-1.0f,
           -1.0f,-1.0f,-1.0f,
          
           0.0f,1.0f,0.0f,
           -1.0f,-1.0f,-1.0f,
           -1.0f,-1.0f,1.0f
    };
    private FloatBuffer mTriangleBuffer;
한 네 개의 면, 한 면에 세 개의 점, 지면에 그림을 그리지 않았다.
너희는 각 면을 자세히 보아라, 모두 시계 반대 방향으로 그린 것이다.물론 콜 제거 코드를 추가하지 않았다면, 시계 반대 방향은 상관없어. 다 그려.그래도 방향에 맞게 쓴 아라를 추천합니다.
 
삼각형의 색조가 왔어요.
private float[] mColorArray={
           1.0f,0.0f,0.0f,1.0f,
           0.0f,1.0f,0.0f,1.0f,
           0.0f,0.0f,1.0f,1.0f,
          
           1.0f,0.0f,0.0f,1.0f,
           0.0f,0.0f,1.0f,1.0f,
           0.0f,1.0f,0.0f,1.0f,
          
           1.0f,0.0f,0.0f,1.0f,
           0.0f,1.0f,0.0f,1.0f,
           0.0f,0.0f,1.0f,1.0f,
          
           1.0f,0.0f,0.0f,1.0f,
           0.0f,0.0f,1.0f,1.0f,
           0.0f,1.0f,0.0f,1.0f,    
    };
    private FloatBuffer mColorBuffer;
동일한 점은 동일한 색상입니다.
 
입방체의 색 그룹이 왔습니다.
private float[] mQuadColorArray={
       0.0f,1.0f,0.0f,1.0f,
       0.0f,1.0f,0.0f,1.0f,
       0.0f,1.0f,0.0f,1.0f,
       0.0f,1.0f,0.0f,1.0f,
      
       1.0f,0.5f,0.0f,1.0f,
       1.0f,0.5f,0.0f,1.0f,
       1.0f,0.5f,0.0f,1.0f,
       1.0f,0.5f,0.0f,1.0f,
      
       1.0f,0.0f,0.0f,1.0f,
       1.0f,0.0f,0.0f,1.0f,
       1.0f,0.0f,0.0f,1.0f,
       1.0f,0.0f,0.0f,1.0f,
      
       1.0f,1.0f,0.0f,1.0f,
       1.0f,1.0f,0.0f,1.0f,
       1.0f,1.0f,0.0f,1.0f,
       1.0f,1.0f,0.0f,1.0f,
      
       0.0f,0.0f,1.0f,1.0f,
       0.0f,0.0f,1.0f,1.0f,
       0.0f,0.0f,1.0f,1.0f,
       0.0f,0.0f,1.0f,1.0f,
      
       1.0f,0.0f,1.0f,1.0f,
       1.0f,0.0f,1.0f,1.0f,
       1.0f,0.0f,1.0f,1.0f,
       1.0f,0.0f,1.0f,1.0f,
      
    };
   
    private FloatBuffer mQuadColorBuffer;
어지럽지 마세요. 뒤에 무늬가 있으면 돼요. 그런데 이게 기초예요. 꼭 파악해야 돼요.
 
그림 그리는 코드가 왔어요.
       gl.glTranslatef(-1.5f, 0.0f, -6.0f);
       gl.glRotatef(rtri, 0.0f, 1.0f, 0.0f);                  // Y   
//     gl.glColor4f(1f, 1f, 1f, 1f);
       gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
       gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
      
       gl.glColorPointer(4, GL10.GL_FLOAT, 0, mColorBuffer);
      
       gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mTriangleBuffer);
       gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 12);     //    4  ,   3  
      
       gl.glLoadIdentity();
       gl.glTranslatef(1.5f, 0.0f, -6.0f);
       gl.glRotatef(rquad, 1.0f, 0.0f, 0.0f);
 
       gl.glColorPointer(4, GL10.GL_FLOAT, 0, mQuadColorBuffer);
       gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mQuadsBuffer);
//   6  
       for (int i=0; i<6; i++){
           gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, i*4, 4);         
       }
 
       rtri+=0.2f;
       rquad-=0.15f;

좋은 웹페이지 즐겨찾기