Domanda

Quello che voglio fare è disegnare un (grande) del terreno con OpenGL. Così ho un insieme di vertici, diciamo 256 x 256 che posso conservare in un oggetto vertex buffer nella VRAM. Ho correttamente li triangolare, quindi ho un buffer di indice per i volti.

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

Ho anche caricato una trama quadrata che deve essere applicata ad ogni triangolo. Così ho un problema con le coordinate di texture:

Ogni vertice è incluso in 4 triangoli che significa che ha bisogno di 4 coordinate texture. Ma glDrawRangeElements () richiede coordinate di texture per quanto vertici.

Quindi non vedo il modo come fare questo con i VBOs. Forse v'è una migliore concetto per risolvere il mio problema o me ne manca solo una buona idea.

Grazie in anticipo.

È stato utile?

Soluzione

Se la trama deve ripetere (o specchio) stesso in ogni quad modo migliore sarebbe usare coordinate texture che corrispondono al numero di posizione (x, y) nella matrice. Per esempio. per la prima linea dei vertici utilizzare queste coordinate della texture:. (0,0, 0,0), (1,0, 0,0), (2,0, 0,0) ... (255,0, 0.0)

Altri suggerimenti

Come probabilmente si desidera che il texture senza soluzione di piastrelle, tutto è necessario è quello di calcolare la coordinata della texture appropriata per ogni vertice e li passano, proprio come i vertici.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top