2013-05-04 4 views
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]; 
+0

Ok. я просто видел все одинаковые вопросы, подобные моим: http://stackoverflow.com/questions/13678485/how-can-i-apply-different-textures-to-different-objects-using-glkit?rq=1 – AlvinfromDiaspar

ответ