OGL ES 1.1을 변환하려고합니다. GLKit 코드.GLKit 두 텍스처를 혼합하십시오.
- texture2d0
- texture2d1
각 텍스처는 ENV 모드가 있습니다 :
- GLKTextureEnvModeReplace,
- GLKTextureEnvModeModulate을
- GLKTextureEnvModeDecal GLKit 텍스처 슬롯 한 쌍을 제공합니다
일반적으로 texture2d1을 비워두고 texture2d0 만 설정하면됩니다. 필자는 2d1이 텍스처를 블렌딩/결합/수정하기위한 것이라는 점을 Apple의 문서를 읽음으로써 가정했습니다. GLKit은 단순히 쉐이더 위에 앉아 있기 때문에 각 쉐이더가 이미 질감을 나타내는 "들어오는"슬롯과 쉐이더를 나타내는 "수정"슬롯을 가지고 있습니다. 물자를 modiffy에 매개 변수로 사용하기 위하여려고하고있다.
하지만 작동하지 않는 것 같습니다.
self.baseEffect.texture2d0.envMode = GLKTextureEnvModeReplace;
self.baseEffect.texture2d0.target = GLKTextureTarget2D;
self.baseEffect.texture2d0.name = [earthTextureDefault name];
self.baseEffect.texture2d1.envMode = GLKTextureEnvModeModulate;
self.baseEffect.texture2d1.target = GLKTextureTarget2D;
self.baseEffect.texture2d1.enabled = TRUE;
self.baseEffect.texture2d1.name = [textureClouds name];
을 ... 그리고 내가 가진 모든 검은 비 텍스처이었다
나는 시도했다. 0으로 놓인 텍스처 (1은 아무 것도 없음)가 제대로 작동합니다. 두 번째 텍스처는 첫 번째 텍스처가 모두 불투명하지만 매우 풍부한 팔레트가있는 음영 처리 된 알파 - 화이트입니다.내가 정말로하고 싶은 것은 동적으로 생성/업데이트 된 블렌드를 효율적으로 적용하는 것입니다. 예컨대 :
- 부하 기본 텍스처
- 부하 두 번째 텍스처
- 부하 사이
- 혼합 혼합 마스크 ... 혼합 마스크 프레임 별을 업데이트합니다. 첫 번째 두 텍스처를 다시 업로드하지 않고도
NB : GLKit을 버리고 대신 사용자 정의 쉐이더를 작성하려고하지 않습니다. GLKit의 작동 방식을 이해하고 싶습니다. 여러 모양의 쉐이더를 작성하는 것보다 간단한 것들을 유지하는 것이 훨씬 쉬워야합니다.
블렌딩 모드 쉐이더를 처리하는 것을 기꺼이 받아 주시겠습니까? https://github.com/BradLarson/GPUImage GLKView의 장면에서 이것을 사용하기를 원한다면 마지막에 텍스처를 추출 할 수 있습니다. –
인상적이지만 GLKit의 기본 기능을 어떻게 사용합니까? – Adam
물론, OpenGL ES를 통해 직접 쉐이더와 텍스처 만 처리했기 때문에 이것이 어떻게 작동하는지 궁금 할 것입니다. GLKit 추상화에 많은 시간을 할애하지 않았습니다. 당신이 이것에 좌절감을 느끼고 가까운 시일 내에 뭔가가 필요할 경우를 대비해 저를 버릴 것이라고 생각했습니다. –