OpenGL ES 2를 배우기 위해 iOS의 OpenGL ES 2 프로젝트에서 작업 중입니다. 온라인 쉐이더를 링크 및 컴파일하기위한 Objective-C 구현을 발견했으며,이 구현을 자체적으로 템플릿으로 사용했습니다 . 불행히도 glUniform1i 대신 glUniform1f로 텍스처 데이터를 업로드하는 라인을 잘못 입력했습니다. ...이처럼 보였다glUniform1f와 glUniform1i 혼란
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, self.texture);
glUniform1f(_texUniform, 1); // this line should be glUniform1i
내 프로젝트는 자신의 텍스처 여러 개체가 있습니다. 이 오타 때문에 모든 개체에 마지막으로 그려진 개체의 텍스처 만 표시됩니다. 나는 무언가가 내 텍스처 ID 나 그와 비슷한 것으로 의심되어서 그리기 호출마다 텍스쳐 ID 등을 로그 아웃했다. 그런 식으로 잘못된 것을 찾지 못했다.
이것은 정말 어려운 버그였습니다.이 버그로 어떤 일이 벌어지고 있는지 이해하고 싶습니다. 내 질문은이 동작을 일으킬 glUniform1f 대 glUniform1i 무엇입니까? 셰이더가 연결 및 컴파일에 실패하지 않았거나 텍스처가 전혀 그려지지 않았다는 사실에 조금 놀랐습니다.
감사합니다. 지금은 이해가됩니다. – dloranz