문제

정의되지 않은 수의 디스플레이 컨텍스트가 있으며 각각은 텍스처를 표시합니다. glgentextures를 호출 할 때 모든 디스플레이 컨텍스트에서 동일한 이름을 반환합니다. 이것이 효과가 있습니까? 비록 그들이 같은 이름을 가지고 있지만 여전히 다른 텍스처를 저장하고 표시 할 것인가? 이 문제를 해결하기 위해 무엇을해야합니까?

도움이 되었습니까?

해결책

glgentexture에서 동일한 이름을 얻고 같은 질감을 표시하는 것은 같은 것이 아닙니다.

텍스처 이름은 컨텍스트의 재량에 따라 정수 일 뿐이며, 일반적으로 1로 시작하여 모든 glgentexture에서 증가하지만 반드시 그렇지는 않습니다. 구현은 그렇게 작동하지 않습니다 (대부분은 그렇지만). 그러나 이론적으로는 어떤 종류의 객체에 대해 증가하는 정수 (예 : 텍스처뿐만 아니라 버퍼와 셰이더) 또는 심지어 운전자의 주소 공간 또는 다른 esotheric 인 것들. 이름이 구체적이어야한다는 요구 사항은 없습니다.

Legacy OpenGL에서는 glgentexture를 사용하는 대신 자신의 이름을 구성 할 수도 있지만 더 이상 합법적이지 않습니다. 나는 그것이 허용되었을 때 그들이 어떻게 생각했는지 잘 모르겠지만 어쨌든 ... :)

다른 맥락에서 동일한 숫자 (이름)는 일반적으로 다른 질감이거나 질감이 전혀 없을 것입니다. 따라서 동일한 텍스처 이름으로 다른 컨텍스트에서 동일한 텍스처를 보면 컨텍스트를 공유하거나 드라이버가 버그가 있습니다.

wglcreatecontextattribsarb를 사용하는 경우 두 번째 매개 변수는 이미 기존 컨텍스트 (또는 NULL)의 핸들입니다. 여기에 컨텍스트 핸들을 제공하면 컨텍스트를 공유 할 수 있습니다. 없이 명시 적으로 Glsharelists를 부릅니다. 어쩌면 그것은 우연히 일어난 일일 것입니다.

다른 팁

텍스처는 (기본적으로) 상황에 따라 공유되지 않습니다.이를 명시 적으로 활성화해야하지만 그렇게하는 방법은 플랫폼별로 다릅니다.

Win32에서 wglShareLists, 그리고 대부분의 다른 플랫폼에서는 컨텍스트를 만들 때 지정됩니다 (예 : share 매개 변수 aglCreateContext OS-X).

내 지식으로는 텍스처 공유를 활성화하지 못했습니다. 그러나 모든 디스플레이 컨텍스트에 동일한 텍스처가 표시되고 있습니다.

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