2014-04-16 2 views
1

현재 두 개의 프로그램이 있습니다. 실선과 버텍스 쉐이더 - 솔리드 및 쉐이더 - 솔리드 - 솔리드로 채우는 프로그램과 텍스처 용 버텍스 쉐이더 및 텍스처 용 프래그먼트 쉐이더가 있습니다. 나는 드로잉 할 것인지에 따라 glUseProgram을 사용하여 두 프로그램을 교환했다. 이것은 좋은 해결책입니까? 또는 단일 프로그램에서 glAttachShader/glDetachShader를 사용해야합니까?OpenGL ES 2.0 - 다중 프로그램 또는 셰이더

답변

2

확실히 올바른 솔루션을 사용하고 있습니다. 다른 프로그램을 바인드하는 것은 오버 헤드가 낮아야합니다. 당신은 분명히 어떤 상태 변화처럼 필요 이상으로 그것을하고 싶지 않습니다. 예를 들어, 하나의 프로그램을 사용하는 모든 것을 먼저 렌더링 한 다음 다른 프로그램을 바인드하고이를 사용하는 모든 프리미티브를 렌더링하면 다른 셰이더를 더 자주 바인딩하는 것보다 바람직합니다.

다른 셰이더를 프로그램에 첨부한다는 것은 다시 연결해야한다는 것을 의미합니다. 다른 프로그램을 바인딩하는 것보다 훨씬 비쌉니다.