문제

GLSL에서 속성을 전달하거나 다른 셰이더를 생성하지 않는 조명이 활성화되어 있는지 알아낼 수있는 방법이 있습니까?

그래픽에 NVIDIA의 C를 사용하는 것은 어떻습니까? CG로 할 수 있습니까?

나는 이제 당신이 그것을 할 수 없다고 확신합니다. 하지만 지금은 묻습니다. 왜 그렇지 않습니까?

도움이 되었습니까?

해결책

"활성화 또는 사용하지 않음"에 대한 나의 이해에 따르면 GLSL 일반적인 실수 이것은 철학적 이유입니다. 셰이더는 고정 파이프 라인을 무시하기 위해 작성되므로 고정 파이프 라인 상태에 의존해서는 안됩니다. 필요한 각 기능에 대해 다른 셰이더를 사용해야합니다.

또한 나는 이것이 GPU에서 지점이 비싸고 누군가가 당신이 같은 일을하지 말아야한다고 생각했을 것이라는 사실에 근거한 디자인 선택 일 수 있다고 생각합니다.

if (gl_LightSource[0].enabled)
{ ... }

처음에.

다른 팁

Unforgiven3은 옳습니다 - GLSL은 고정 파이프 활성화 상태에 대한 액세스를 제공하지 않습니다. 당신은 그것을 유니폼으로 전달해야합니다.

GLSL이 HLSL (DirectX의 동등한)과 같은 것이라면, 나는 당신이 지나가는 속성에 갇혀 있다고 생각합니다.

:-(

밝은 색상을 (0,0,0,0)로 설정하고 그 중 하나를 분기하거나 현재 비 지정 조명 위로 반복 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top