2013-03-18 2 views
6

glVertexAttribDivisor은 인스턴스화 된 렌더링 중에 일반 정점 속성이 증가하는 비율을 수정하는 데 사용할 수 있지만 인스턴스화하지 않고 특정 비율로 속성을 향상시킬 방법이 있는지 궁금합니다.인스턴스가없는 속성 약수?

하는의 당신이 일련의 선을 구성하는 버텍스 위치의 목록을 정의하고, 각 라인 당신이 ID를 연결하고자하는 가정 해 봅시다 : 여기

무슨 뜻인지의 예입니다. 따라서 각각의 애트리뷰트 중 하나와 관련된 데이터 (모든 버텍스 위치 또는 모든 버텍스 ID)를 각각 저장하는 두 개의 보봇 (bobos)을 생성합니다. 전통적으로, 이것은 각각의 vbo가 라인 수 X2 (각 포인트가 두 라인을 포함하고 있음)의 크기 (요소)이어야 함을 의미합니다. 이것은 물론 라인의 각 포인트에 대해 동일한 ID 값을 복제한다는 의미입니다.

내가 대신하고 싶은 것은 ID가 정점 위치 버퍼가 전진하는 2 개의 요소마다 1 개의 요소를 전진 시키도록 지정하는 것입니다. 내 꼭지점 위치 버퍼가 먼저 선언되어야한다는 것을 알고 있습니다. (OpenGL에게 얼마나 자주 ID 버퍼를 전달할지를 알려주기 위해) 그래도 가능한 것처럼 보입니다. 그러나 OpenGL 사양에서 그러한 조작을 허용하는 기능을 찾을 수 없습니다.

답변

2

OpenGL에서 일반적으로 원하는 것은 없습니다. 효과적으로 multi-indexed rendering의 제지 된 양식이므로 해당 기법 중 하나를 사용해야합니다.

+0

이 경우에는 glMultiDrawArraysIndirect()를 사용하여 한 번에 한 세그먼트 씩 그릴 수 있으며 ID VBO에 대한 속성 제수 1을 사용하고 간접 명령 구조의 baseIndex 부분을 사용하여 색인을 증가시킵니다 신분증 VBO에 그려? 이것은 GPU 메모리에 더 많은 데이터를 넣을 수는 있지만 이론적으로 가능할 것입니까? – Samik

+0

특정 경우에는 작동하지만 * 일반 *에는 작동하지 않습니다. –

관련 문제