2016-08-04 4 views
0

오래된 고정 파이프 라인 OpenGL 프로그래밍은 매트릭스 스택 원리를 많이 사용했습니다.현대 OpenGL : 사용자 정의 매트릭스 스택을 사용해야합니까?

유연한 셰이더를 사용하면 원하는만큼 자신의 행렬을 자유롭게 만들고 사용할 수 있습니다. 나는 어떤 종류의 행렬 스택도 더 이상 사용하지 않는 튜토리얼을 읽었고 대신 필요한 행렬을 저장하고 필요한만큼 적용했다.

기타는 this one과 같이 모든 행렬에 대해 행렬 스택 라이브러리를 사용합니다 (링크 된 장의 예제 코드 참조).

내 질문은 : 이것은 순전히 임의적 인 설정입니까, 아니면 현대 그래픽 프로그래밍에서 선호되는 방식입니까?

+0

스택을 사용하지 않는 것이 좋습니다. 핵심 프로필에는 스택이 없으므로 새 프로젝트에 핵심 프로필을 사용하는 것이 좋습니다. 객체와 함께 모델 행렬을 저장하고 뷰 및 투영 행렬과 함께 균일 한 셰이더로 전달하십시오. 계층 적 호출이 수행하기 쉽도록 스택이있었습니다. – Mars

+0

@Mars 코어 프로파일을 사용하고 있으므로 OpenGL 스택을 사용하지 않을 것입니다. 하지만 일부 자습서에서는 자체 스택이나 std :: stack 또는 그와 유사한 것을 사용합니다. 다른 자습서에서는 스택을 사용하지 않는 것처럼 보이지만 행렬을 적절한 클래스/개체에 저장합니다. 계층 구조가 필요할 때 (예 : 조인트 등) 자신의 스택 구현 또는 라이브러리를 사용하여 "일반"도면을 위해 스택을 사용하지 않는 것이 좋습니다. – jhyot

+1

TL; DR : 예. 하지만 대부분의 접근 방식에 따라 더 자연스럽고 편안합니다. 하나는 오래된 파이프 라인에 큰 영향을받을 수 있고, 행렬이 쌓이지 않도록 처리 할 수 ​​없기 때문에 자체적으로 구현해야합니다. 다른 사람은 스택에서 가치있는 것을 볼 수 없었습니다. 나는 거의 후자이다. 몇 가지 2.x OpenGL과 함께 작업 한 다음 3.x로 전환했습니다. 처음에는 자신의 스택을 구현했지만, 나중에 프로그램 가능한 셰이더를 사용하여 일반 용도로는 좋지 않다는 것을 알았습니다. 나는 가까운 OpenGL 개발자가 아니며 나의 짧은 인생을 통해 약간의 코드로 작업했다. – Mars

답변

1

매트릭스 데이터를 생성하는 방법은 다소 부적절합니다. 매우 고성능 시나리오에서는 한 솔루션이 다른 솔루션보다 선호 될 수 있지만 궁극적으로 엔진 별 특성입니다.

C++ 스택을 사용하여 개체의 계층 구조를 만들려면 그렇게하십시오. 원하는대로 푸시/팝하는 매트릭스의 명시적인 스택을 원한다면, 그것을 가지고 있습니다. 완전히 다른 일을하고 싶다면 그것은 당신에게 달린 것입니다.

정답은 없습니다. 오직 당신과 당신의 코드에 가장 적합한 것이 있습니다.

+0

답변 해 주셔서 감사합니다! 권장 관행에 대해 알고 있습니까? 저는 OpenGL을 처음 사용하기 때문에 "나에게 가장 잘 맞는 것은 무엇인지"를 모르는 경우가 있습니다. 어쨌든 완전히 새로운 코드를 작성하고 있기 때문에 어떤 방법을 선택해도 자유 롭습니다. 그러나 일반적으로 대부분의 시나리오에서 가장 좋은 방법으로 간주된다면 모든 방법을 시도하는 대신 그 중 하나를 사용하고 5 년 동안 더 현명하게 사용하고 싶습니다. :) – jhyot

관련 문제