(3Ds Max에서 내 보낸) 3D 메시에 필요한 모든 정보가있는 사용자 지정 파일 형식이 있습니다. 버텍스, 버텍스 인덱스 및 법선에 대한 데이터를 추출했습니다.OpenGL - 인덱스 버퍼 문제
나는 OpenGL을에 정점 데이터, 정점의 인덱스 및 법선 데이터를 전달하고 난 지금 보이지만 법선 glDrawElements(GL_TRIANGLES,...)
모두를 호출 메쉬를 렌더링합니다. 문제는 법선이 다른 지수를가집니다. OpenGL은 하나의 인덱스 버퍼만을 사용할 수 있기 때문에 정점과 법선 모두에 인덱스 버퍼를 사용합니다.
나는 그 문제에 대해 어떻게 생각하는지 제안 해 주시면 정말 감사 할 것입니다.
중요한 점은 버텍스/일반 데이터는 "정렬"되어 있지 않으므로 glDrawArrays(GL_TRIANGLES,...)
의 기능을 사용할 수 없다는 점입니다. 메시가 올바르게 렌더링되지 않습니다.
메시를 올바르게 그릴 수 있도록 데이터를 정렬하는 데 사용할 수있는 방법/알고리즘이 있습니까 glDrawArrays(GL_TRIANGLES,..)
? 그러나 알고리즘이 있더라도 한 가지 더 문제가 있습니다 - 일부 꼭지점을 복제해야합니다 (내 꼭지점 버퍼가 고유 한 꼭지점으로 구성되어 있기 때문에 - 예를 들어 큐브에 8 개의 꼭지점 만있는 경우). 그리고 확실하지 않습니다. 그렇게하는 방법.
"문제는 법선이 다른 인덱스를가집니다." 왜? 법선이 꼭지점과 일치하도록 인덱스 버퍼를 다시 정렬합니다. 더 나은 점은 정점 정보를 인터리브하는 것입니다. –
일부 메시에서는 정점보다 법선이 더 많으므로 인덱스를 일치시킬 방법이 없습니다. 그거 보통입니까? – Geto
아, 그래, 음영 효과의 경우 같은 점에서 다른 법선으로 정점을 얻을 수 있습니다. 속성과 사용중인 파일 형식에 따라 모든 내용이 정렬되도록 데이터를 다시 배열해야합니다. 그러나 지금 당장 당신은 실제로 질문을하지 않았기 때문에 나는 무엇을 대답해야할지 모른다. –