OpenGL 프로그램에서 GUI 구성 요소를 렌더링하고 싶습니다. 그것들은 여전히 단순한 텍스처링 (vbo) 직사각형입니다. 다음과 같은 일을 올바르게하고 싶습니다.GUI를위한 OpenGL 2d (직교) 렌더링, 현대적인 방법
- 화면 좌표를 사용하거나 최소한 원근감과 같은 부동 소수점을 기반으로하지 않는 좌표계를 사용하여 그리기. 예를 들어 좌표계는 -1f에서 1f (화면의 왼쪽에서 오른쪽)입니다. 화면/픽셀 좌표를 사용하는 것이 더 논리적 일 것입니다.
- 쉽게 할 수 있다면, 윈도우 (뷰포트) 크기가 조정될 때 GUI가 늘어나지 않게하고 싶습니다.
내가 알고 있듯이 이전에는 더 이상 사용되지 않는 기능 glOrtho
을 사용하여 많은 작업을 수행 할 수있었습니다. 그러나 내가 현대적인 방식으로하고 싶기 때문에 성능 향상을 위해 잘하면 좋겠지 만, 어떻게 시작해야할지 모르겠다. 인터넷에서 검색 한 후 셰이더를 사용해야한다는 결론에 도달했습니다. 셰이더에 익숙하지 않습니다. 또 다른 질문 : 쉐이더를 사용하여 성능을 향상시킬 수 있습니까?
한 수 물론 사전에 계산의'VEC2 (2) /viewport.xy처럼 정점 픽셀 범위 [-1,1]로 위치를 좌표 변환이 사용할 수 있습니다 '변환을 단순한 곱셈 - 덧셈으로 줄입니다. – derhass
@derhass : 확실히. 그러나 나는이 문제에 접근하는 방법에 대한 일반적인 생각을 설명하고자했다. 또한 OpenGL 드라이버의 빌트인 GLSL 컴파일러가 'vec2 (2)/viewport.xy' 하위 작업을 감지하여 균일하게 만들고 최적화하면 놀라지 않을 것입니다. 아마도 SPIR-V 나 UBO가 사용 된 것은 아닙니다. – datenwolf