私はOpenGLESを初めて使用し、学習曲線の一部としていくつかの基本的なことをしようとしています。2つのglDrawArrays呼び出しを使用して、球と立方体の2つのメッシュをレンダリングできました。立方体と球をラップするために別のテクスチャをロードしようとしていますが、最後にロードされたテクスチャが両方のメッシュにラップされています。なぜこれが起こっているのか誰かが知っていますか?
メッシュのコードは次のとおりです。
glEnable(GL_DEPTH_TEST);
glGenVertexArraysOES(1, &vertexArray);
glBindVertexArrayOES(vertexArray);
glGenBuffers(1, &vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeMeshVerts, meshVerts, GL_STATIC_DRAW);
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 4*8, BUFFER_OFFSET(0));
glEnableVertexAttribArray(GLKVertexAttribNormal);
glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, 4*8, BUFFER_OFFSET(4*3));
glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, 4*8, BUFFER_OFFSET(4*6));
// Texture
// Create image from file
NSString *path = [[NSBundle mainBundle] pathForResource:textureImage ofType:@"jpg"];
NSData *texData = [[NSData alloc] initWithContentsOfFile:path];
UIImage *image = [[UIImage alloc] initWithData:texData];
//新しいOpenGLESテクスチャバッファを生成し、//指定されたコアグラフィックス画像cgImageからのピクセルデータを使用して//バッファの内容を初期化します。
[TextureLoader textureWithCGImage:image.CGImage options:nil error:NULL];
glBindVertexArrayOES(0);
描画コードは次のとおりです。
glBindVertexArrayOES(_vertexArray);
// Render the object with ES2
glUseProgram(_program);
// Set the sampler texture unit to 0
glUniform1i (uniforms[UNIFORM_TEXTURE_MATRIX], 0);
glDrawArrays(GL_TRIANGLES, 0, numVertices);