2011-04-08 7 views
0

내가 코드의 조각이 현재의 정점 위치를 검색하는 방법 : 나는 각각의 변환 후 각 정점의 위치를 ​​알고 싶어다음되는 삼각형

glRotatef(triangle_info.struct_triangle.rot, 0, 0, 1.); 

glEnableClientState(GL_VERTEX_ARRAY); 

glVertexPointer(2, GL_FLOAT, 0, trian_data_values); 

glDrawArrays(GL_TRIANGLES, 0, 3); 

. 내가 어떻게 할까?

답변

3

이 데이터를 쉽게 얻을 수있는 방법은 없습니다. OpenGL은 주로 드로잉에 관심이 있으며 일반적으로 데이터가 필요하지는 않지만 여전히 잘됩니다. 이 데이터가 필요한 응용 프로그램은 대개 수학 자체를 수행합니다.

각 정점에 대해 수동으로 변환해야합니다. 이렇게하려면 각 정점에 모델 뷰 행렬을 곱하십시오. 이 계산을 수행해야하는 프로그램이 해당 값을 캐시하는 modelview 행렬을 모르면 glGetFloatv(GL_MODELVIEW_MATRIX)을 사용하여 쿼리 할 수 ​​있습니다.

또는 OpenGL 버전이 3.0 이상이거나 EXT_transform_feedback이 지원되면 변환 피드백을 사용할 수 있습니다. 이를 위해서는 버퍼를 만들고 바인딩하고, 꼭지점 위치를 피드백 변화로 설정하고, 시작/끝 변환 피드백을 호출해야합니다. 마지막으로 버퍼를 매핑하여 데이터를 다시 가져와야합니다.
피드백을 변환하면 더 많은 설정이 가능하지만 수학을 직접하지 않아도됩니다.

관련 문제