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