2012-10-15 5 views
0

OpenGL을 사용하여 그래프를 시각화하려고합니다. 저는 3D 공간에 포인트를 가진 버텍스 버퍼와 버텍스 사이의 선을 지정하는 인덱스 버퍼를 가지고 있습니다. glDrawElements를 사용하여 그래프를 그립니다. 모든 것이 작동합니다. 문제는 에지 가중치를 시각화해야한다는 것입니다. 내 문제는 가장자리 무게가 pairwise 특성이며이 정보를 쉐이더에 저장하는 방법을 모른다는 것입니다. 내가 생각할 수있는 유일한 해결책은 DrawRangeElements를 사용하여 각 가장자리를 개별적으로 그리고 모든 호출 사이에 가장자리 가중치를 설정하는 것입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?OpenGL에서 쌍으로 정점 속성

+0

"쌍 특성"이란 무엇입니까? –

+0

정점 A와 B가 주어지면 그 경계선을 설명하는 속성에 액세스 할 수있는 방법이 필요합니다. 이 경우 무게. 기본적으로 (인덱스 버퍼를 사용하는 동안) 내가 그린 모든 라인의 버퍼에있는 속성에 액세스하고 싶습니다. 기하학 셰이더에서이 작업을 수행 할 수있는 방법이 필요합니다. – circlingthesun

+0

2D 텍스처의 인접 행렬이 작동합니까? 각 x/y 포인트에서 픽셀 값은 노드 x와 노드 y 사이의 에지 가중치가됩니다. – genpfault

답변

1

기하학 쉐이더를 사용할 필요가 없습니다. GL_LINES으로 렌더링하고 필요에 따라 위치를 복제 할뿐만 아니라 라인에있는 각 쌍의 vert에 대해 동일한 "weight"속성을 제공하십시오. 이것은 궁극적으로 각 얼굴이 자체 법선을 필요로하는 큐브 렌더링과 다르지 않습니다.

메모리를 다시 가져와야하는 경우 (정규화 된 단락, 비정규 화 된 단락 또는 기타를 사용하여) 꼭지점 데이터를 압축 할 수없는 경우 여기에 some techniques you can use이 있습니다. 경고 : 이것은 메모리 대 성능 간의 상충 관계입니다. 따라서 실제 메모리 압력이 아니라면 꼭지점 데이터를 복제하여 끝내십시오.

+0

glDrawArrays를 사용하고 계십니까? – circlingthesun

+0

예. glDrawElements를 사용할 때는 각 줄마다 독립적 인 정점 인덱스가 사용되므로 아무런 의미가 없습니다. –

+0

어떻게 든 여분의 메모리 오버 헤드를 피할 수있는 방법이 있습니까? – circlingthesun

관련 문제