선입견
좋아, 그래서 지금까지 모은 것은 이것입니다.
- 고정 파이프 라인을 사용하지 마십시오 (더 이상 사용되지 않거나 더 이상 사용되지 않을 예정 임)
- vbos는 "개체 모델"(주로 n 개의 정점 데이터)을 저장합니다.
- vaos는 그리기 호출이 각 vbo의 어떤 부분이 어떤 종류의 정점 정보인지 알 수 있도록 데이터가 배치되는 방법을 설명합니다.
- 각 그리기 호출은 또한 정점 데이터를 셰이더에 보냅니다.
3D를 보는 방법 (선택 사항)
이러한 정보를 통해 현대 OpenGL에서 3D 복잡한 객체를 그리는 것이 얼마나 좋은지 알 수 있습니다. 기본적으로 로컬 좌표를 사용하여 여러 객체 모델 (아마도 Blender 또는 기타 유사한 소프트웨어의)을 VBO에로드 한 다음 객체의 각 인스턴스에 다른 셰이더 매개 변수 (오프셋)를 제공하여 월드 공간에 그립니다.
문제 / 질문
그러나 2D 문제와 우선 순위는 완전히 다릅니다. 복잡한 객체를 그리거나 복잡한 투영 행렬이 필요하지 않으며 셰이더가 무엇보다 훨씬 간단합니다.
현대 OpenGL을 사용하여 지오메트리를 자주 변경하는 (실제로 기본적으로 모든 프레임) 가장 좋은 방법은 무엇입니까?
다음 단락에서는 관심있는 변경 종류를 더 잘 식별하는 몇 가지 문제 (원 및 사각형 문제)를 볼 수 있습니다.
내 시도 (선택 사항)
그래서 화면에 기본 2D 지오메트리를 그리는 방법을 생각하기 시작했습니다.
- 정사각형 :
[(1, 0), (1, 1), (0, 1), (0, 0)]
로컬 공간에서 정사각형의 지오메트리에 대한 VBO를 로드 한 다음 정사각형의 실제 너비와 월드 좌표 및 색상 정보를 쉐이더에 제공합니다.
시원하고 쉽게 보입니다. 원으로 이동합시다 :
- 원 : 삼각형 팬 ... eh. 정밀도 (정점 수)는 얼마입니까? 작은 원의 정밀도는 작아야하고 버그의 원의 정밀도는 높아야합니다. 1 VBO를 확실하게로드하는 것이 모든 경우에 적합한 것은 아닙니다. 원의 크기가 더 커져서 정밀도를 추가해야하는 경우 어떻게해야합니까?
덜 시원합니다. 조금 더 쉬운 직사각형으로 이동합시다.
- 사각형 : eh. "일반 사각형 지오메트리"는 없습니다. 너비 / 높이 비율 만 있으면되지만 크기가 변경되면 각 사각형이 다를 수 있습니다.
보시다시피, 거기에서 내리막 길이 시작됩니다. 특히 복잡한 다각형과 그 밖의 것들이 있습니다.
코드 정책 없음 : P
아이디어에 대한 개요가 필요합니다. 특히 C 또는 C ++ 코드와 같은 코드가 필요하지 않습니다. "이 꼭짓점 데이터로 VBO를 만든 다음 바인딩하십시오 ..."와 같이 말하십시오.