Я пытаюсь отобразить текстуру на квадрате, используя opengl es 1, используя ndk. Я использую эти «хаки» для загрузки png из apk: http://www.anddev.org/ndk_opengl_-_loading_resources_and_assets_from_native_code-t11978.htmlТекстура OpenGL ES дублируется в 4 столбцах и строках
Это похоже на работу. Когда я хочу применить текстуру к моему квадрату, текстура кажется дублирующей.
После некоторых исследований я думаю, что проблема исходит из моего кода рендеринга:
//the order is correct even if it is not in the numeric order
GLfloat vertexBuffer[] = {
_vertices[0].x, _vertices[0].y,
_vertices[3].x, _vertices[3].y,
_vertices[1].x, _vertices[1].y,
_vertices[2].x, _vertices[2].y,
};
GLfloat texCoords[] = {
0.0, 1.0, // left-bottom
1.0, 1.0, // right-bottom
0.0, 0.0, // left-top
1.0, 0.0 // right-top
};
glBindTexture(GL_TEXTURE_2D, _texture->getTexture());
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
glVertexPointer(2, GL_FLOAT, 0, vertexBuffer);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glBindTexture(GL_TEXTURE_2D, 0);
Хм, я не» Думаю, что это должно произойти на основе опубликованного кода. Существуют ли какие-либо другие переменные envend env, которые вы устанавливаете в отношении текстурирования? Что произойдет, если вы установите 'glTexParameter (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP), glTexParameter (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);'? – Tim
Спасибо, я попытался сыграть с glTexParameter, без каких-либо успехов, затем снова проверил код, сыграв с текстурами, если обнаружил, что проблема в том, что у моих изображений нет альфа-канала. Проблема должна быть в функции загрузки png. –
Вы уверены, что координаты текстуры в OpenGL - это карта? – mr5