0
我正在使用OpenGL ES和GLKitBaseEffect。我开始渲染具有单个纹理的单个3d网格。每个人都很好,很漂亮。现在我添加了第二个基本效果(对于第二个纹理),所以我可以渲染第二个3D网格。如何渲染2个不同纹理的对象?
我似乎无法得到这个工作。
我觉得我的问题是,我对VBO顶点和索引缓冲区发送到GPU的方式有误解。
我基本上调用下面的两倍(每个纹理文件之一):
// apply buffers...
glGenBuffers(1, &_vertexBufferFrameBorder);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBufferFrameBorder);
glBufferData(GL_ARRAY_BUFFER, sizeof(meshData), meshData, GL_STATIC_DRAW);
glGenBuffers(1, &_indexBufferFrameBorder);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBufferFrameBorder);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(meshIndices), meshIndices, GL_STATIC_DRAW);
// position
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(VertexData), BUFFER_OFFSET(0));
// normal
glEnableVertexAttribArray(GLKVertexAttribNormal);
glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, sizeof(VertexData), BUFFER_OFFSET(12));
// texture
glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(VertexData), (char *)24);
// set frame texture
UIImage *frameImage = [UIImage imageNamed:@"polaroid.png"];
self.frameBorderEffect.texture2d0.name = [ImageLoader LoadGLKTextureInfo_ByImage:frameImage];
好的。我刚刚看到类似我的所有类型的问题:http://stackoverflow.com/questions/13678485/how-can-i-apply-different-textures-to-different-objects-using-glkit?rq=1 – AlvinfromDiaspar 2013-05-04 08:28:31