私は、ゲームの背景をレンダリングするために異なる使用を試みました。まず、テクスチャを作成して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);
}
}
iPhoneシミュレータ上で適切にコードの作業が、私は、デバイス上でアプリケーションをテストするとき、それは私に非常に低いフレームレートを提供します:2fpsを。私がglUniform1i(uniforms.Sampler,i);
の行をglUniform1i(uniforms.Sampler,0);
に変更すると、アプリは正常に動作します!
私はOpenGL ESの新入生です。私は正しい方法で複数のテクスチャを使用しているかどうかはわかりません。誰がこの問題の原因が何であるかを親切に教えてもらえますか?どのように修正できますか?どうもありがとう!
これは間違っている可能性があることがたくさんあります。実際に問題を診断するためのコードを提供していません(シェーダソース)。私はglUniform1i(uniforms.Sampler、私はあなたのループの外側です。現在は、あなたが現在使用している方法を理解していません(基本的に、uniform.Samplerをmap.size()のシェーダのn番目の値にバインドしようとしています) I'm prettyこれがOpenGLエラーのトンを投げていることを確かめてください。glUniform1iのドキュメントを再読してください。 – Byron