문제

액세스해야 합니다. OpenGL 상태 변수 (MVP 행렬과 같은) 내 Cg 셰이더 프로그램에서.다음과 같은 호출을 사용하여 수동으로 Cg 셰이더 프로그램에 이 값을 전달합니다. cgGLSetStateMatrixParameter() 내 C/C++ 코드에서.이 작업을 수행하는 더 쉬운 방법이 있나요?

도움이 되었습니까?

해결책

비교적 최근에 접속했다면 Cg 프로필 (arbvp1 이상) Cg 셰이더 프로그램은 실제로 OpenGL 상태(MVP 행렬, 재질 및 조명 설정)에 직접 액세스할 수 있습니다.이렇게 하면 해당 프로그램을 작성하는 것이 덜 고통스럽습니다.

액세스할 수 있는 상태 변수 중 일부는 다음과 같습니다.

모든 유형의 MVP 매트릭스:

state.matrix.mvp
state.matrix.inverse.mvp
state.matrix.modelview
state.matrix.inverse.modelview
state.matrix.modelview.invtrans
state.matrix.projection
state.matrix.inverse.projection

빛과 재료 특성:

state.material.ambient
state.material.diffuse
state.material.specular
state.light[0].ambient

상태 변수의 전체 목록은 섹션을 참조하세요. OpenGL 상태, OpenGL ARB Vertex 프로그램 프로필 액세스(arbvp1) 에서 Cg 사용자 매뉴얼.

메모:

  • 모든 OpenGL 상태 변수는 제복 Cg에서 액세스할 때 유형을 입력합니다.
  • 을 위한 변수, 색인 필수입니다.(예:1인치 상태.조명[1].주변)
  • Cg 내부의 해당 조명 값을 사용하기 위해 조명이나 조명을 활성화할 필요는 없습니다.그러나 다음을 사용하여 설정해야 합니다. 글라이트() 기능.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top