G.I.S Developer, 개발자 김형준(Dip2K)  
Front Page
Notice | Keyword | Tag | E-Mail | Guestbook | Admin | Write Article   
 
2007/07/27 15:13 2007/07/27 15:13
OpenGL Shader - 3
Vertex Processor

버텍스 프로세서는 버텍스 쉐이더를 실행한다. 버텍스 쉐이더의 입력은 버텍스 데이터로써, 주로 버텍스의 위치, 색, 법선벡터 등으로써 OpenGL 어플리케이션이 보내준다.

다음 OpenGL 코드는 버텍스 프로세서에게 각 버텍스에 대한 색상, 위치 값을 전달해준다.

glBegin(...);
    glColor3f(0.2,0.4,0.6);
    glVertex3f(-1.0,1.0,2.0);

    glColor3f(0.2,0.4,0.8);
    glVertex3f(1.0,-1.0,2.0);
glEnd();
버텍스 쉐이더에서 다음과 같은 일을 할 수 있다.

  • 모델뷰 행렬과 프로젝션 행렬을 이용해서 버텍스의 위치를 이동
  • 노말 벡터의 변환, 그리고 필요하다면 노말 벡터의 정규화
  • 텍스쳐 좌표 생성과 변환
  • 버텍스에 대한 빛 또는 픽셀에 대한 빛 계산
  • 색상 계산
위의 모든 연산을 수행할 필요는 없다. 그러나 일단 버텍스 쉐이더를 만들었다면 버텍스 프로세서의 전체 기능을 버텍스 쉐이더가 대신하며, 따라서 법선 변환을 수행할 수 없고 고정 기능이 텍스쳐 좌표 생성을 수행하도록 할 수 없다. 버텍스 쉐이더가 사용될때 파이프 라인의 이 단계의 필요한 모든 기능을 버텍스 쉐이더가 대신하게 된다.

이전에서 설명했던 것처럼, 버텍스 쉐이더는 버텍스간 연결성 고려에 대한 정보를 가지고 있지 않다. 그러므로 위상 데이터를 필요로 하는 연산은 버텍스 쉐이더에서 수행할 수 없다. 예를들어서, 버텍스 쉐이더가 뒷면 제외를 할 수 없는데, 버텍스 쉐이더는 버텍스 단위 연산이지 버텍스가 이루고 있는 면에 대한 연산을 할 수 없기 때문이다. 면을 알려면 버텍스간의 연결 정보를 알아야 한다. 이러한 연결정보가 바로 위상 데이터의 하나이다. 버텍스 프로세서는 개별적인 버텍스 하나 하나를 처리 하는 순간에 그 하나 이외의 나머지 버텍스를 알지 못한다.

버텍스 쉐이더는 최소한 gl_Position 이라는 변수를 변경해야만 한는데, 이 변수는 보통 모델뷰 행렬과 프로젝션 행렬을 이용한 변환이다.

버텍스 프로세서는 OpenGL 상태에 접근할 수 있어서, 예를 들어 빛을 포함하고 재질을 사용하는 연산을 수행할 수 있다. 또한 텍스쳐에 대한 정보도 접근할 수 있는데 이것은 최신 그래픽 카드에서만 허용한다. 하지만 프레임 버퍼에는 접근할 수 없다.
이 글이 도움이 되셨다면, 짧은 댓글이라도 달아주시길, 큰 힘이 됩니다. ^^*

Tag : ,
Track this back : http://www.gisdeveloper.co.kr/trackback/273
Commented by 비밀방문자 at 2007/09/21 16:02  r x
관리자만 볼 수 있는 댓글입니다.
Commented by mya at 2007/11/08 08:08  r x
강좌 감사합니다. 덕분에 쉽게 공부하고 있습니다.
그런데 중간에 "그러나 일단 버텍스 쉐이더를 만들었다만 버텍스 프로세서의 전체 기능을 버텍스 쉐이더가 대신하며, 따라서 법선 변환을 수행할 수 없고 고정 기능이 텍스쳐 좌표 생성을 수행하게 된다. " 이 부분 약간 해석 오류가 있네요.
"그러나 일단 버텍스 쉐이더를 만들었다면 버텍스 프로세서의 전체 기능을 버텍스 쉐이더가 대신하며, 따라서 법선 변환을 수행할 수 없고 고정 기능이 텍스쳐 좌표 생성을 수행하도록 할 수 없다." 이렇게 되야 할 것 같습니다.
Commented by 김형준(Dip2K) at 2007/11/08 13:16  r x
네~ ^^ 수정했습니다, 지적감사합니다~

[로그인][오픈아이디란?]
name    password    homepage
 hidden
BLOG main image
 Notice
[DuraMap-Xr] 소개 및 다운로드
[DuraMap-Xr] FAQ
개발과 관련한 질문은..
OpenGL Tutorials
운영자(Dip2K)에 대해
 Category
전체 (387)
GIS 개발 (82)
프로그래밍 (180)
스치는 생각들 (116)
번역 또는 집필 (3)
 TAGS
GIS OpenGL Shader Xr Algorithm Map Engine WPF ArcObjects ArcGIS C++
 Calendar
«   2010/07   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
 Recent Entries
XrGeocoder - 주소를 좌표... (1)
XrProjection, 좌표계 변... (19)
[Java] 파생 클래스가 아...
[Java] 정적 초기화 블럭(...
[DuraMap-Xr] 그리드 레이...
 Recent Comments
감사합니다!!! 이렇게 직...
김지훈 - 07/29
감사 감사~ 근데.. 이글은...
김형준 - 07/29
친절한 해석 감사드려요^^
안토니오 - 07/29
별말씀을요.. ^^ 댓글에...
김형준 - 07/28
최근에 XrGeocoder라는 툴...
김형준 - 07/28
네, 요즘은 바로 도움을...
김형준 - 07/28
이래 저러 경황이 없어 댓...
김형준 - 07/28
잘 봤습니다. 큰 도움이...
gekko - 07/27
혹시 주소를 좌표로 변환...
김지훈 - 07/25
감사드립니다.. 바빠서 몇...
임은섭 - 07/23
 Archive
2010/07
2010/06
2010/05
2010/04
2010/03
2010/02
2010/01
2009/12
2009/11
2009/10
2009/09
2009/08
 Link Site
Adobe Flex 3 Help
Cartograph 2.0
GIS 위키디피아
GIS 프로그래밍 연구소
MapTools.org
OGC
OGRE3D
OSGeo 한국 지부
Wikipedia
국가수자원관리 정보시스템
국립지리원
국토연구원
국토해양부
네이버 과학
대한측량협회
류광님의 블로그
비지니스 GIS
이민파님의 공간분석과 리...
 Visitor Statistics
Total : 659265
Today : 81
Yesterday : 451
태터툴즈 배너
rss