Post Lists

2019년 1월 19일 토요일

Instancing In Deferred Rendering Engine, using OpenGL

Model Class에서 Mesh별로 Draw를 하고 있는데,
Instancing을 추가하고 싶었다.

그래서 Instancing Model과 그냥 Model을 나누려고 했는데,
OpenGL 명세를 읽어보니 glDrawElementsInstanced는
for문으로 glDrawElementsOneInstance를 실행한 것과 같고.
glDrawElements는 glDrawElementsOneInstance를 한 번만 실행하는 것과 같다고 했다.

그래서, 나는 현재 그냥 Model Class에 있는 이것을

glDrawElements(GL_TRIANGLES, m_indices.size(), GL_UNSIGNED_INT, 0);

다음으로
glDrawElementsInstanced(GL_TRIANGLES, m_indices.size(), GL_UNSIGNED_INT, 0, 1);

바꾸었다.

그래서, 실행해보니, 문제가 없었다.
따라서 굳이 나눌 필요가 없게 되었다.

그냥 bool flag를 넣어서 instance라면, instance amount만 명시해주면 되는 것이다.
그러면 Instancing을 구현할 수 있을 것이다.

Instancing에 따라서, Model picking을 또 따로 구현해야 할텐데 지금 시간이 없으니
일단 Instancing만 구현하자.

댓글 없음:

댓글 쓰기