만약.. GL_TRIANGLE로 TETRA를 그리면.. 각 면당 3개의 인덱스가 필요하고 4면이니 총 12개의 인덱스가 필요함.. 하지만.. GL_TRIANGLE_STRIP으로 그리게 되면.. 총 6개의 인덱스로 그릴 수 있어 성능면에서 이득임.
const GLfloat tetrahedron[4][3] = {
{ 1.0, 1.0, 1.0 }, /* index 0 */
{ -1.0, -1.0, 1.0 }, /* index 1 */
{ -1.0, 1.0, -1.0 }, /* index 2 */
{ 1.0, -1.0, -1.0 } }; /* index 3 */
/* Color information for each vertex */
const GLfloat colors[4][3] = {
{ 1.0, 0.0, 0.0 }, /* red */
{ 0.0, 1.0, 0.0 }, /* green */
{ 0.0, 0.0, 1.0 }, /* blue */
{ 1.0, 1.0, 1.0 } }; /* white */
const GLubyte tetraindicies[6] = { 0, 1, 2, 3, 0, 1 };
구현은 아래를 참고할것.
https://www.khronos.org/opengl/wiki/Tutorial4:_Using_Indices_and_Geometry_Shaders_(C_/SDL)
아래는 참고용.
GL_TRIANGLES 는 한 삼각형을 그릴 때마다 3개의 정점이 필요합니다. 따라서 2개의 삼각형을 그리면 6개의 정점이 필요합니다.
GL_TRIANGLE_STRIP은 첫 삼각형을 그릴 때는 3개의 정점이 필요하지만 다음 삼각형을 그릴 때에는 한 개의 정점만 필요합니다. 이전 삼각형의 마지막 정점 두 개를 재 사용하기 때문입니다. 예를 들어 v1, v2, v3 로 삼각형을 그린 후 새로운 정점 v4를 추가하면 v2, v3, v4 로 삼각형이 그려집니다.
GL_TRIANGLE_FAN은 GL_TRIANGLE_STRIP과 비슷하지만 이전 삼각형의 두 점을 재 사용하는 것이 아니라 항상 첫 삼각형의 시작 정점 한 개와 이전 삼각형의 마지막 정점을 재사용합니다. 예를 들어 v1, v2, v3 로 삼각형을 그린 후 새로운 정점 v4를 추가하면 v1, v3, v4로 삼각형이 그려집니다. 여기에 다시 v5를 추가하면 v1, v4, v5로 삼각형이 그려집니다.
'블로그 (Blog) > 개발로그 (Devlogs)' 카테고리의 다른 글
Qt6 with WebView2 (0) | 2024.11.26 |
---|---|
OpenGL에서 다른 오브젝트에 가려 보이는지의 여부 체크하기... (0) | 2024.11.05 |
DJGPP 크로스 컴파일러 설치 (0) | 2024.07.31 |
프로그램을 detach 하여 백그라운드로 돌리기 (0) | 2024.07.24 |
plane subdivision (0) | 2024.07.12 |