2011-09-05 9 views
1

오브젝트별로 설정되는 약간의 유니폼을 사용하는 프래그먼트 셰이더가 있습니다. 이러한 유니폼을 그래픽 카드에 저장하는 방법이 있습니까? 나는 버텍스 버퍼 객체에 대한 튜토리얼을 찾을 수 없다는 말을 들었다. 거기에 정보를 저장하는 속임수가있어서, 새로운 객체를 그릴 때마다 변수를 다시 설정할 필요가 없다.프래그먼트 셰이더에 대한 오브젝트 별 데이터 저장

각 개체는 거의 정점이 없지만 완전히 정적입니다.

답변

2

는 OpenGL을 이후 버전에서 실제로 통일 버퍼 개체가 있습니다 http://www.opengl.org/wiki/Uniform_Buffer_Object 모든 객체에 대해 동일한 쉐이더 프로그램 ID를 사용하는 경우 개체를 렌더링하기 전에, 당신은 한 번만 유니폼을 설정할 수 있습니다

1

그 값 것이다 다시 설정하기 전까지는 그대로있어주세요. 그래서 예. 셰이더 소스를로드하고 컴파일하는 코드에서 모든 객체에 공통적 인 균일 변수를 설정 한 다음 객체를 렌더링하고 객체 별 유니폼 만 설정합니다.

서로 다른 객체에 대해 서로 다른 쉐이더를 가지고 있지만 그 사이에 일부 데이터를 공유하려는 경우 답변 중 하나에있는 균일 한 버퍼 아이디어를 사용할 수 있습니다. 단일 쉐이더를 언급 할 때 필요하지는 않습니다.

+1

효과 란 무엇이며 ContentManager는 무엇입니까? ;) –

+0

오, 젠장 내가 XNA 질문이 잠시 동안 거기에 있다고 생각 : 그럼에도 불구하고, 셰이더 유니폼은 동일하게 작동, 지금 대답을 편집 :) – edvaldig