GL_TESS_EVALUATION_SHADER
을 인자로 전달해서 생성해야 한다
GLuint TessControlShaderID = glCreateShader(GL_TESS_CONTROL_SHADER);
GLuint TessEvaluationShaderID = glCreateShader(GL_TESS_EVALUATION_SHADER);
TessShader 쓸 때
1) glPatchParameteri(GL_``PATCH_VERTICES, 몇개 줄 건지)
전달해야 함
2) glDrawArrays(GL_PATCHES, 0, 4);
그릴 때 Patch로 그릴 것이라는 사실도 전달해주어야 함
GLuint a_Position = glGetAttribLocation(programID, "a_Position");
glVertexAttribPointer(a_Position, 3, GL_FLOAT, GL_FALSE, 0, (GLvoid*)(0));
glEnableVertexAttribArray(a_Position);
//outer 값 넘겨주기
GLuint u_outer = glGetUniformLocation(programID, "uOuter1");
glUniform1f(u_outer, 5.0f);
//fprintf(stdout, "u_outer : %d\n", &u_tess);
//몇 개의 패치를 전달할지, 그리고 패치의 개수를 전달함
glPatchParameteri(GL_PATCH_VERTICES, 4);
glDrawArrays(GL_PATCHES, 0, 4);
//Double buffer
glutSwapBuffers();
Bezier 는 모든 Control Points를 지나기 때문에 훨씬 아래로 치우친 모양이다
또한 처음 점과 끝 점을 반드시 지나고 있다
B-Spline 은 근사치로 훨씬 부드러운 곡선 표현이 되었다