Pergunta

O que eu quero fazer é desenhar um terreno (grande) com OpenGL. Então, eu tenho um conjunto de vértices, digamos 256 x 256 que eu armazenar em um objeto buffer de vértices na VRAM. I triangulada-los corretamente, então eu tenho um buffer de índice para os rostos.

// vertexes
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vertexBufferId);
glVertexPointer(3, GL_FLOAT, 0, 0);
// textures
glBindBufferARB(GL_ARRAY_BUFFER_ARB, texCoordBufferId);
glTexCoordPointer(2, GL_FLOAT, 0, 0);
// indexes
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, indexBufferId);
// draw it
glDrawRangeElements(GL11.TRIANGLES, 0, size - 1, size, GL_UNSIGNED_INT, 0);

Eu também carregado uma textura quadrado que tem de ser aplicada a cada triângulo. Então eu tenho um problema com as coordenadas de textura:

Cada vértice está incluído em 4 triângulos que significa que ele precisa de 4 coords textura. Mas glDrawRangeElements () requer tanto coords textura como vértices.

Então, eu não a ver a maneira como fazer isso com as VBOs. Talvez não há melhor conceito para resolver o meu problema ou estou apenas falta uma boa idéia.

Agradecemos antecipadamente.

Foi útil?

Solução

Se a sua textura deve repetir (ou espelho) em si em cada quad a melhor maneira seria usar textura coordenadas que correspondem ao número do (x, y) posição em sua matriz. Por exemplo. para a primeira linha de vértices usar essas coordenadas de textura: (0.0, 0.0), (1.0, 0.0), (2.0, 0.0) ... (255,0, 0,0)

.

Outras dicas

Como você provavelmente quer que sua textura a telha sem problemas, tudo que você precisa é calcular a textura adequada coordenar para cada vértice e passá-las apenas como os vértices.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top