본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] OpenGL 기초 APIs ( Rotation, LoadIdentity, ColorPointer, Enable )

by 돼지왕 왕돼지 2012. 2. 14.
반응형


안녕하세요 돼지왕 왕돼지입니다.
오늘은 Android에서 사용하는 OpenGL 의 기초 APIs 중 Rotation, LoadIdentity, ColorPointer, Enable 에 대해 알아보겠습니다.


gl.glRoatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);


 - (x, y, z) vector를 기준으로 angle만큼 rotate. 여기서 angle 단위는 degree.
 - 현재의 Matrix Mode에 곱해진다. ( ModelView 혹은 Projection )
 - rotation 방향은 right-hand rule을 따른다. ( ex) (x,y,z)가 user를 향하면 방향은 counterclockwise)
 
 

이미지 출처 : en.wikipedia.org

 


gl.glLoadIdentity();


 - 현재 matrix를 identity matrix로 바꾸어준다. ( 단위행렬 )
 
 

gl.glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);

 
  - glVertexPointer와 같은 맥락이나, color 에 대한 정의를 한다는 것만 다르다.
 



 

[Color Buffer 만드는 법 참고]

 
 

gl.glEnable(GLenum cap);

 
 - Server-side GL capability를 enable or disable.
 - cap은 capability의 약자로 다음과 같은 값이 들어올 수 있다.
 
  GL10.GL_ALPHA_TEST : alpha testing
  GL10.GL_BLEND : color buffer에 있는 color들을 blend
  GL10.GL_COLOR_LOGIC_OP : 현재 설정된 logical operation을 color value에 적용
  GL10.GL_CLIP_PLANEi : user-defined clipping plane i에 대항하여 clip
  GL10.GL_COLOR_MATERIAL : ambient and diffuse 파라미터가 현재 color를 따라감
  GL10.GL_CULL_FACE : coordinate의 winding에 따라서 polygon을 자름. (안보이게)
  GL10.GL_DEPTH_TEST : depth 비교를 하여 depth buffer를 update. 이게 없으면 depth에 상관 없이 그리는 순서대로 보여진다.
  GL10.GL_DITHER : color buffer에 넣기 전에 dither 시킴
  GL10.GL_FOG : texturing color에 fog color를 섞음.
  GL10.GL_LIGHTi : light equation 평가할 때 light i 를 포함
  GL10.GL_LINE_SMOOTH : line을 그릴 때 filtering. (없으면 aliased line)
  GL10.GL_MULTISAMPLE : pixel의 color 계산할때 여러개의 sample을 이용
  GL10.GL_NORMALIZE : lighting 전, transformation 후에 normal vector가 normalized 됨
  GL10.GL_POINT_SMOOTH : point를 filtering하여 그림 (기본은 aliased point)
  GL10.GL_POINT_SPRITE_OES : point sprites를 enable
  GL10.GL_POLYGON_OFFSET_FILL : polygon의 depth에 offset 주기
  GL10.GL_RESCALE_NORMAL : light 전, transformation 후에 normal vector가 scale 됨
  GL10.GL_SAMPLE_ALPHA_TO_CONVERAGE : alpha value가 결정되는 곳에서 임시 coverage value를 계산
  GL10.GL_SAMPLE_ALPHA_TO_ONE : 모든 sample alpha value가 max 값으로 변환
  GL10.GL_SAMPLE_COVERAGE : temp coverage value와 frgment coverage value가 AND 됨.
  GL10.GL_SCISSOR_TEST : scissor rectangle 밖의 모든 fragment 버림
  GL10.GL_STENCIL_TEST : stencil buffer update & test
  GL10.GL_TEXTURE_2D : texture 적용

 
로그인 없이 추천 가능합니다. 손가락 꾸욱~


반응형

댓글