다른 용도로 사용하여 게임의 바닥을 렌더링하려했습니다. 먼저 텍스처를 만들고 GPU에 업로드합니다.렌더링 할 때 여러 텍스처를 사용하면 낮은 프레임 속도가 발생합니다
void initialize(float width,float height)
{
for(int i = 0;i < 10;i++)
{
glActiveTexture(GL_TEXTURE1 + i);
GLuint gridTexture;
glGenTextures(1, &gridTexture);
glBindTexture(GL_TEXTURE_2D, gridTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
setPngTexture(gameMap->texture);
glGenerateMipmap(GL_TEXTURE_2D);
}
}
그런 다음 모든 프레임에서 렌더링 할 때 텍스처를 사용합니다.
void render() const
{
for(int i = 0; i < map -> maps.size();i++)
{
glUniform1i(uniforms.Sampler,i);
glBindBuffer(GL_ARRAY_BUFFER, gameMap -> verticesbuffer);
glVertexAttribPointer(position, 3, GL_FLOAT, GL_FALSE, stride, 0);
glVertexAttribPointer(normal, 3, GL_FLOAT, GL_FALSE, stride, offset);
glVertexAttribPointer(texture, 2, GL_FLOAT, GL_FALSE, stride, texCoordOffset);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, gameMap -> indicesbuffer);
glDrawElements(GL_TRIANGLES, gameMap -> indexCount, GL_UNSIGNED_SHORT, 0);
}
}
아이폰 시뮬레이터에 제대로 코드가 작동하지만이 장치에서 응용 프로그램을 테스트 할 때, 그것은 나에게 매우 낮은 프레임 속도를 제공합니다 2fps합니다. glUniform1i(uniforms.Sampler,i);
을 glUniform1i(uniforms.Sampler,0);
으로 변경하면 앱이 정상적으로 작동합니다.
저는 OpenGL ES의 신입생이고 정확한 질감으로 여러 질감을 사용하고 있는지 잘 모르겠습니다. 친절하게이 문제의 원인이 무엇인지 말해 줄 수 있으며 어떻게 해결할 수 있습니까? 고마워요!
많은 문제가있을 수 있습니다. 실제로 문제를 진단 할 수있는 충분한 코드를 제공하지 않습니다 (쉐이더 소스). glUniform1i (uniforms.Sampler, 당신의 루프 밖에서. (현재 기본적으로 uniforms.Sampler를 map.size()에 대한 쉐이더 내부의 n 번째 값에 바인딩하려고 시도하고있다. 나는 귀엽다. 이것은 OpenGL 오류가 많이 발생하고 있습니다 .glUniform1i에 대한 문서를 다시 읽으십시오. – Byron