OpenGL ES 1.X에서 정점 버퍼 객체를 사용할 때 인덱스 된 프리미티브를 사용할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/268035

  •  06-07-2019
  •  | 
  •  

문제

정점 버퍼 객체를 사용하여 GPU에 복사하는 정점 목록이 포함 된 배열이 있습니다. 그러나 정점 좌표 자체는 정점 배열에 인덱스 목록이 포함 된 정수 배열이 있기 때문에 자체적으로는 의미가 없습니다.

이 시나리오에서는 인덱스를 저장하기 위해 다른 버퍼 객체를 만들 수 있습니다. 그런 다음 렌더링 함수에서 vertex 배열과 그리기를위한 인덱스 배열을 모두 바인딩 할 수 있습니다.

//vertex coordinates
glBindBuffer(GL_ARRAY_BUFFER, bufferId1);         
//index coordinates
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, bufferId2); 

glVertexPointer(3, GL_FLOAT, 0, 0);
//Not sure if this should be Unsigned BYTE or Unsigned SHORT
glDrawElements(GL_POINTS, 6, GL_UNSIGNED_BYTE, 0);  

나는 API를 읽었고 다음은 나를 혼란스럽게했다.
"0이 아닌 버퍼 객체가 gl_element_array_buffer 대상에 바인딩되지만, 전통적으로 클라이언트 측 메모리에 대한 포인터로 해석되는 glDrawElements의 인덱스 매개 변수는 대신 기본 머신 유닛에서 측정 된 버퍼 객체 내에서 오프셋으로 해석됩니다."

그래픽 프로그래밍에 익숙하지 않으므로이 중 하나가 이해가되지 않으면 사과드립니다.

도움이 되었습니까?

해결책

예, 가능합니다. 공식 튜토리얼 당신을 도와야합니다. 그들은 서명되지 않은 바이트를 사용하는 것을 권장하고 속도를 위해 16 또는 32 비트 인덱스를 사용하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top