2013-06-19 2 views
0

필자는 연속적인 피드백을 채우고 싶은 버퍼를 가지고 있으며이를 정확히 수행하는 방법에 대해 궁금합니다.변환 피드백을 사용하는 glBindBufferRange의 사용

glBindBufferRange 나는 처음 세 glBindBufferBase의 인수에 동일하다는 것을 이해하지만 나는 offsetsize 인수에 대한 몇 가지 질문을 가지고, 오 개 인자를 가지고있다.

만약 처음 GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN에서 검색으로 의견을 내 프리미티브는 점, 그리고 나는 n*4*sizeof(GLfloat)로 설정 glBindBufferRange의 오프셋 (offset)한다, 버퍼에 그 위치에서 계속하려면, n 프리미티브를 생성 변환? (나는 vec4 지오메트리 쉐이더 출력을 검색하고 가정) (그들은 두 가지 유형, GLintptr 및 GLsizeiptr이 있지만)

워드 프로세서는 offsetsize 기본 기계 단위로해야한다고 말하지만, 나는 정확히 모르겠어요 무엇을 즉, 바이트라고 가정 했으므로이게 맞습니까?

답변

1

예, 변환 피드백 중에 버퍼에 기록되는 데이터의 양은 기록 된 프리미티브 수 * 프리미티브의 구성 요소 수 * 프리미티브 크기입니다. 그리고 예, "기본 기계 장치"는 "바이트"표준입니다.

+0

예 죄송합니다. 조금 명확하지 않습니다. 이들은 완전히 별도의 변환 피드백입니다. 두 번째 피드백의 버퍼에 쓰기 시작 위치를 계산하는 방법을 알고 싶습니다. 즉, 오프셋을 사용하여 버퍼에 간격을 두지 않거나 이미 작성한 내용을 덮어 쓰지 마십시오. – leohutson

+1

@leohutson : 마지막 문장을보십시오. –

+0

도움을 많이 주셔서 감사합니다. 지금 꽤 잘 이해하고 있습니다. 괜찮으 시다면 약간 접선 질문을하고 싶습니다. 현재 코드에서, 초기 변환 피드백 후 장벽 역할을하는 while 루프를 사용하여 GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 쿼리를 사용할 수있을 때까지 프로그램을 "일시 중지"합니다. 이걸 없애고 예상되는 프리미티브 수를 직접 계산한다면 버퍼를 다시 바인딩하고 두 번째 피드백을 즉시 수행하거나 동시성 문제가있는 것이 안전할까요? – leohutson