안녕하세요, 디스플레이에 35 개의 이미지를 그립니다. 나는 7X5 격자로 그려 넣고있다. 이미지는 인터넷에서 다운로드됩니다. 이미지가 다운로드 될 때마다 전체 35 개의 이미지를 그려 봅니다. 그러나 그 중 일부는 아직 다운로드되지 않았습니다. 그래서 대신에 기본 타일을 그립니다. 문제는 이미지를 다운로드 할 때마다 이전에 그린 이미지를 다시 그리는 것입니다. 나는 그것을 줄이고 싶다. 그래서 텍스쳐 아틀라스 같은 것을하려고 생각했습니다. 나는 그것을 수동으로하려고 노력하고있다. 나는 glTexImage2D
으로 큰 이미지를 만들고 그것에 서브 이미지를 추가하여 glTexSubImage2D
으로 처리하고 있습니다.glTexImage2D 및 glTexSubImage2D를 수행하기 전에 glGenTextures 및 glBindTexture를 호출해야합니까?
glGenTextures(1, tex);
glBindTexture(GL_TEXTURE_2D, (*tex));
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, textureImageInfo->format, textureImageInfo->texWidth, textureImageInfo->texHeight, 0, textureImageInfo->format, GL_UNSIGNED_BYTE, NULL);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, textureImageInfo->imageWidth, textureImageInfo->imageHeight, textureImageInfo->format, GL_UNSIGNED_BYTE, textureImageInfo->image);
나는 35 glTexSubImage2D
큰 glTexImage2D
모든 35 개 이미지를 추가 호출합니다. 여기서 나는 더 쉬운 설명을 위해서 오직 하나만 썼다. 그리고 마지막으로 나는이 내가 생성하고 glTexSubImage2D
35 호 35 번 너무 텍스처를 결합해야하나요과 혼란 누구인지 이제
glEnable(GL_TEXTURE_2D);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, this->tileCoordList);
glTexCoordPointer(3, GL_FLOAT, 0, this->tileTextureCoordList);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D);
을? 아니면 한 번만하면됩니다. 텍스처를 바인딩하는 것이 무엇인지 이해하지 못하는 실제 문제는 그걸로 무엇이든해야합니다. 감사.
텍스처가 하나뿐이라면 glGenTextures()에서 텍스처 이름 하나를 가져와 glBindTexture()에서 한 번만 호출하면됩니다. – rhashimoto
그래서 glGenTextures() 호출이 35 번 필요합니까? 왜냐하면 나는 35 개의 텍스처 서브 이미지에'glTexSubImage2D'를 추가했기 때문입니다. – Tahlil
아니요. 하나의 질감이 있습니다. 'glTexSubImage'는 하나의 텍스쳐 부분을 채 웁니다. – rhashimoto