Computer/JOGL
7. GLSL -- vs & fs
DogBull
2007. 8. 3. 09:15
VertexShader(이하 vs 또는 VS) 와 FragmentShader(이하 fs 또는 FS)를
OpenGL Application 으로 읽어들이는 가장 간단한 방법에 대해 알아 보았다.
// VertexShader.vs
void main(){
gl_Position= ftransform();
}
void main(){
gl_Position= ftransform();
}
// FragmentShader.fs
void main(){
gl_FragColor= vec4(1, 0, 0, 1);
}
void main(){
gl_FragColor= vec4(1, 0, 0, 1);
}
위의 vs 와 fs의 기능은 매우 간단하다.
glVertex3f(...) 등으로 렌더링 파이프 라인에 넣어진 버텍스는 vs 에 따라 projection, view 를 거친후
red 색상으로 화면에 출력해 준다.
그렇다면 실제 응용프로그램에서 지정된 색상 즉,
gl.glColor3f(1, 1, 0);
glut.glutSolidTeapot(1);
과 같이 선언되었을 때, 이 색상으로 출력하기 위해서는 어떻게 해야 할까?
// VertexShader.vs
void main(){
gl_FrontColor= gl_Color;
gl_Position= ftransform();
}
void main(){
gl_FrontColor= gl_Color;
gl_Position= ftransform();
}
// FragmentShader.fs
void main(){
gl_FragColor= gl_Color;
}
void main(){
gl_FragColor= gl_Color;
}
vs 와 fs가 이와같이 선언되어 있다면,
출력결과는 응용프로그램에서 지정한 색상을 따르게 된다.