Pregunta

Lo que quiero hacer es dibujar un terreno (grande) con OpenGL. Así que tengo un conjunto de vértices, digamos de 256 x 256 que almaceno en un objeto de memoria intermedia vértice en la VRAM. Yo les triangulé correctamente, así que tengo una memoria intermedia de índice para las caras.

// 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);

I también cargado una textura cuadrado que tiene que ser aplicado a cada triángulo. Así que tengo un problema con las coordenadas de textura:

Cada vértice está incluido en 4 triángulos que significa que necesita 4 coords textura. Pero glDrawRangeElements () requiere tanta coordenadas de textura como vértices.

Así que no la veo la forma en cómo hacer esto con los OISCIV. Tal vez hay una mejor concepto para la solución de mi problema o sólo estoy carente de una buena idea.

Gracias de antemano.

¿Fue útil?

Solución

Si su textura debe repetir (o espejo) en sí en cada quad la mejor manera sería utilizar las coordenadas de texturas que coinciden con el número de la posición (x, y) en su matriz. P.ej. para la primera línea de vértices utilizar estas coordenadas de textura:. (0.0, 0.0), (1.0, 0.0), (2.0, 0.0) ... (255,0, 0,0)

Otros consejos

Como probablemente quiere que su textura a la perfección azulejos, todo lo que necesita es calcular la coordenada de textura apropiada para cada vértice y pasarlos al igual que los vértices.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top