Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: killgates en 29 de Diciembre de 2015, 11:07:27 PM

Título: pregunta básica.. cómo reescribir atributos de vertice?
Publicado por: killgates en 29 de Diciembre de 2015, 11:07:27 PM
Hola,

Eso! . Que no se cómo reescribir atributos de vértice una vez ya los he pasado con glVertexAttribPointer();

Tengo modelos 3d que están divididos en varios submodelos, y cada uno de ellos los tengo en arreglos diferentes.
Mi intención es pasar uno a uno los arreglos y dibujarlos, para luego mostrar en pantalla.
No se si existe otra forma de hacerlo.

Gracias,
Título: Re:pregunta básica.. cómo reescribir atributos de vertice?
Publicado por: Ray en 08 de Enero de 2016, 06:22:24 PM
no sé exactamente lo que quieres decir.

pero yo creo que teniendo cada modelo en un VBO en la memoria gráfica basta con hacer el bind del VBO correspondiente justo antes de dibujar sin tener que pasar nada a ningún lado.
Título: Re:pregunta básica.. cómo reescribir atributos de vertice?
Publicado por: killgates en 23 de Enero de 2016, 06:45:19 PM
Ya. Pero estoy utilizando shaders...
Quieres decir que active un buffer cada vez, y luego lo envíe con glvertexattribpointer()?

Entonces cada vez que reenvío atributos de vértice al shader, los sobreescribo?

O he de utilizar un shader para cada "objeto" del juego?
Título: Re:pregunta básica.. cómo reescribir atributos de vertice?
Publicado por: Ray en 30 de Enero de 2016, 01:43:51 AM
A ver, el shader y los atributos de vértice le dicen a la tarjeta cómo lo tiene que dibujar, y los vértices y las texturas le dicen qué es lo que tiene que dibujar. Todos los datos residen en objetos, que se llaman por su abreviatura, en el caso en el caso de los arrays de vertices, VBO, y no es otra cosa que bloques de memoria que normalmente residirán en la VRAM, así que no son necesarios "enviarlos" más que una vez, cuando se cargan con glBufferData.

crea y carga cada submodelo en un VBO y establece sus atributos, si no recuerdo mal opengl asignará esos atributos de vértice al buffer actual enlazado con glBindBuffer(GL_ARRAY_BUFFER.

Luego para dibujar basta con enlazar el buffer que se vaya a usar y opengl lo usará en el próximo dibujado con glDrawArrays o glDrawElements.