필자는 연속적인 피드백을 채우고 싶은 버퍼를 가지고 있으며이를 정확히 수행하는 방법에 대해 궁금합니다.변환 피드백을 사용하는 glBindBufferRange의 사용
glBindBufferRange
나는 처음 세 glBindBufferBase
의 인수에 동일하다는 것을 이해하지만 나는 offset
및 size
인수에 대한 몇 가지 질문을 가지고, 오 개 인자를 가지고있다.
만약 처음 GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
에서 검색으로 의견을 내 프리미티브는 점, 그리고 나는 n*4*sizeof(GLfloat)
로 설정 glBindBufferRange
의 오프셋 (offset)한다, 버퍼에 그 위치에서 계속하려면, n
프리미티브를 생성 변환? (나는 vec4 지오메트리 쉐이더 출력을 검색하고 가정) (그들은 두 가지 유형, GLintptr 및 GLsizeiptr이 있지만)
워드 프로세서는 offset
및 size
기본 기계 단위로해야한다고 말하지만, 나는 정확히 모르겠어요 무엇을 즉, 바이트라고 가정 했으므로이게 맞습니까?
예 죄송합니다. 조금 명확하지 않습니다. 이들은 완전히 별도의 변환 피드백입니다. 두 번째 피드백의 버퍼에 쓰기 시작 위치를 계산하는 방법을 알고 싶습니다. 즉, 오프셋을 사용하여 버퍼에 간격을 두지 않거나 이미 작성한 내용을 덮어 쓰지 마십시오. – leohutson
@leohutson : 마지막 문장을보십시오. –
도움을 많이 주셔서 감사합니다. 지금 꽤 잘 이해하고 있습니다. 괜찮으 시다면 약간 접선 질문을하고 싶습니다. 현재 코드에서, 초기 변환 피드백 후 장벽 역할을하는 while 루프를 사용하여 GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 쿼리를 사용할 수있을 때까지 프로그램을 "일시 중지"합니다. 이걸 없애고 예상되는 프리미티브 수를 직접 계산한다면 버퍼를 다시 바인딩하고 두 번째 피드백을 즉시 수행하거나 동시성 문제가있는 것이 안전할까요? – leohutson